我有两个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 developer 3.2.20中的以下错误:
从命令行340开始出错:
CREATE INDEX persons_spatial_idx
ON人(p_shape)
INDEXTYPE是mdsys.spatial_index
命令行错误:340列:14
错误报告: SQL错误:ORA-00955:现有对象已使用名称 00955. 00000 - “名称已被现有对象使用”
原因:
动作:
由于这是说我已经和索引名为persons_spatial_idx
,我使用以下命令删除了这个索引:DROP INDEX persons_spatial_idx;
然后当我再次尝试创建索引时,它产生了以下错误:
从命令行的第340行开始出错:
CREATE INDEX 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:at“MDSYS.SDO_INDEX_METHOD_10I”,第10行
*原因:无法成功执行ODCIIndexCreate例程。
*操作:检查例程是否已正确编码。
感谢阅读。
答案 0 :(得分:0)
该消息表明名称为PERSONS_SPATIAL_IDX
的对象已存在。
您可以使用以下查询来查找现有索引:
select *
from all_indexes
where index_name = 'PERSONS_SPATIAL_IDX'