我是 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';
我按照 Oracle 创建的这个实验室来创建示例数据。所有步骤都运行良好,但是当我尝试创建索引时,发生了同样的情况。
正如这个问题中所说,我检查了我的列和表名称不是问题,但正如你所看到的,它们全部都是大写以避免这个问题。
预先感谢,我希望我的问题得到很好的提出,如果您需要任何详细信息,请告诉我。
卢弗, 您介意分享有关此处发布的问题的更新吗? 这有助于了解问题是否解决。