配置st_geometry.dll(以ArcGIS10.5.1+Oracle12c R1为例)
准备工作:
首先当然是找到st_geometry.dll文件,比如我本机的:
C:\Program Files (x86)\ArcGIS\Desktop10.5\DatabaseSupport\Oracle\Windows64
目录下找到st_shapelib.dll文件。
其次,找到Oracle的服务端的安装目录,比如我我本机的:D:\Oracle\product\12.1.0\dbhome_1,找到BIN目录。
亲测了两种方法,供大家参考:
法1:
1、拷贝st_shapelib.dll到D:\Oracle\product\12.1.0\dbhome_1\BIN目录下
2、修改D:\Oracle\product\12.1.0\dbhome_1\hs\admin目录下的extproc.ora文件,在最后一行加上图上红色框框部分的内容:
SET EXTPROC_DLLS=ONLY:D:\\Oracle\\product\12.1.0\\dbhome_1\\BIN\\st_shapelib.dll
特别说明:路径要用双斜杠!!!
3、重启Oracle的监听服务。
法2:
1、拷贝st_shapelib.dll到D:\Oracle\product\12.1.0\dbhome_1\BIN目录下
2、修改D:\Oracle\product\12.1.0\dbhome_1\NETWORK\ADMIN目录下的listener.ora文件:在EXTPROC_DLLS中追加st_shapelib.dll的路径(注意与其他dll的分隔符 分号;)
3、重启Oracle的监听服务。
===============================================================================
以上两种方法任选,完成上述操作后,继续下一步操作:
4、打开PLSQ;执行SQL语句:
create or replace library ST_SHAPELIB as 'D:\Oracle\product\12.1.0\dbhome_1\BIN\st_shapelib.dll';
alter package sde.st_geometry_shapelib_pkg compile reuse settings;
执行完前后都可以通过SQL语句查看一下键值的内容:select * from user_libraries;
5、验证:
select sde.st_astext(shape) from 表名 where 条件;
例如:select sde.st_astext(shape) from RES_BUD_PY_G_CLIP where objectid < 3;
OK,若你也看到上图类似内容,恭喜你,大功告成!
写在后面的话:st_geometry.dll文件不一定要拷贝到oracle服务端安装目录的bin目录下,只要保证st_geometry.dll的存放目录没有空格,没有括号等特殊字符即可。但是为了方便管理和记录,建议还是放在%ORACLE_HOME%/bin目录下。