linux Oracle sde 外部包安裝 ora-28595 的解決

用sql 在oracle 中操做空間表的時候報錯入下:linux

以上提示說明是依賴的sde包引用無效,經過查詢官網爲oracle數據庫配置了sde包,設置過程在此記錄一下:web

  1. 登錄sde用戶執行sql

    select * from user_libraries where library_name = 'ST_SHAPELIB';

    結果以下:明顯對應路徑是中引入的 st_shapelib.dll  文件是不存在的shell

2.在linux上新建文件夾,從arcdesktop 的安裝目錄找到 ......\DatabaseSupport\Oracle\Linux64 拷貝 libst_shapelib.so 過去並賦予權限數據庫

 mkdir sde_linux
 mkdir oracle
 chmod 777 libst_shapelib.so

3.更改外部庫到指定so文件位置,登錄sde用戶,執行oracle

 create or replace library st_shapelib as '/oracle/sde_linux/oracle/libst_shapelib.so';

以上的路徑爲你本身的libst_shapelib.so文件的所在路徑app

4.配置環境變量spa

 lstener.ora 文件添加(根據本身狀況修改ORACLE_HOME 和ENVS 路徑)
 
  SID_LIST_LISTENER =
        (SID_LIST =
                (SID_DESC =
                (ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
                (SID_NAME = PLSExtProc)
  (PROGRAM = extproc)
                    (ENVS="EXTPROC_DLLS=/oracle/sde_linux/oracle/libst_shapelib.so")
                )
        )

 tnsnames.ora 添加如下內容
 
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(Key =  EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = PLSExtProc)
      (PRESENTATION = RO)
    )
)

注意事項: 這兩個文件的SID、SID_NAME 要相等 ,另外tnsnames.ora 中的Key 也要和listener.ora 中的Key 要相等。code

5.重啓監聽和服務orm

 su - oracle
  lsnrctl stop
  lsnrctl start
  sqlplus /nolog
  conn /as sysdba
  shutdown immediate
  startup

完成以上操做後就能夠在oracle中用sql語句更新arcgis空間表了

執行:

SELECT registration_id FROM sde.table_registry WHERE table_name = 'TXT_TEST01' and owner = 'ARCGIS';
 
INSERT INTO TXT_TEST01 (OBJECTID,FIELD_0,SHAPE) VALUES(sde.version_user_ddl.next_row_id('ARCGIS', 121),  'TRANQUIL', sde.ST_GEOMETRY('point (119.001824881 25.436934541)',300000) );

添加成功!end

附上官網連接:http://resources.arcgis.com/en/help/main/10.2/#/Configuring_the_Oracle_listener_to_use_ST_Geometry_and_ST_Raster/006z0000001w000000/

相關文章
相關標籤/搜索