SDE.ST_GEOMETRY_SHAPELIB_PKG问题处理
SDE.ST_GEOMETRY_SHAPELIB_PKG问题处理
安装环境:ArcGIS Desktop10.1 、ArcSDE10.2.134940、 Oracle11.2.0.1
操作系统:Red Hat Enterprise Linux Server release 7.4 (Maipo)
Red Hat Enterprise Linux Server release 6.8 (Santiago)
1、用SDE用户执行下面的创建语句:
create or replace library st_shapelib as '/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/libst_shapelib.so'
/
2、修改数据库配置文件
vi $ORACLE_HOME/hs/admin/extproc.ora
SET EXTPROC_DLLS=ANY
Or
ONLY: /home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/libst_shapelib.so
以SDE用户登录数据库,此后的操作以sde用户的身份运行
如果显示的libst_shapelib.so位置与实际路径不一致,所以需要执行以下语句重新指定路径,这个路径就是上面安装ARCSDE产生的。
SQL> create or replace library ST_SHAPELIB as '/home/oracle/app/oracle/product/11.2.0/dbhome_1/bin/libst_shapelib.so';
SQL> alter package sde.st_geometry_shapelib_pkg compile reuse settings;
另:windows环境下对应的是st_shapelib.dll
3、修改监听文件
listener.ora文件添加(黑体部分):
# listener.ora Network Configuration File: /home/oracle/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = /home/oracle/app/oracle/product/11.2.0/dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ANY")
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = presales2)(PORT = 1521))
)
)
ADR_BASE_LISTENER = /home/oracle/app/oracle
(Linux环境**意大小写,PROGRAM =extproc是小写的...)
tnsnames.ora文件添加(黑体部分):
# tnsnames.ora Network Configuration File: /u01/app/oracle/product/11.2.0/dbhome_1/network/admin/tnsnames.ora
# Generated by Oracle configuration tools.
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = lw-oracle)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
在listener.ora和tnsnames.ora,划红线部分中的KEY要求一致。如果KEY值不一致,会导致错误ORA-28575: unable to open RPC connection to external procedure agent
需要检查Oracle的监听是否监听IPC协议,如果没有监听,肯定会报ORA-28575错误。