不同版本的ArcMap在Oracle中创建镶嵌数据集的不同行为
如果不同版本的ArcMap连接到同一个Oracle数据库上,分别执行"创建镶嵌数据集",它们的行为是一样的吗?
答案是:不一样,会有细微的差别
在本例中,ArcMap的版本分别是10.2.2与10.3,数据库服务器的版本是11.2.0.3,SDE Repository 的版本是10.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。
- 使用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版本创建的序列最大值。
结论:
- 对于"创建镶嵌数据集"这一操作,尽管数据库版本和SDE repository 版本一致,但ArcMap版本的差异仍然会导致不同的递归操作。由此可以引申推测:对于其它操作,不排除因版本不同而导致最终行为不同的情况发生,所以测试与最终生产环节的使用,最好使用同样版本的ArcMap版本。
- 使用10.2.2版本创建的镶嵌数据集,其序列最大值为10亿级别,而每次递增值为16,因此可用的值仅为亿级,对于庞大的镶嵌数据集(包含多个数据集,或发生多次删除重入场景)极有可能导致序列被用满而造成添加数据集失败。(另外,由于序列的CACHE值为20,如果经常关闭实例,或经常执行"alter system flush shared_pool"会造成序列产生很多的"洞",而这些"洞"会加速突破序列的最大值限制)
不同版本的ArcMap在Oracle中创建镶嵌数据集的不同行为的更多相关文章
- 用ArcMap在PostgreSQL中创建要素类需要执行”create enterprise geodatabase”吗
问:用Acmap在PostgreSQL中创建要素类需要执行"create enterprise geodatabase"吗? 关于这个问题,是在为新员工做postgresql培训后 ...
- 在ArcMap 10.3中创建和编辑数据
在ArcMap 10.3中创建和编辑数据 .......待补充 新建 创建一个新文件((Points, Polylines, and Polygons/点.线.多边形)
- 在oracle中创建空间索引
Oracle spatial可以方便的存储空间数据,大量的空间数据必需要使用空间索引去查询.在oracle中创建空间索引必需先建立元数据,否则无法创建索引.创建元数据的代码: insert into ...
- oracle中创建数据库
一.在Oracle中创建数据库之前先改一下虚拟机的IP地址,以便访问 2. 3. 3.1 3.2 3.3 3.4 创建完成:输入sqlplus sys/123456 as sysdba测试
- Oracle中创建自增字段方法
oracle没有ORACLE自增字段这样的功能,但是通过触发器(trigger)和序列(sequence)可以实现. 下面给大家讲个例子: 1.在Oracle中创建一个表: .创建一个表 ) prim ...
- oracle中创建sequence指定起始值
oracle中创建sequence指定起始值 DECLARE V_Area_Id NUMBER; BEGIN SELECT MAX(T.Area_Id)+10 INTO V_Area_Id FROM ...
- Oracle中创建触发器示例及注意事项
1.oracle 中创建触发器示例 CREATE TABLE "CONCEPT"."FREQUENCYMODIFYLOG" ( "FREQUENCYI ...
- 在oracle中创建自动增长字段
参考http://www.cnblogs.com/jerrmy/archive/2013/03/13/2958352.html http://www.jb51.net/article/43382.ht ...
- Oracle中创建千万级大表归纳
从一月至今,我总共归纳了三种创建千万级大表的方案,它们是: 下面是这三种方案的对比表格: # 名称 地址 主要机制 速度 1 在Oracle中十分钟内创建一张千万级别的表 https://www.cn ...
随机推荐
- HTTP协议通信过程
1. 了解HTTP HTTP(HyperText Transfer Protocol)是一套计算机通过网络进行通信的规则.计算机专家设计出HTTP,使HTTP客户(如Web浏览器)能够从HTTP服务器 ...
- Spring启动,constructor,@PostConstruct,afterPropertiesSet,onApplicationEvent执行顺序
package com.xx; import javax.annotation.PostConstruct; import javax.annotation.Resource; import org. ...
- swift语法之常量 变量 类型
常量和变量: 在swift中声明变量或者声明常量的时候可以不用写变量或者常量类型 因为系统会自动推导出对应的类型. 变量:可以更改值 swift中每句代码后面不需要加 ; 号 var num = 5 ...
- 8-网页,网站,微信公众号基础入门(使用Python程序实现微信token验证)
https://www.cnblogs.com/yangfengwu/p/11062034.html 设置一下IP白名单: 填写自己的服务器的IP地址 是不是不可以哈,有多少人都会入这个坑.... ...
- Unicode-objects must be encoded before hashing 错误解决办法
提交注册用户数据后出来这个,错误原因是update()必须指定要加密的字符串的字符编码 #encryptions1 = sha1()s1.update(upwd.encode("utf8&q ...
- 【UVA1057】Routing
[UVA1057]Routing 题面 洛谷 题解 有一个比较好想的dp就是\(f_{i,j}\)表示第一个点在\(i\),第二个点在\(j\)的最小点数,但是直接搞不好转移. 考虑建出反图,那么\( ...
- svn无法还原 、svn无法更新
报错: Previous operation has not finished; run 'cleanup' if it was interrupted 上一个操作尚未完成:如果中断,请运行“清理”
- T-MAX——团队展示
第一次团队博客:百战黄沙穿金甲 基础介绍 这个作业属于哪个课程 2019秋福大软件工程实践Z班 这个作业要求在哪里 团队作业第一次-团队展示 团队名称 T-MAX 这个作业的目标 展现团队成员的风采, ...
- asp.net core 使用 Serilog
安装NuGet包 PM> Install-Package SerilogPM> Install-Package Serilog.AspNetCorePM> Install-Packa ...
- RSA前台加密后台解密的应用
写在前面 项目安全测试需要将登录功能修改, AES加密不符合要求, 现改为RSA非对称加密.(将登录密码加密后传给后台, 后台解密后再进行一系列的校验) .期间遇到了前台js加密但是后台解密失败的问题 ...