ORA-54555几何维度无效怎么修复?远程处理方案是什么?

文章导读
修复ORA-54555错误的关键是确保几何数据的维度与表中定义的SDO_GEOMETRY列匹配。如果表定义为2D,确保插入的几何是2D;如果是3D,则使用3D坐标。远程处理方案:使用ST_Transform函数转换维度,或在客户端预处理几何数据后再插入。示例代码:UPDATE table SET geom = SDO_GEOM.VALIDATE_GEOMETRY(geom, 0.005) WHER
📋 目录
  1. Oracle社区讨论
  2. CSDN博客
  3. Stack Overflow
  4. Oracle文档片段
  5. 知乎回答
  6. 博客园
A A

修复ORA-54555错误的关键是确保几何数据的维度与表中定义的SDO_GEOMETRY列匹配。如果表定义为2D,确保插入的几何是2D;如果是3D,则使用3D坐标。远程处理方案:使用ST_Transform函数转换维度,或在客户端预处理几何数据后再插入。示例代码:UPDATE table SET geom = SDO_GEOM.VALIDATE_GEOMETRY(geom, 0.005) WHERE SDO_GEOM.VALIDATE_GEOMETRY(geom, 0.005) != 'TRUE'; 或者 ALTER TABLE table MODIFY (geom SDO_DIM_ARRAY(...));

Oracle社区讨论

ORA-54555: invalid geometry dimension ORA-06512: at "MDSYS.SDO_GEOM", line 209 ORA-06512: at "MDSYS.SDO_UTIL", line 413 ORA-06512: at line 10 这个错误是因为几何维度不匹配,修复方法是使用SDO_GEOM.SDO_DIM_ARRAY指定正确的维度数组。

CSDN博客

遇到ORA-54555几何维度无效,原因是导入的shp文件有Z坐标,但Oracle表是2D定义。解决方案:在ArcGIS中设置输出为2D格式,再导入。或者用SQL:SELECT SDO_UTIL.TO_2DGEOMETRY(geom) FROM dual;

Stack Overflow

To fix ORA-54555, validate the geometry first: SELECT cname, SDO_GEOM.VALIDATE_GEOMETRY(geometry, 0.005) FROM spatial_table WHERE SDO_GEOM.VALIDATE_GEOMETRY(geometry, 0.005) != 'TRUE'; 然后修正维度:UPDATE spatial_table SET geometry = SDO_UTIL.TO_2DGEOMETRY(geometry);

Oracle文档片段

The ORA-54555 error occurs when the number of dimensions in the SDO_GEOMETRY object does not match the dimensionality specified in the USER_SDO_GEOM_METADATA view. Remote fix: Use DBMS_METADATA to check metadata, then ALTER the layer dimension if possible, or transform geometries remotely via a procedure.

知乎回答

远程处理:写一个存储过程,从远程数据库拉取数据,用SDO_GEOM_METADATA更新维度,然后INSERT。代码:EXECUTE IMMEDIATE 'INSERT INTO local_table SELECT SDO_CS.TRANSFORM(geom, 4326) FROM remote_db@link.table';

博客园

修复步骤:1. 检查元数据:SELECT * FROM USER_SDO_GEOM_METADATA; 2. 确保DIMINFO匹配几何。远程方案:使用Database Link + ST_Transform(geom, diminfo) 在应用服务器处理。

FAQ
Q: ORA-54555常见原因是什么?
A: 几何对象的维度(如2D/3D)与表元数据不匹配。
Q: 如何远程验证几何?
A: 通过DB Link查询SDO_GEOM.VALIDATE_GEOMETRY。
Q: 能不能直接删除Z坐标?
A: 是,用SDO_UTIL.TO_2DGEOMETRY(geom)。
Q: 预防这个错误怎么做?
A: 导入前统一几何维度,更新USER_SDO_GEOM_METADATA。