在 Oracle 中配置 extproc 以访问 ST_Geometry

关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。

http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm

 

其实简单总结一下,主要就分为以下几个步骤。

1、安装好ArcMap后,在路径\ArcGIS\Desktop10.6\DatabaseSupport\Oracle\Windows64中找到st_shapelib.dll,并拷贝该文件到数据库服务端(一般放到$Oracle_Home\lib目录下)。

2、修改数据库服务端的extproc.ora文件,将值改为ANY。

3、使用plsql或者sqlplus查看libraries的路径是否正确。

4、 检查操作系统的包是否满足需求。

 

下面就每一点简单介绍一下注意事项。

1、首先确定一下你的数据库服务器安装在什么操作系统,Windows还是Linux,以此来决定拷贝的动态库文件是st_shapelib.dll还是libst_shapelib.so。然后很多用户会纠结拷贝该文件到数据库服务端的什么路径下。理论上只要该路径用户有权限可读(linux环境下特别要注意这一点),就可以拷贝过去。一般情况下可以放到 $Oracle_Home\lib目录下,方便管理和寻找。无论怎样,拷贝过去以后,请记住该路径。

2、在数据库服务器端,Oracle的安装目录下,寻找一个文件 extproc.ora,路径一般为 ORACLE_HOME\hs\admin。打开它,修改其中的值为ANY(见下图)。也可以选择改成 ONLY到具体路径,但一般建议改成ANY,比较方便快捷。

 

3、数据库中的Libraries对象需要指向本地的st_shapelib.dll或libst_shapelib.so文件。我们可以通过语句

 

SELECT file_spec
 FROM user_libraries
 WHERE library_name = 'ST_SHAPELIB';

 

或者直接在plsql中右键对象来查看(都使用SDE用户查询)。

这一步需要注意路径要正确有效,不要有特殊字符,空格,中文等,并且指向本地的那个st_shapelib.dll或libst_shapelib.so文件,也就是第一步中需要你记住的那个路径。

如果检查出来路径不对,则使用SQL语句

create or replace library ST_SHAPELIB

  as '你的路径\st_shapelib.dll';

或者直接在plsql中修改该路径。

 

4、在帮助文档中,有这样一段话,历来被大家忽略了,但是很重要,如下:

在 Windows 服务器上部署 ST_Geometry 库时,需要使用 Microsoft Visual C++ 2017 Redistributable Package (x64)。如果 Oracle 服务器上没有 Microsoft Visual C++ 2017 SP1 Redistributable Package (x64),可从 Microsoft 网站下载后进行安装。

也就是说st_shapelib.dll这个文件需要使用Microsoft Visual C++组件(注意,每个版本的st_shapelib.dll需要的Microsoft Visual C++不同,此处是ArcGIS 10.6)。

可以在以下链接下载需要的Microsoft Visual C++组件。

https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads

 

至此,关于配置空间SQL的步骤已经介绍完了。在linux环境中配置的方法大致一样。我们可以执行SQL语句来测试是否配置成功。如下语句,若能返回结果,则代表配置成功了。

 

最后建议不要使用Oracle 11.2.0.1这个版本,因为该版本在调用外部动态库有bug,所以使用的过程中会有些不稳定。

而且ArcGIS 10.2是最后一个支持11.2.0.1的版本。

此后版本的ArcGIS,都需要Oracle11.2.0.1以上(比如Oracle 11.2.0.3,Oracle 11.2.0.4)。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值