我有两个Oracle空间表,即restaurants
和persons
。这两个表的结构是:
CREATE TABLE restaurants(
id NUMBER PRIMARY KEY,
name VARCHAR2(32),
shape SDO_GEOMETRY
);
CREATE TABLE persons(
p_id NUMBER PRIMARY KEY,
p_name VARCHAR2(32),
p_shape SDO_GEOMETRY
);
然后,在填充每个表之后,我想为每个表创建空间索引。成功执行的restaurants
表的以下指令。
CREATE INDEX restaurants_spatial_idx
ON restaurants(shape)
INDEXTYPE IS mdsys.spatial_index;
但是,当我为persons
表写作时:
CREATE INDEX persons_spatial_idx
ON persons(p_shape)
INDEXTYPE IS mdsys.spatial_index;
这给了我SQL开发人员3.2.20中的以下错误:
命令340的错误:
创建索引Persons_spatial_idx
在人(p_shape)
indexType是mdsys.spatial_index
命令行的错误:340列:14
错误报告: SQL错误:ORA-00955:现有对象已经使用了名称00955. 00000-"名称已经由现有对象使用"
原因:
动作:
这是在说我已经和索引名为persons_spatial_idx
,我使用以下方式删除了此索引:DROP INDEX persons_spatial_idx;
然后,当我尝试再次创建索引时,它产生了以下错误:
从第340行开始的错误:
创建索引Persons_spatial_idx 关于人(p_shape) indexType是mdsys.spatial_index
命令行的错误:340列:14
错误报告:
SQL错误:ORA-29855:ODCIINDEXCREATE例程的执行中发生了错误
ORA-13249:空间索引中的内部错误:[mdidxrbd]
ORA-13249:空间索引中的错误:索引构建失败
ora-13249:空间索引中的错误:[mdrcrtxfergm]
ORA-13249:空间索引中的错误:[mdpridxtxfergm]
ora-13200:内部错误[rowID:aaafgnaabaaalhpaaa]在空间索引中。
ORA-13206:内部错误[]创建空间索引
ORA-13365:层SRID不匹配几何SRID
ORA-06512:在" mdsys.sdo_index_method_10i",第10行
- 00000-"在执行ODCIINDEXCREATE例程中发生错误"
*原因:未能成功执行odciindexcreate例程。
*操作:检查例程是否正确编码。
感谢您的阅读。
该消息说具有名称PERSONS_SPATIAL_IDX
的对象已经存在。您可以使用以下查询查找现有索引:
select *
from all_indexes
where index_name = 'PERSONS_SPATIAL_IDX'