移动表空间后重建索引

418
16
跳到解决方案
09-26-2022 02:15 am
yockee”id=
通过
偶然的因素

你好,

我使用Oracle 19c和ArcGIS企业10.9

最近我把一些特征类移到了另一个表空间中。我使用query来观察索引:

SELECT table_name, index_name, index_type, status, NUM_ROWS
查找DBA_INDEXES中STATUS=' unavailable '和owner =' SDE'的数据

Normal和Domain索引变得“不可用”。我知道我可以用ArcGIS Pro重建索引,但我认为这太无聊了,因为我有1000个功能类。我更喜欢使用phyton脚本或查询/ plsql。这里有人能帮我吗,或者至少给我指个方向?

此外,我试图删除属性Index。但是按钮是灰色的。为什么?我可以重建空间索引。请看下图:

yockee_0 - 1664194438691. - png”li-image-url=

我如何删除,然后重建属性索引再次与相同的名称(或与不同的名称,其罚款)?



谢谢

标签(4)
0荣誉
16日回复
yockee”id=
通过
偶然的因素

我仍然不能将我的空间索引存储移动到一个新的位置。

我是这样做的:

-删除索引:删除索引侧。A280_IX1力量;

—执行如下查询:"创建索引侧。A280_IX1REBUILD PARAMETERS('st_grids=1,3,0 st_srid=32748 tablespace=NEWTBS');

—执行命令:修改索引A280_IX1重建成功。但这不会将表空间位置更改为新位置

—执行命令:ALTER INDEX A280_IX1重建表空间——错误:ORA-29871:无效的alter选项的域索引

—执行命令:ALTER INDEX A280_IX1表空间错误:ORA-02243:无效的ALTER INDEX或ALTER MATERIALIZED VIEW选项

—执行命令:修改索引a276_ix1重建移动表空间NEWTBS;——ORA-02243:无效的ALTER INDEX或ALTER MATERIALIZED VIEW选项

当我问"SELECT * FROM dba_indexes WHERE rownum < 5 AND table_name = 'STREET'”,表空间= NULL状态=有效

我错过了什么?有什么合法的方法可以正确地做这件事吗?

谢谢。

0荣誉
yockee”id=
通过
偶然的因素

更新:原来默认的表空间名称总是NULL。有趣!

我是这样做的:

—观察原始表空间:SELECT * FROM user_indexes where index_name = 'A346_IX1'——the tablespacename = NULL
- Drop it: Drop INDEX A346_IX1 FORCE;--成功
-重新创建:创建索引SDE。A280_IX1
街(形状)
索引类型为side .st_spatial_index
参数('st_grids=1,3,0 ' st_srid=32748 tablespace NEWTBS');--成功
-再次观察:SELECT * FROM user_indexes where index_name = 'A346_IX1'————the tablespacename = NULL
这两次观察的结果完全相同。

问题1:
但是为什么默认的表空间总是NULL?那么所有的空间索引都存储在哪里呢?

此外,我在这里读到一篇文章:https://support.esri.com/en/technical-article/000009505。它表示空间索引的名称遵循以下模式:S_IDX$。如果我遵循这一点,那么我的特征类具有空间索引名称:S1244_idx$。

所以,现在我结束了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 in
(街)
order BY table_name, column_position

0荣誉
MarceloMarques”id=
亚博搜索yabovip28点com

如果你有一个注册为传统版本的功能类,那么你的功能类有基表、添加表和删除表,一个空间索引将被添加到a表和B表,因此你有2个空间索引。Oracle将表空间名显示为空,因为index_type是一个域索引,但是如果您检查索引所在的表空间大小,您将注意到索引位于正确的表空间中。我希望这能澄清。

| Marcelo Marques |首席产品工程师| Esri |
OCP - Oracle认证专业人员
0荣誉
yockee”id=
通过
偶然的因素

我读在这里。上面写着:使用带有空间索引的ST_Geometry存储创建的特性类会在Oracle数据库中创建一个额外的表。空间索引表名为S_IDX$,其中是该表的几何索引值。可以通过查询SDE获取。ST_GEOMETRY_COLUMNS表。空间索引表被创建为Oracle索引组织表(IOT)。ST_Geometry属性上的空间索引显示为通过企业管理器查看时,A_IX1的值表示存储在LAYERS表中的LAYER_ID值。

基于那篇文章,我在想那些两个索引实际上是一样的。我错了吗?

但我认为,A_IX和S$_IX是两个不同的实体。

索引"A_IX"可在"dba_ind_columns,而"S$_IX"则可以在"user_indexes

A_IX不能直接移动。它必须被丢弃,然后重新创建。但是tablespace_name仍然显示为NULL。

S$_IX可以直接移动3 .使用ALTER TABLE "S_IDX$"来移动表空间

我应该移动两个A_IX和S$_IX ?

而且,Feature Class没有被注册为版本化的。

我只是很困惑,还在学习完全理解它。请原谅我。

0荣誉
MarceloMarques”id=
亚博搜索yabovip28点com

@yockee

问题:基于那篇文章,我在想那些两个索引实际上是一样的。我错了吗?但我认为,A_IX和S$_IX是两个不同的实体。

答:它们是两个不同的指标。

问题:我应该移动两个A_IX和S$_IX ?

答:是的

例子:

marcelomarques_0 - 1670609180316. - png”li-image-url=

marcelomarques_6 - 1670609970384. - png”li-image-url=

marcelomarques_4 - 1670609764481. - png”li-image-url=

marcelomarques_5 - 1670609874767. - png”li-image-url=

--------------------------------------------------------------------------------------------------------
——重建索引
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
——表街道
--------------------------------------------------------------------------------------------------------
将表空间a241_ix1重建为在线表空间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")
索引类型为“side”。”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")
索引类型为“side”。”ST_SPATIAL_INDEX" PARAMETERS ('ST_GRIDS=6000:0:0 ST_SRID=300003表空间= GIS_BINDEX”);
/ *
错误报告-
ORA-29855:执行ODCIINDEXCREATE例程时发生错误
ORA-02216:期望的表空间名称
ORA-06512: at“SYS.”DBMS_SQL”,第1199行
ORA-06512:在SDE。ST_DOMAIN_METHODS”,第1425行
29855.00000 - "执行ODCIINDEXCREATE例程时发生错误"
*原因:ODCIIndexCreate例程执行失败。
*动作:检查程序是否被正确编码。
* /

删除索引“gis”.“a241_ix1”;
——添加表空间作为参数
创建索引gis。”A241_IX1" ON "GIS"."STREETS" ("SHAPE")
索引类型为“side”。”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")
索引类型为“side”。”ST_SPATIAL_INDEX" PARAMETERS ('ST_GRIDS=6000:0:0 ST_SRID=300003');
——指数“GIS”。”A241_IX1" created.

——结论:不能移动域名索引!!

——构建领域索引
https://docs.oracle.com/en/database/oracle/oracle-database/19/addci/building-domain-indexes.html GUI……

--------------------------------------------------------------------------------------------------------
将表空间r290_sde_rowid_uk重新创建——index_type =正常
——修改索引R290_SDE_ROWID_UK。

--------------------------------------------------------------------------------------------------------
——表A290
--------------------------------------------------------------------------------------------------------
重新创建表空间:——index_type =正常
—索引A290_PK改变。

创建一个新的表空间:a241_ix1_a——index_type =域
——结论:不能移动域名索引!!请看上面的例子!!

将表空间a290_stateid_ix1重建为online parallel——index_type =正常
——索引A290_STATEID_IX1被修改。

——表D290
重新创建表空间gis_dindex——index_type =正常
——指数D290_PK改变。

重建表空间gis_dindex——index_type =正常
——修改索引D290_IDX1。

——表S349_IDX $
3 .在s349 $ _ix1上重建表空间——index_type =物联网
/ *
错误报告-
ORA-28650:物联网上的主索引无法重建
28650.00000 -“物联网上的主索引无法重建”
*原因:试图在IOT-TOP上执行alter index rebuild命令
*动作:使用Alter table MOVE重新组织表(IOT)
* /
将表空间s349_idx $移至表空间gis_sindex
——修改表S349_IDX$。

重新创建表空间:$ _ix2——index_type =正常
—修改索引S349$_IX2。


我希望这能澄清。

| Marcelo Marques |首席产品工程师| Esri |
OCP - Oracle认证专业人员
yockee”id=
通过
偶然的因素

非常感谢。这就澄清了……: slightly_smiling_face:”title=

0荣誉
MarceloMarques”id=
亚博搜索yabovip28点com

不客气!

| Marcelo Marques |首席产品工程师| Esri |
OCP - Oracle认证专业人员
0荣誉