You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle GIS中使用ST_Geometry插入几何数据报错问题咨询

ORA-28595插入ST_Geometry失败但查询正常的问题排查

你的INSERT语句语法本身没有问题,报错的根源是Oracle外部过程代理(extproc)无法定位ST_Geometry依赖的形状库文件。查询语句能正常执行的原因是:读取已存储的几何数据时,多数情况下不需要调用外部库的初始化逻辑;而构造新的ST_Geometry对象(比如用SDE.ST_GEOMETRY()函数创建点)必须依赖外部shape库,这时候extproc找不到正确的DLL路径就会触发ORA-28595错误。

以下是具体排查和解决步骤:

  • 确认shape库文件路径与权限

    • Windows环境:找到SDE安装目录下的shapelib.dll,默认路径一般是C:\arcgis\ArcSDE\ora11g\bin\shapelib.dll(根据Oracle版本和SDE版本调整),确保Oracle运行用户对该文件有读取权限。
    • Linux环境:对应文件是libshapelib.so,默认路径类似/arcgis/ArcSDE/oracle11g/lib/libshapelib.so,同样要保证Oracle用户有读取权限,且该目录已加入Oracle用户的LD_LIBRARY_PATH环境变量。
  • 检查extproc配置文件
    查看Oracle的listener.ora和tnsnames.ora中关于extproc的配置段,确保其中指定的库路径正确无误。例如listener.ora中的配置应该类似:

    SID_LIST_LISTENER =
      (SID_LIST =
        (SID_DESC =
          (SID_NAME = PLSExtProc)
          (ORACLE_HOME = /u01/app/oracle/product/11.2.0/dbhome_1)
          (PROGRAM = extproc)
          (ENVS = "EXTPROC_DLLS=ONLY:/arcgis/ArcSDE/oracle11g/lib/libshapelib.so")
        )
      )
    

    注意EXTPROC_DLLS参数必须准确指向shape库文件,不能有拼写错误。

  • 验证ST_GEOMETRY_SHAPELIB_PKG包的库引用
    执行以下SQL查询包体的定义,确认其中的LIBRARY语句指向正确的库文件:

    SELECT text FROM all_source 
    WHERE name = 'ST_GEOMETRY_SHAPELIB_PKG' 
      AND type = 'PACKAGE BODY';
    

    输出内容中应该包含类似LIBRARY shapelib_lib的定义,而shapelib_lib对应的库路径需要匹配实际文件位置。

  • 重启监听与Oracle服务
    修改配置文件后,需要重启Oracle监听器和数据库服务,确保配置生效。

内容的提问来源于stack exchange,提问作者satrio wijonarko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 06:10:17