由于 ORA-29855 和嵌套 ORA-13203 无法创建空间索引:无法读取 USER_SDO_GEOM_METADATA 视图

问题描述 投票:0回答:1

我是 Oracle Spatial 新手,在 Oracle Database 19c 中创建空间索引时遇到了一些问题。当尝试创建索引时,我不断收到:

SQL 错误 [29855] [99999]:ORA-29855:执行 ODCIINDEXCREATE 例程时发生错误

ORA-13203: 无法读取 USER_SDO_GEOM_METADATA 视图

ORA-13203: 无法读取 USER_SDO_GEOM_METADATA 视图

ORA-06512:位于“MDSYS.SDO_INDEX_METHOD_10I”,第 10 行

即使我收到此错误,索引是在表下创建的,但我无法执行任何与空间相关的操作,因为状态无效。
我尝试过多个数据样本、SRID 和几何图形(点、线、多边形)以及 2 或 3 维数据和索引。然而,没有任何效果。

这就是我创建表、添加数据、插入元数据并尝试创建索引的方式:

--Create the table
CREATE TABLE MY_SPATIAL_TABLE (
  ID NUMBER PRIMARY KEY,
  GEOMETRY SDO_GEOMETRY --tried with MDSYS.SDO_GEOMETRY too
);

--Insert sample data
INSERT INTO MY_SPATIAL_TABLE VALUES (
  1,
  SDO_GEOMETRY(
    3001, 
    NULL,
    SDO_POINT_TYPE(4, 6, 2),
    NULL,
    NULL
  )
);

--Insert the metadata into USER_SDO_GEOM_METADATA
INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)
VALUES (
  'MY_SPATIAL_TABLE',
  'GEOMETRY',
  SDO_DIM_ARRAY(
    SDO_DIM_ELEMENT('X', -180, 180, 0.5),
    SDO_DIM_ELEMENT('Y', -90, 90, 0.5),
    SDO_DIM_ELEMENT('Z', -10000, 10000, 0.5)
  ),
  NULL
);

--Create the index
CREATE INDEX MY_SPATIAL_INDEX ON MY_SPATIAL_TABLE (GEOMETRY)
INDEXTYPE IS MDSYS.SPATIAL_INDEX; --Also tried MDSYS.SPATIAL_INDEX_V2

这些是我检查过的一些原因,但在我的案例中并不是问题的原因:

  • 我发现此错误通常在未正确插入元数据时发生,但是我已经使用以下方法检查了它是否存在:

    SELECT * FROM USER_SDO_GEOM_METADATA WHERE TABLE_NAME = 'MY_SPATIAL_TABLE' AND COLUMN_NAME = 'GEOMETRY';
    

    The result of the query, where you can check the row has been created

  • 我按照 Oracle 创建的这个实验室来创建示例数据。所有步骤都运行良好,但是当我尝试创建索引时,发生了同样的情况。

  • 正如这个问题中所说,我检查了我的列和表名称不是问题,但正如你所看到的,它们全部都是大写以避免这个问题。

预先感谢,我希望我的问题得到很好的提出,如果您需要任何详细信息,请告诉我。

spatial oracle19c spatial-query spatial-index oracle-spatial
1个回答
0
投票

卢弗, 您介意分享有关此处发布的问题的更新吗? 这有助于了解问题是否解决。

© www.soinside.com 2019 - 2024. All rights reserved.