你好,
我使用的是Oracle 19c和ArcGIS企业10.9
最近我把一些特征类移动到另一个表空间。我观察索引使用查询:
SELECT table_name, index_name, index_type, status, NUM_ROWS
FROM DBA_INDEXES WHERE STATUS='不可用' AND owner =' SDE'
Normal和Domain索引变为“不可用”。我知道我可以用ArcGIS Pro重建索引,但我认为这很烦人,因为我有1000个特征类。我更喜欢使用phyton脚本或查询/ plsql。这里有人能帮我或者至少给我指个方向吗?
此外,我尝试删除属性Index。但是这个按钮是灰色的。为什么?我可以重建空间索引。请看下图:
我如何删除,然后重建属性索引再次与相同的名称(或与不同的名称,它的罚款)?
谢谢
解决了!转到解决方案。
我仍然无法将空间索引存储移动到新的位置。
我是这样做的:
-删除索引:删除索引sde。A280_IX1力量;
-运行查询:"创建索引sde。A280_IX1REBUILD PARAMETERS('st_grids=1,3,0 st_srid=32748 tablespace=NEWTBS');"
—运行:重建索引A280_IX1成功。但是这并没有将表空间位置更改为一个新位置
—运行:重建表空间——错误:ORA-29871:无效的alter选项的域索引
—运行:ALTER INDEX表空间——ORA-02243:无效的ALTER INDEX或ALTER MATERIALIZED VIEW选项
—运行:重建表空间NEWTBS;——ORA-02243:无效的ALTER INDEX或ALTER MATERIALIZED VIEW选项
当我问"SELECT * FROM dba_indexes WHERE rownum < 5 AND table_name = 'STREET'”,表空间= NULL而且状态=有效
我错过了什么?有什么合法的方法来正确地做这件事吗?
谢谢。
更新:原来默认的表空间名称总是NULL。有趣!
我是这样做的:
—观察原来的表空间:SELECT * FROM user_indexes where index_name = 'A346_IX1'——表空间名= NULL
- Drop it: Drop INDEX A346_IX1 FORCE;--成功
—重新创建:CREATE INDEX SDE。A280_IX1
街(形状)
索引类型为sde.st_spatial_index
PARAMETERS('st_grid =1,3,0 st_srid=32748表空间NEWTBS');--成功
-再次观察:SELECT * FROM user_indexes where index_name = 'A346_IX1'————the tablespacename = NULL
两次观测的结果完全相同。
问题1:
但是为什么默认表空间总是NULL?那么所有的空间索引都存储在哪里呢?
此外,我在这里读到一篇文章:https://support.esri.com/en/technical-article/000009505.它表示空间索引的名称遵循以下模式:S
因此,现在我得到了2个空间索引:A346_IX1 vs S1244_idx$。
问题2:哪个是正确的空间索引?
然后修改表空间的位置:ALTER TABLE "S1244_IDX$" MOVE tablespace NEWTBS;---成功
检查是否有效:SELECT tablespace_name
从user_indexes
WHERE index_name = 'S1244_IDX$';——tablespace为NULL。
注:我发现A346_IX1与查询:
SELECT table_name, index_name, column_name
从dba_ind_columns
table_owner =“钻”
AND table_name
(街)
order BY table_name, column_position;
我读在这里.上面写着:使用ST_Geometry存储和空间索引创建的特性类在Oracle数据库中创建了一个额外的表。空间索引表名为S
根据那篇文章,所以我在想那些两个索引实际上是一样的.我错了吗?
但我认为,A
索引“A
的A
而S
我应该移动两个A
而且,特性类没有作为版本注册。
我只是很困惑,还在学习完全理解它。请原谅我。
问题:根据那篇文章,所以我在想那些两个索引实际上是一样的.我错了吗?但我认为,A
答:它们是两个不同的索引。
问题:我应该移动两个A
答:是的
例子:
--------------------------------------------------------------------------------------------------------
——重建索引
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
——表街道
--------------------------------------------------------------------------------------------------------
重建表空间gis_bindex——index_type =域
/*
错误报告-
ORA-29871:域索引的无效alter选项
29871.00000 - "域索引的无效修改选项"
*原因:用户指定了修改域索引的无效选项。
操作:使用有效的选项重新发出alter语句。
* /
生成索引SQL DDL,然后删除索引,并尝试在另一个表空间上重新创建索引!!
删除索引" gis "." a241_ix1 ";
——指数“GIS”。"A241_IX1" dropped.
创建索引“gis”。"A241_IX1" ON "GIS"."STREETS" ("SHAPE")
Indextype是“sde”。"ST_SPATIAL_INDEX" PARAMETERS ('ST_GRIDS=6000:0:0 ST_SRID=300003')
表空间“GIS_BINDEX”;
/*
错误报告-
ORA-29850:创建域索引的无效选项
29850.00000 - "创建域索引的无效选项"
*原因:用户指定了一个无效的选项,如ASC, DESC, SORT或a
平行子句,分割子句或者物理属性条款.
*操作:选择一个用于创建域索引的有效子句。
* /
删除索引" gis "." a241_ix1 ";
——添加表空间作为参数
创建索引“gis”。"A241_IX1" ON "GIS"."STREETS" ("SHAPE")
Indextype是“sde”。"ST_SPATIAL_INDEX" PARAMETERS ('ST_GRIDS=6000:0:0 ST_SRID=300003表空间= GIS_BINDEX”);
/*
错误报告-
ORA-29855:在执行ODCIINDEXCREATE例程时发生错误
ORA-02216:期望表空间名称
ORA-06512:在“SYS.”DBMS_SQL",第1199行
ORA-06512:在“SDE。ST_DOMAIN_METHODS”,第1425行
29855.00000 - "在执行ODCIINDEXCREATE例程时发生错误"
*原因:Failed to successfully execute the ODCIIndexCreate例程。
*操作:检查例程编码是否正确。
* /
删除索引" gis "." a241_ix1 ";
——添加表空间作为参数
创建索引“gis”。"A241_IX1" ON "GIS"."STREETS" ("SHAPE")
Indextype是“sde”。"ST_SPATIAL_INDEX" PARAMETERS ('ST_GRIDS=6000:0:0 ST_SRID=300003表空间GIS_BINDEX”);
——指数“GIS”。"A241_IX1" created. --Works!!! but do not think it uses the tablespace parameter !!!
删除索引" gis "." a241_ix1 ";
创建索引“gis”。"A241_IX1" ON "GIS"."STREETS" ("SHAPE")
Indextype是“sde”。"ST_SPATIAL_INDEX" PARAMETERS ('ST_GRIDS=6000:0:0 ST_SRID=300003');
——指数“GIS”。"A241_IX1" created.
结论:不能移动域索引!!
--------------------------------------------------------------------------------------------------------
重新构建表空间gis_bindex——index_type =正常
——索引R290_SDE_ROWID_UK改变。
--------------------------------------------------------------------------------------------------------
——表A290
--------------------------------------------------------------------------------------------------------
重新构建表空间——index_type =正常
索引A290_PK改变。
重新构建表空间gis_aindex——index_type =域
结论:不能移动域索引!!详情见上面的例子!!
重新构建表空间gis_aindex——index_type =正常
——索引A290_STATEID_IX1被修改。
——表D290
重新构建表空间——index_type =正常
索引D290_PK改变。
重新构建表空间——index_type =正常
——索引D290_IDX1被修改。
——表S349_IDX $
重建表空间gis_sindex——index_type =物联网
/*
错误报告-
ORA-28650: IOT主索引无法重建
28650.00000 -“无法重建IOT上的主索引”
*原因:试图在IOT-TOP上发布alter index rebuild
*操作:使用Alter table MOVE重新组织表(IOT)
* /
move表空间gis_sindex parallel 4
——表S349_IDX$被修改。
重建表空间gis_sindex——index_type =正常
-索引S349$_IX2改变
我希望这能说明问题。