环境:
Oracle 11.2.0.4x64 RAC + AIX6.1版本+SDE for aix oracle11g版本10.0 x64
sde配置情况如下:
检查oracle和grid用户下的$ORACLE_HOME/hs/admin/extproc.ora文件均包含有如下:
SET EXTPROC_DLLS=ANY
两个节点sde下的user_libraries都正常:
SQL> select * from user_libraries;
LIBRARY_NAME
------------------------------
FILE_SPEC
--------------------------------------------------------------------------------
D STATUS
- -------
ST_SHAPELIB
/db/product/11.2/db_1/lib/libst_shapelib_64.so
Y VALID
Grid下的listener.ora内容:
grid@zydb1:/grid/product/11.2/db_1/network/admin(lnzycs1)>more listener.ora
LISTENER=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER)))) # line added by Agent
LISTENER_SCAN1=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=IPC)(KEY=LISTENER_SCAN1)))) # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER_SCAN1=ON # line added by Agent
ENABLE_GLOBAL_DYNAMIC_ENDPOINT_LISTENER=ON # line added by Agent
grid@zydb1:/grid/product/11.2/db_1/network/admin(lnzycs1)>more sqlnet.ora
# sqlnet.ora.zydb1 Network Configuration File: /grid/product/11.2/db_1/network/admin/sqlnet.ora.zydb1
# Generated by Oracle configuration tools.
NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)
ADR_BASE = /grid/app
sqlnet.expire_time = 3
测试检查语句:
conn sde/sde
select object_name from user_objects where status='INVALID';
显示没有失效对象。
执行如下语句:
select sde.st_astext(shape) from manhole;
SELECT B.FLDID AS MANHOLEID, B.FLDCODE, A.名称 FROM sde.行政区划A,sde.tgx_manhole_gis B WHERE SDE.ST_Within(B.SHAPE, A.SHAPE)=1;
SELECT sde.st_linestring('LINESTRING(16621.5602000002 150232.4605,16844.6043999996 150130.066600001)','2') FROM dual;
报错如下:
ORA-28575
conn sde/sde
SELECT sde.st_linestring('LINESTRING(16621.5602000002 150232.4605,16844.6043999996 150130.066600001)','2') FROM dual
*
ERROR at line 1:
ORA-28575: unable to open RPC connection to external procedure agent
ORA-06512: at "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 12
ORA-06512: at "SDE.ST_LINESTRING", line 58
Oracle Cluster都重启过,报错依然。
root用户执行:
/grid/product/11.2/db_1/bin/crsctl stop cluster -all
/grid/product/11.2/db_1/bin/crsctl start cluster –all
尝试过的操作:
1. lnzycs库正常安装sde服务创建sde对象schema,然后通过catalog导入表,执行检查上面sql,报上面报错。
2.从linux测试数据库采用exp/imp的方式导入到lnzycs库,执行检查上面sql,报错一样。
3.比较奇怪的是,在该操作系统,存储,veritas等重做之前sde执行完全正常,而前后安装的软件版本方法都是相同的,但现在却报这种错误。实在查不出哪里的配置有问题。
解决问题:
发现是Tnsnames.ora配置有问题。
安装环境:
ORACLE 11.2.0.4 RAC+AIX6100-09-03-1415+SDE10.0
说明:
正常安装完oracle cluster和database后,然后安装sde对象,只需要指定libst_shapelib_64.so即可,
listener.ora以及是否拷贝.so到$ORACLE_HOME/lib等都不需要修改。需要注意tnsnames.ora的配置,
去掉如下内容:
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
11g环境下唯一只需要的操作如下:
conn sde/sde
CREATE or REPLACE LIBRARY ST_SHAPELIB AS '/orasys/sde/libst_shapelib_64.so';
检查:cat /db/product/11.2/db_1/hs/admin/extproc.ora
SET EXTPROC_DLLS=ANY