如果不同版本的ArcMap连接到同一个Oracle数据库上,分别执行"创建镶嵌数据集",它们的行为是一样的吗?

答案是:不一样,会有细微的差别

在本例中,ArcMap的版本分别是10.2.2与10.3,数据库服务器的版本是11.2.0.3,SDE Repository 的版本是10.1 。

  1. 使用10.3版本的ArcMap创建镶嵌数据集 MD1003

    在创建镶嵌数据集之前,创建user_objects的备份表user_objects_b;

    创建镶嵌数据集,完成后,数据库新增了如下的表、序列、触发器。

    新增了1个触发器,10个表,7个序列。

    这里有两个知识点,我稍微介绍一下。

    其一,RASTER_LAYER_10以及SDE_RAS_10名称中的10代表什么?

    这个值实际代表的是AMD_MD1003_CAT在sde. RASTER_COLUMNS表中rastercolumn_id字段的值,如下图:

    其二,R120-R124这几个序列的数字代表什么?

    这个值实际上代表的是上图以AMD开头的5张表在sde.table_registry表中registration_id字段的值,如下图:

    R120-R124这几个序列是为了给所对应表的OBJECTID字段赋值而存在的。

    那这几个序列是如何定义的呢?我们来看看:

    注意这里序列的最大值为1028

  2. 使用10.2.2版本的ArcMap创建镶嵌数据集 MD1002

    删除user_objects_b,并重新创建user_objects的备份表user_objects_b;

    创建镶嵌数据集,完成后,数据库新增了如下的表、序列、触发器。

    新增了1个触发器,9个表,6个序列。与10.3版本创建镶嵌数据集相比,少了一个以AMD_%_DEF表以及该表所对应的序列。

    同时,由上图可知,AMD_MD1002_CAT的rastercolumn_id值为11,如下图:

    R开头的序列与AMD开头表的对应关系如下图:

    序列的定义如下:

    注意这里序列的最大值为2147483647,远小于10.3版本创建的序列最大值。

    结论:

    1. 对于"创建镶嵌数据集"这一操作,尽管数据库版本和SDE repository 版本一致,但ArcMap版本的差异仍然会导致不同的递归操作。由此可以引申推测:对于其它操作,不排除因版本不同而导致最终行为不同的情况发生,所以测试与最终生产环节的使用,最好使用同样版本的ArcMap版本。
    2. 使用10.2.2版本创建的镶嵌数据集,其序列最大值为10亿级别,而每次递增值为16,因此可用的值仅为亿级,对于庞大的镶嵌数据集(包含多个数据集,或发生多次删除重入场景)极有可能导致序列被用满而造成添加数据集失败。(另外,由于序列的CACHE值为20,如果经常关闭实例,或经常执行"alter system flush shared_pool"会造成序列产生很多的"洞",而这些"洞"会加速突破序列的最大值限制)

不同版本的ArcMap在Oracle中创建镶嵌数据集的不同行为的更多相关文章

  1. 用ArcMap在PostgreSQL中创建要素类需要执行”create enterprise geodatabase”吗

    问:用Acmap在PostgreSQL中创建要素类需要执行"create enterprise geodatabase"吗? 关于这个问题,是在为新员工做postgresql培训后 ...

  2. 在ArcMap 10.3中创建和编辑数据

    在ArcMap 10.3中创建和编辑数据 .......待补充 新建 创建一个新文件((Points, Polylines, and Polygons/点.线.多边形)

  3. 在oracle中创建空间索引

    Oracle spatial可以方便的存储空间数据,大量的空间数据必需要使用空间索引去查询.在oracle中创建空间索引必需先建立元数据,否则无法创建索引.创建元数据的代码: insert into ...

  4. oracle中创建数据库

    一.在Oracle中创建数据库之前先改一下虚拟机的IP地址,以便访问 2. 3. 3.1 3.2 3.3 3.4 创建完成:输入sqlplus sys/123456 as sysdba测试

  5. Oracle中创建自增字段方法

    oracle没有ORACLE自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 下面给大家讲个例子: 1.在Oracle中创建一个表: .创建一个表 ) prim ...

  6. oracle中创建sequence指定起始值

    oracle中创建sequence指定起始值 DECLARE V_Area_Id NUMBER; BEGIN SELECT MAX(T.Area_Id)+10 INTO V_Area_Id FROM ...

  7. Oracle中创建触发器示例及注意事项

    1.oracle 中创建触发器示例 CREATE TABLE "CONCEPT"."FREQUENCYMODIFYLOG" ( "FREQUENCYI ...

  8. 在oracle中创建自动增长字段

    参考http://www.cnblogs.com/jerrmy/archive/2013/03/13/2958352.html http://www.jb51.net/article/43382.ht ...

  9. Oracle中创建千万级大表归纳

    从一月至今,我总共归纳了三种创建千万级大表的方案,它们是: 下面是这三种方案的对比表格: # 名称 地址 主要机制 速度 1 在Oracle中十分钟内创建一张千万级别的表 https://www.cn ...

随机推荐

  1. spring是什么?

    spring是什么? 1.编程范式的实践 dsl.注解.aop技术,扩展java语言的表达能力: dsl:xml配置+注解配置,扩展工程的组织能力: 2.基础组件: 常用组件的便捷封装,方便进行二次开 ...

  2. python - django 解决 templates 模板语言语法冲突

    # 在使用某个框架时发现语法与Django的模板语法冲突了,于是找到解决方案: {% verbatim %} // 被 verbatim 包裹起来的地方是不会被 django 渲染的 {% endve ...

  3. python - django 设置自定义文件保存路径

    一. settings.py MEDIA_URL = "/qir/" # 设置获取文件时的访问根路径 MEDIA_ROOT = os.path.join(BASE_DIR, &qu ...

  4. OpenCV 学习笔记(0)两幅图像标定配准

    参考教程 依赖opencv扩展库,使用sifi匹配 保存配准信息 "./config/calibratedPara.yaml" #include <iostream> ...

  5. nginx部署项目

    nginx介绍 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行.其特点是占有内存少,并发能力强,事实上nginx的并发 ...

  6. 使用flow来规范javascript的变量类型

    众所周知, js是弱类型的语言,由此有了很多的优点,也出现了大量由此导致的错误,难以定位.当然有类似于ts之类的语法糖来解决此问题,ts因为是从c#演变而来的,所以入门有一定的门槛,所以我们来一下fl ...

  7. pmm docker-compose 运行试用

    pmm 是一个很不错的mysql.mongo.postgresql 数据库监控平台,基于prometheus.grafana.exporter 算是一个比较完整 的数据库分析平台 参考架构图 环境准备 ...

  8. Linux后台开发工具箱-葵花宝典

    Linux后台开发工具箱-葵花宝典 一见 2016/11/4 目录 目录 1 1. 前言 4 2. 脚本类工具 4 2.1. 双引号和单引号 4 2.2. 取脚本完整文件路径 5 2.3. 环境变量和 ...

  9. .NET总结--泛型与泛型集合,应用场景

    泛型优点 1.提高代码复用性,代码简洁直观 2.直接存储数据类型免去数据类型之间得隐式转换 3.免去拆箱装箱过程,提高效率 4.数据类型安全,存储时会验证是否对应该类型 泛型集合 一. ArrayLi ...

  10. Shared Virtual Memory (SVM) Functions

    Description Shared Virtual Memory (SVM) (Glossary): An address space exposed to both the host and th ...