用處:進行此配置后,可以用sql語言,與sde空間數據庫進行空間查詢,增刪改圖層的要素等
PS:同時也是解決 ORA-28595Extproc 代理 DLL 路徑無效 的方法
ORA-06512: 在 "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 70
ORA-06512: 在 "SDE.ST_GEOMETRY_OPERATORS", line 68
注意:當arcgis版本為10.4(以上也可能是,具體看官網文檔)時,需要安裝vc++ 2013 64位運行環境,依據為esri官方文檔
在SDE的安裝目錄找到如下文件:C:\Program Files\ArcGIS\ArcSDE\ora11gexe\bin\st_shapelib.dll
PS:arcgis 10.3或更新版本,沒有了sde產品的安裝包(也就沒sde安裝目錄),那st_shapelib.dll可以在arcgis desktop或arcgis server的安裝目錄下找到(具體文件所在位置自行搜索)
復制到oracle的目錄下
D:\app\Administrator\product\11.2.0\dbhome_1\BIN
用sde用戶登錄plsql
執行sql
create or replace library ST_SHAPELIB as 'D:\app\Administrator\product\11.2.0\dbhome_1\BIN\st_shapelib.dll';
其中dll的文件路徑要改一下,改成上一步復制后的文件路徑
再執行
alter package sde.st_geometry_shapelib_pkg compile reuse settings;
用SDE用戶登錄plsql,能看到如下兩個對象則說明成功
PS:有時執行完上述兩句sql后,圖標有個紅色X
此時只要recompile就行
以下開始補充在linux 服務端的配置:
某次項目的情況,sde(oracle版)服務端是linux系統,其他環境為:arcgis 10.7,oracle12c R2
Linux與win的不同在於拷st_shapelib文件的位置不同,其他還是參考win版的方法
st_shapelib文件在arcmap 10.7的位置(只有64位,不用考慮位數問題了)
libst_shapelib.so相當於win版的st_shapelib.dll文件,然后其他操作都是一樣的
PS:我們用於配置的plsql可以在客戶端(跟服務端不是一台機器),但是libst_shapelib.so文件路徑依然是服務端的本地路徑,因為調用libst_shapelib.so還是在服務端調用,所以不用考慮為什么客戶端里配服務端本地路徑的問題