準備工作:
首先當然是找到st_shapelib.dll或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目錄下。