問題描述:
在GIS系統中保存或者空間查詢等與空間數據有關的操作過程中有時會出現如下問題:提示代理DLL路徑無效;
如果出現上述問題,按如下步驟嘗試解決:
1:用sde用戶登入Oracle,運行如下語句:
select * from user_libraries;
查看是否有”ArcGIS\ArcSDE\ora11gexe\bin\st_shapelib.dll “的一行數據,即有SDE相關的DLL引用;
---------------------------------------------------------------------------------------------------------------------------------
如有則進行如下操作:
1)找到oracle數據庫的安裝目錄下的監聽配置文件:listener.ora文件,路徑地址一般在如:product\11.2.0\dbhome_1\NETWORK\ADMIN類似目錄下;(先備份監聽配置文件listener.ora)
2)打開監聽配置文件,找到 (PROGRAM = extproc) 這一行,在這行下面添加對ST_SHAPELIB的引用,即指定ST_SHAPELIB的地址,如下:
(ENVS="EXTPROC_DLLS=C:\ProgramFiles\ArcGIS\ArcSDE\ora10gexe\bin\st_shapelib.dll")
其中“C:\ProgramFiles\ArcGIS\ArcSDE\ora10gexe\bin\st_shapelib.dll”爲ST_SHAPELIB的物理路徑,可以根據安裝情況自己修改。(指定的地址必須與上面語句查詢到的dll路徑一致)
3)保存listener.ora文件,重新啓動監聽程序。
---------------------------------------------------------------------------------------------------------------------------------
如沒有則進行如下操作(還是在sde用戶下):
1:在SDE安裝目錄的bin目錄下找到:st_shapelib.dll,pe.dll,sg.dll這三個dll,拷貝到Oracle的安裝目錄下,如”D:\Oracle\product\11.2.0\dbhome_1\BIN”下,此外還需要設置對這三個文件的讀寫權限操作。
2:在sde用戶下運行如下兩條語句(使用命令窗口運行):
1):
create or replace library ST_SHAPELIB as 'D:\Oracle\product\11.2.0\dbhome_1\BIN\st_shapelib.dll';
2):
alter package sde.st_geometry_shapelib_pkg compile reuse settings;
注:as後面的地址爲步驟1下的三個dll放置的目錄;
3:修改監聽配置文件listener.ora中的(ENVS="EXTPROC_DLLS=C:\ProgramFiles\ArcGIS\ArcSDE\ora10gexe\bin\st_shapelib.dll")一行,設置爲“EXTPROC_DLLS=ANY”;(注意備份)
4:保存listener.ora文件,重新啓動監聽程序。