怎么在ArcSDE中使用Oracle分区表2-索引分区
2012-09-24 09:13
507 查看
怎么在ArcSDE中使用Oracle分区表:/article/1358772.html
通过上面的文章我们可以得出,如果希望Oracle分区后,索引也进行相应的分区,需要在DBTUNE添加相应的关键字ST_INDEX_PARTITION_LOCAL
关于空间索引分区Esri提供了如下的帮助
最近有用户问怎么使用SQL语句之间创建ArcSDE的索引而且这些索引页进行分区,大家可以参考以下命令如果用户已经定义好相关的DBTUNE文件,而且也添加了关于ST_INDEX_PARTITION_LOCAL,创建索引可以自动按照关键字分配的存储。
如果需要手动创建,创建索引可以使用如下命令
那么查看相应的表对比ArcCatalog创建的索引信息基本一致!有个小问题,我发现ArcCatalog的索引信息并没有同步过来,也就是在桌面索引框看到的还没有创建索引,不知道是否是个bug!
如果用户的索引想存储在其他磁盘的表空间,也可以使用如下命令:
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------
通过上面的文章我们可以得出,如果希望Oracle分区后,索引也进行相应的分区,需要在DBTUNE添加相应的关键字ST_INDEX_PARTITION_LOCAL
B_STORAGE "PCTFREE 0 INITRANS 4 PARTITION BY RANGE (OBJECTID) ( PARTITION CUS_PART1 VALUES LESS THAN (2000) TABLESPACE SDE, PARTITION CUS_PART2 VALUES LESS THAN (6000) TABLESPACE ESRI ) " ST_INDEX_PARTITION_LOCAL "TRUE"这样从新导入到ArcSDE里面,然后导入数据数据的索引就存储在和数据相应的表空间里面了依照上面的信息,将数据导入进ArcSDE,可以看到Sde用户新增了一个关于分区索引的管理表
SQL> desc st_partition_index 名称 是否为空? 类型 ----------------------------------------- -------- ---------------------------- OWNER NVARCHAR2(32) TABLE_NAME NVARCHAR2(32) COLUMN_NAME NVARCHAR2(32) GEOM_ID NUMBER(38) PARTITION_NAME NVARCHAR2(32) GRID SP_GRID_INFO VERSION NUMBER(38) STATUS NVARCHAR2(10) UNIQUENESS VARCHAR2(9) DISTINCT_KEYS NUMBER BLEVEL NUMBER LEAF_BLOCKS NUMBER CLUSTERING_FACTOR NUMBER DENSITY NUMBER NUM_ROWS NUMBER NUM_NULLS NUMBER SAMPLE_SIZE NUMBER LAST_ANALYZED DATE USER_STATS VARCHAR2(3) MINX NUMBER MINY NUMBER MAXX NUMBER MAXY NUMBER我们查看这个表里面的信息
SQL> select table_name,Partition_name,Geom_id,column_name from st_partition_index; TABLE_NAME PARTITION_NAME GEOM_ID COLUMN_NAME --------------------------------------------- ------------------------------------------ ZD CUS_PART1 11 SHAPE ZD CUS_PART2 11 SHAPE查询一下相关的信息是否在对应的表空间里面
SQL> select objectid,rowid from zd where objectid=1999 or objectid=2000; OBJECTID ROWID ---------- ------------------ 1999 AAASttAAGAAABX2AAI 2000 AAAStuAAFAAAACOAAA SQL> select sp_id from s11cus_part1 where rownum<2; SP_ID ------------------ AAASttAAGAAABXcAAO SQL> select sp_id from s11cus_part2 where rownum<2; SP_ID ------------------ AAAStuAAFAAAADnAAH我们可以看到AAAStt和AAAStu是在不同的表空间里面。
关于空间索引分区Esri提供了如下的帮助
An ST_Geometry st_spatial_index domain index can be built to have discrete index partitions that correspond to each partition for range-partitioned tables. This type of index is called a local domain index, as opposed to a global domain index, which has no index partitions. A local domain index is equally partitioned with the underlying table. For each partition: all keys in a local domain index refer to rows stored in its corresponding table partition. St_spatial_index local domain indexes can be created only for range-partitioned, heap-organized tables. Local domain indexes cannot be built for hash-partitioned tables or Indexed Organized Tables.通过第三段我们可以看出,Esri的空间索引的本地域索引只支持范围分区和堆组织表,不支持哈希分区或者索引组织表。
最近有用户问怎么使用SQL语句之间创建ArcSDE的索引而且这些索引页进行分区,大家可以参考以下命令如果用户已经定义好相关的DBTUNE文件,而且也添加了关于ST_INDEX_PARTITION_LOCAL,创建索引可以自动按照关键字分配的存储。
如果需要手动创建,创建索引可以使用如下命令
SQL> CREATE INDEX st_shape_index 2 ON parcels (shape) 3 INDEXTYPE IS sde.st_spatial_index 4 PARAMETERS('st_srid=1 st_grids=280') 5 LOCAL; Index created.在创建过程中,如果你的ST-SRID设置的不对,会提示如下错误
SQL> CREATE INDEX st_zd_shape_index ON ZD (shape) INDEXTYPE IS sde.st_spatial_index PARAMETERS('st_srid=5 st_grids=280') LOCAL; CREATE INDEX st_zd_shape_index ON ZD (shape) INDEXTYPE IS sde.st_spatial_index PARAMETERS('st_srid=5 st_grids=280') LOCA L * 第 1 行出现错误: ORA-29855: 执行 ODCIINDEXCREATE 例行程序时出错 ORA-20083: Parameter ST_SRID 5 does not exist in ST_SPATIAL_REFERENCES table. ORA-06512: 在 "SDE.SPX_UTIL", line 938 ORA-06512: 在 "SDE.ST_DOMAIN_METHODS", line 1312如果需要删除索引会报如下错误
SQL> drop index ST_SHAPE_INDEX; drop index ST_SHAPE_INDEX * 第 1 行出现错误: ORA-29952: 无法对标记为 LOADING 的域索引分区发出 DDL 命令使用如下方法即可删除
SQL> drop index ST_SHAPE_INDEX force; 索引已删除。其实不需要查看ST_SPATIAL_REFERENCES表,我们只需要查看st_geometry_columns表的要素类对应的SRID即可
SQL> select SRID from st_geometry_columns where table_name='ZD'; SRID ---------- 300002设置好相应的SRID再次创建
SQL> CREATE INDEX st_zd_shape_index ON ZD (shape) INDEXTYPE IS sde.st_spatial_index PARAMETERS('st_srid=300002 st_grids= 280') LOCAL; 索引已创建。
那么查看相应的表对比ArcCatalog创建的索引信息基本一致!有个小问题,我发现ArcCatalog的索引信息并没有同步过来,也就是在桌面索引框看到的还没有创建索引,不知道是否是个bug!
如果用户的索引想存储在其他磁盘的表空间,也可以使用如下命令:
SQL> CREATE INDEX st_shape_index 2 ON parcels (shape) 3 INDEXTYPE IS sde.st_spatial_index 4 LOCAL (PARTITION quarter1 PARAMETERS('st_srid=1 st_grids=280 TABLESPACE q1_idx 5 STORAGE (INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 256 PCTINCREASE 0)'), 6 PARTITION quarter2 PARAMETERS('st_srid=1 st_grids=280 TABLESPACE q2_idx 7 STORAGE (INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 256 PCTINCREASE 0)'), 8 PARTITION quarter3 PARAMETERS('st_srid=1 st_grids=280 TABLESPACE q3_idx 9 STORAGE (INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 256 PCTINCREASE 0)'), 10 PARTITION quarter4 PARAMETERS('st_srid=1 st_grids=280 TABLESPACE q4_idx 11 STORAGE (INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 256 PCTINCREASE 0)'), 12 PARTITION qunknown PARAMETERS('st_srid=1 st_grids=280 TABLESPACE qunknown_idx 13 STORAGE (INITIAL 128K NEXT 128K MINEXTENTS 1 MAXEXTENTS 256 PCTINCREASE 0)')); Index created.
-------------------------------------------------------------------------------------------------------
版权所有,文章允许转载,但必须以链接方式注明源地址,否则追究法律责任!
------------------------------------------------------------------------------------------------------
相关文章推荐
- 在ArcSDE中使用Oracle分区表
- 怎么在ArcSDE中使用SQL Server分区表
- How does ArcSDE use Oracle Spatial? arcsde怎么使用oracle spatial
- 使用ORACLE在线重定义将普通表改为分区表
- ORACLE分区表的使用和管理
- 在oracle中插入一条数据,id自动增长,插入之后怎么得到这个id(sequence的使用)
- Oracle中分区表的使用
- 怎么在oracle中使用for循环
- ORACLE分区表的使用和管理
- ArcSDE10.1配置Oracle 监听器来使用SQL操作ST_Geometry(个人改动版)
- Oracle中分区表的使用(引用)
- 使用ArcSDE SQL操作怎么获得新对象的objectid、GUID
- Oracle、SQLServer、ArcSDE怎么查看版本、补丁
- oracle分区表之hash分区表的使用及扩展
- ArcGIS10.1桌面怎么使用ArcSDE服务连接
- Oracle中分区表的使用
- Oracle中分区表的使用
- Linux怎么自动启动Oracle服务和ArcSDE服务
- oracle中nvl函数在mysql里面怎么使用
- ArcSDE for Oracle怎么恢复误删除的要素类和要素