教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 实用模板 >

ORACLE SPATIAL常见使用错误解决办法

来源:网络收集 时间:2026-08-26
导读: ORACLE SPATIAL常见错误解决办法 1、 ORA-13226: 没有空间索引接口将不被支持 当使用一个空间操作符时,如果没有使用空间索引导致该操作符不能被完成将会返回该错误。这可能会发生在当你使用的列上没有空间索引、或者优化器没有选择以所用为基础进行计算时

ORACLE SPATIAL常见错误解决办法

1、 ORA-13226:

没有空间索引接口将不被支持

当使用一个空间操作符时,如果没有使用空间索引导致该操作符不能被完成将会返回该错误。这可能会发生在当你使用的列上没有空间索引、或者优化器没有选择以所用为基础进行计算时。

解决办法:如果在空间操作符的列上没有索引,就创建一个索引。如果优化器没有选择空间索引,那么久显式地指定index或ordered以确保空间索引被使用。

例如:

select b.gwm_fid, b.gwm_fno, b.gwm_vno, a.gwm_tileid, b.districtid

from gs_tile_p2 a, VP_street_area b

where b.gwm_vno = 13001

and b.deletetag = 0

and b.gwm_status = 0

and sdo_relate(a.gwm_geometry, b.gwm_geometry, '' MASK = ANYINTERACT '') = '' TRUE '';

查询提示该错误,原因gs_tile_p2该表没有创建控件索引。

2、ORA-13203:

读取USER_SDO_GEOM_METADATA视图失败

如果在USER_SDO_GEOM_METADATA视图中对没有任何元数据的表进行索引,就会返回该错误。

解决办法:在该视图中插入一条与空间层相关的记录。

比如:

CREATE INDEX INDEX_GS_TILE_P2 ON GS_TILE_P2(GWM_GEOMETRY)INDEXTYPE IS MDSYS.SPATIAL_INDEX;

提示ORA-13203错误,经查询发现没有在元数据中插入记录。

INSERT INTO USER_SDO_GEOM_METADATA (TABLE_NAME, COLUMN_NAME, DIMINFO, SRID)

VALUES ('GS_TILE_P2', 'GWM_GEOMETRY',

MDSYS.SDO_DIM_ARRAY

(MDSYS.SDO_DIM_ELEMENT('X', -5000000, -5000000, 0.000000050),

MDSYS.SDO_DIM_ELEMENT('Y', -5000000, -5000000, 0.000000050),

MDSYS.SDO_DIM_ELEMENT('Z', 0,0, 0.000000050)

),

NULL);

3、ORA-13365:层的SRID与几何体的SRID不符

该错误暗示着在一个表的几何体中的SRID与USER_SDO_GEOM_METADATA视图中相应的SRID值不符。

解决办法:将两者的SRID设为一致。

4、ORA-13223:

SDO_GEOM_METADATA中的重复项

该错误表明,像USER_SDO_GEOM_METADATA视图中插入一条指定了数据对的新记录失败。表明该视图中已经含有数据对的记录。

解决办法:在向该视图插入新记录前,先删除含有数据对的记录。

5、ORA-13249,ORA-02289:不能撤销序列/表

当你撤销一个空间索引时可能引发该错误。如果相应的序列/表不存在,DROP INDEX语句会引发这些错误。

解决办法:在DROP INDEX语句中增加FORCE。

如:DROP INDEX customers_sidx FORCE;

6、ORA-13249:sdo_index_metadata表在有重复条目

当尝试创建一个空间索引,且此时还有失败的DROP INDEX语句残留元数据时,该错误将会引发。

解决办法:显式地清除MDSYS模式中SDO_INDEX_METADATA表内指定索引的元数据。

DELETE FROM SDO_INDEX_METADATA WHERE sdo_index_owner = ‘SPATIAL’ AND sdo_index_name = ‘CUSTOMERS_SIDX’;

7、ORA-13207:不正确地使用操作符

当指定的操作符使用 不正确时可能引发该错误。绝大多数情况下,当SDO_RELATE、SDO_NN或SDO_WITHIN_DISTANCE操作符被应用到三维或四维空间索引时(通过在

CREATE INDEX语句中的字句中指定SDO_INDEX_DIMS参数创建索引),可能引发该错误。

解决办法:在索引创建过程中,如果SDO_INDEX_DIMS参数被设置为大于2(默认操作符>值)时,可以使用的操作符只有SDO_FILTER。

8、ORA-13000:维数超出范围

当操作含有SDO_GTYPE值(在SDO_GEOMETRY对象中)小于10的几何体时,将会导致该错误。也许是因为早期的Oracle spatial版本中的SDO_GTYPE仅仅包含类型(T)信息。从Oracle9i开始,SDO_GEOMETRY中的SDO_GTYPE的格式为DOOT,其中D表明维度而T是类型信息。

解决办法:修改数据使其符合这一变化。另一种方法是使用SDO_MIGRATE.TO_CURRENT函数让Oracle spatial改变数据。

9、ORA-00904:…无效的标识符

select gwm_geometry.sdo_srid from p_street_area进行查询时就会提示该错误

这是因为引用对象的属性时没有为表指定一个别名。如下操作就可以正常查询:

select a.gwm_geometry.sdo_srid from p_street_area a;

10、ORA-00939:函数参数过多

当SDO_ORDINATES数组中插入一个超过1000个坐标的SDO_GEOMETRY时,可能引发该错误。

例如:

INSERT INTO sales_regions

VALUES

(1000,

sdo_geometry(2004,

8307,

NULL,

sdo_elem_info_array(1, 1, 1100),--1100个点

sdo_ordinate_array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.. . --重复99次

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1

)));

提示too many arguments for function

解决办法:这是一个sql级别的限制。可以通过创建一个保存该几何体的pl/sql变量来避免这一错误,之后将该变量绑定到insert sql语句中:

DECLARE

geom sdo_geometry;

BEGIN

geom:=

sdo_geometry

(2004,

8307,

NULL,

sdo_elem_info_array(1, 1, 1100),--1100个点

sdo_ordinate_array(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1.. . --重复99次

1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1

)

);

execute immediate

'INSERT INTO sales_regions values (1000,:gm)' using geom;

END;

11、ORA-13030

sdo_geometry的维数无效或者ORA-13364:层维数与几何体维数不符

空间索引、元数据中的diminfo,数据表中sdo_geometry中的GTYPE值要保持一致。

如果空间索引是2维的,就无法将数据表中二维坐标转换为三维的,必须将该索引先drop,然后更新坐标为三维,最后创建空间索引。

…… 此处隐藏:1435字,全部文档内容请下载后查看。喜欢就下载吧 ……
ORACLE SPATIAL常见使用错误解决办法.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/519136.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)