oracle 配置st_geometry

一直都感觉ArcGis连接oracle数据库,配置st_geometry是个坑。(下文中的oracle都是11g)

首先就是官方文档里的说明,“配置 Oracle extproc 以使用 SQL 访问地理数据库”中给出了配置方法:

在 Windows 服务器上,您可添加与以下类似的行:

EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll

EXTPROC_DLLS=ONLY:C:\\mylibraries\\libst_raster_ora.dll

如果您使用两个库,可将它们放在一行上:

EXTPROC_DLLS=ONLY:C:\\mylibraries\\st_shapelib.dll;C:\\mylibraries\\libst_raster_ora.dll

在这些示例中,库放置在名为 mylibraries 的文件夹中,此文件夹在 Oracle 服务器上创建以存储库。

在 Linux 或 UNIX 服务器上:

SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so

SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_raster_ora.so

如果您使用两个库,可将它们放在一行上:

SET EXTPROC_DLLS=ONLY:/user/esrilibs/libst_shapelib.so:/user/esrilibs/libst_raster_ora.so
但是根据这个方法配置我印象中没成功过,而网上的很多文章也给了不少误导,以至于我每一次部署环境都提心吊胆,惴惴不安。

下面给出我自己总结的方法:(测试语句 select sde.ST_AsText(SDE.ST_Geometry('POINT (10 10)', 0)) from dual;

0.每此修改配置后一定要重启监听器,至于是否重启oracle服务,不重启有时候行,有时候不行,还是建议重启吧;

1.windows 7环境,oracle 11gxe版本,一体式部署:修改user_libraries的路径:create or replace library ST_SHAPELIB as 'c:\oracle路径\BIN\st_shapelib.dll'; 然而我并没有配EXTPROC_DLLS或listener.ora就神奇地可以用了。

如果路径本来就正确,修改user_libraries不是必须的,但是还是建议修改到oracle_home的bin下面去。

2.windows 虚拟机,oracle 11g,一体式部署:首先修改user_libraries,同上。其次

SET EXTPROC_DLLS=ANY

这是和文档不同的地方,设置完毕后也可以使用了。

3.linux oracle 11g+windows arcgis:首先要去esri官网下载so包,版本一定要正确,这个so包互不兼容的。然后同上一样配置,完成后也可以执行语句了。

踩过的几个坑:

1.linux下如果按照官方的文档配置,并修改user_libraries,在pl/sql中可以正常执行insert语句,但是在jdbc下依然报错。

2.配置完毕后务必重启监听程序。

3.出现过修改user_libraries一直不成功的情况,一定要检查user_libraries是否有正确的路径和是否valid。

4.在我的几次测试中,listener的配置不是必须的,获取是因为该服务是动态注册。但失败的几次也都配置了listener。对于oracle的这些组件我只知道oracle由listener分配给客户端一个server process,而extproc(External Procedures)的作用是调用外部库,根据网上的文章,lintener会调用extproc,所以如果一直没有成功,还是配置一下listener试试运气吧。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值