ArcMap 无法在Oracle中创建图层案例

前端之家收集整理的这篇文章主要介绍了ArcMap 无法在Oracle中创建图层案例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

最近同事在客户的现场使用ArcMap无法创建图层的问题,简单记录一下处理过程。@H_404_1@

软件版本环境是:@H_404_1@

ArcGIS Desktop 10.2.1@H_404_1@

Oracle 11.2.0.4@H_404_1@

由于保密原因,无法提供错误截图,只能提供错误代码。@H_404_1@

错误代码为ora-29881@H_404_1@

[oracle@bigdataserver ~]$ oerr ora 29881
29881,00000,"Failed to validate indextype"
// *Cause: Indextype cannot be compiled.
// *Action : Try to compile the indextype which is referenced by
// the domain index.@H_301_29@ 

是indextype出的问题,因此首先想到是创建图层后要创建空间索引,空间索引为域索引,其indextype为st_spatial_index.@H_404_1@

建议先对其进行重新编译:@H_404_1@

sql> alter indextype st_spatial_index compile;

Indextype altered.@H_301_29@ 

正常重新编译后,同事反馈问题依然存在。@H_404_1@

因此问题不在这个indextype身上,应该是别的indextype有问题,建议同事查询用户下的无效对象@H_404_1@

sql> select object_name,object_type from user_objects where status='INVALID';@H_301_29@ 

同事反馈返回四条记录,分别是:@H_404_1@

XMLDOCIX4_TX
XMLDOCIX3_TX
XMLDOCIX2_TX
XMLDOCIX1_TX@H_301_29@ 

并且类型都是索引。@H_404_1@

接着让同事使用alter index xmldocix1_ix rebuild;重建索引结果也报ora-29881。至此问题找到了,是这四个索引导致。@H_404_1@

继续查看这四个索引的定义:@H_404_1@

sql> select dbms_Metadata.get_ddl('INDEX','XMLDOCIX1_TX','SDE') from dual;

DBMS_MetaDATA.GET_DDL('INDEX','SDE')
--------------------------------------------------------------------------------

  CREATE INDEX "SDE"."XMLDOCIX1_TX" ON "SDE"."SDE_XML_DOC1" ("XML_DOC_VAL")
   INDEXTYPE IS "CTXSYS"."CONTEXT"

sql> select dbms_Metadata.get_ddl('INDEX','XMLDOCIX2_TX','SDE')
--------------------------------------------------------------------------------

  CREATE INDEX "SDE"."XMLDOCIX2_TX" ON "SDE"."SDE_XML_DOC2" ("XML_DOC_VAL")
   INDEXTYPE IS "CTXSYS"."CONTEXT"

sql> select dbms_Metadata.get_ddl('INDEX','XMLDOCIX3_TX','SDE')
--------------------------------------------------------------------------------

  CREATE INDEX "SDE"."XMLDOCIX3_TX" ON "SDE"."SDE_XML_DOC3" ("XML_DOC_VAL")
   INDEXTYPE IS "CTXSYS"."CONTEXT"

sql> select dbms_Metadata.get_ddl('INDEX','XMLDOCIX4_TX','SDE')
--------------------------------------------------------------------------------

  CREATE INDEX "SDE"."XMLDOCIX4_TX" ON "SDE"."SDE_XML_DOC4" ("XML_DOC_VAL")
   INDEXTYPE IS "CTXSYS"."CONTEXT"@H_301_29@ 

这四个索引果然也都是domain索引,是用来进行全文检索的索引。@H_404_1@

继续让同事查看CONTEXT是否是正常的。@H_404_1@

sql> select  status from all_objects where owner='CTXSYS' and object_type='INDEXTYPE' and object_name='CONTEXT'; STATUS -------
VALID@H_301_29@ 

同事反馈的结果是VALID,那就是CONTEXT本身的问题,就是索引本身由于不明原因导致失效了。建议同事将这四个索引删除后重建。@H_404_1@

删除后重建问题解决。@H_404_1@

猜你在找的Oracle相关文章