天天看點

Oracle空間查詢 ORA-28595錯誤解決參考

可使用資料庫管理系統 (DBMS) 的結構化查詢語言 (SQL)、資料類型和表格式來處理地理資料庫或安裝了 ST_Geometry 類型的資料庫中所存儲的資訊。

例如,在ArcMap中我們使用"相交"工具進行空間操作;ArcObject接口裡用ITopologicalOperator.Intersect來實作。現在,我們可以脫離接口,實作資料的空間操作,從性能和架構的角度來說,這值得深入研究。在Sql Server中用STIntersects方法,在Oracle中使用SDO_FILTER(注意這裡不叫SDO_Intersects哈),在ArcGIS中用sde.st_intersects方法。

為了友善重用,我們使用了ArcGIS中的方法。但遇到一個配置錯誤!

執行ST_Geometry

"ERROR at line 1:

ORA-28595: Extproc agent : Invalid DLL Path

ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 170

ORA-06512: at "SDE.ST_RELATION_OPERATORS", line 303"

即文法沒有錯誤,隻是不能調用DLL,在 Oracle 中,ST_Geometry 和 ST_Raster 的 SQL 函數使用通過 Oracle 的外部過程代理(即 extproc)通路的共享庫。Oracle 必須能夠通路這些庫。是以,這些庫必須存在于 Oracle 伺服器上,并且必須通過 Oracle 的外部過程架構調用它們。

顯示是沒找到這個些dll,按照官網的解決方法,總是啟動不了oracle監聽服務。

<a href="http://resources.arcgis.com/zh-cn/help/main/10.1/index.html">配置 Oracle extproc 以使用 SQL 通路地理資料庫</a>

1.找到dll,其實它依靠兩個dll,一是st_shapelib.dll,ST_Geometry的庫,二是libst_raster_ora.dll,ST_Raster的庫。它們的路徑位于:

ArcSDE下的路徑:

  

ArcDeskop下的路徑

2.建立環境變量:建立一個系統環境變量

變量名:EXTPROC_DLLS

變量值:兩個dll的全路徑,中間用分号隔開,如C:\sdedll\st_shapelib.dll;C:\sdedll\libst_raster_ora.dll

(這裡是将兩個dll添加到建立的sdedll檔案夾中的,因為伺服器上可能沒有安裝sde伺服器)

Oracle空間查詢 ORA-28595錯誤解決參考

3.重新開機服務:重新啟動oracle監聽服務OracleOraDb10g_home1TNSListener

<a href="http://support.esri.com/technical-article/000009074">http://support.esri.com/technical-article/000009074</a>

<a href="http://p385579058.iteye.com/blog/1042187">http://p385579058.iteye.com/blog/1042187</a>

<a href="http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/006z0000001w000000/">http://resources.arcgis.com/zh-cn/help/main/10.1/index.html#/na/006z0000001w000000/</a>