设为首页 收藏本站
查看: 1362|回复: 0

[经验分享] Oracle空间查询 ORA-28595

[复制链接]

尚未签到

发表于 2017-12-10 16:30:44 | 显示全部楼层 |阅读模式
  可使用数据库管理系统 (DBMS) 的结构化查询语言 (SQL)、数据类型和表格式来处理地理数据库或安装了 ST_Geometry 类型的数据库中所存储的信息。
  例如,在ArcMap中我们使用"相交"工具进行空间操作;ArcObject接口里用ITopologicalOperator.Intersect来实现。现在,我们可以脱离接口,实现数据的空间操作,从性能和架构的角度来说,这值得深入研究。在Sql Server中用STIntersects方法,在Oracle中使用SDO_FILTER(注意这里不叫SDO_Intersects哈),在ArcGIS中用sde.st_intersects方法。
  Sql Server方法:https://msdn.microsoft.com/zh-CN/library/bb933960.aspx
  Oracle方法:https://docs.oracle.com/cd/B28359_01/appdev.111/b28400/sdo_operat.htm#SPATL110
  ArcGIS方法:http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/006z000000ws000000
  为了方便重用,我们使用了ArcGIS中的方法。但遇到一个配置错误!

错误
  执行ST_Geometry
  "ERROR at line 1:
  ORA-28595: Extproc agent : Invalid DLL Path
  ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 170
  ORA-06512: at "SDE.ST_RELATION_OPERATORS", line 303"
  即语法没有错误,只是不能调用DLL,在 Oracle 中,ST_Geometry 和 ST_Raster 的 SQL 函数使用通过 Oracle 的外部过程代理(即 extproc)访问的共享库。Oracle 必须能够访问这些库。因此,这些库必须存在于 Oracle 服务器上,并且必须通过 Oracle 的外部过程框架调用它们。
  显示是没找到这个些dll,按照官网的解决方法,总是启动不了oracle监听服务。
  配置 Oracle extproc 以使用 SQL 访问地理数据库

解决
  1.找到dll,其实它依靠两个dll,一是st_shapelib.dll,ST_Geometry的库,二是libst_raster_ora.dll,ST_Raster的库。它们的路径位于:
  ArcSDE下的路径:
  

C:\Program Files (x86)\ArcGIS\ArcSDE\ora10gexe\bin\st_shapelib.dll;  
C:\Program Files (x86)\ArcGIS\ArcSDE\ora10gexe\bin\libst_raster_ora.dll
  

  

  ArcDeskop下的路径
  

D:\Program Files\ArcGIS\Desktop10.4\DatabaseSupport\Oracle\Windows64\st_shapelib.dll;  
D:\Program Files\ArcGIS\Desktop10.4\DatabaseSupport\Oracle\Windows64\ libst_raster_ora.dll;
  

  

  2.新建环境变量:新建一个系统环境变量
  变量名:EXTPROC_DLLS
  变量值:两个dll的全路径,中间用分号隔开,如C:\sdedll\st_shapelib.dll;C:\sdedll\libst_raster_ora.dll
  (这里是将两个dll添加到新建的sdedll文件夹中的,因为服务器上可能没有安装sde服务器)
DSC0000.png

  3.重启服务:重新启动oracle监听服务OracleOraDb10g_home1TNSListener

参考
  http://support.esri.com/technical-article/000009074
  http://p385579058.iteye.com/blog/1042187
  http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/006z0000001w000000/

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-422707-1-1.html 上篇帖子: 解决中64位Win7系统上PLSQL无法连接ORACLE的方法(PLSQL无法识别ORACLE 下篇帖子: 通过OCCI连接oracle(C++)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表