执行ST_Geometry操作提示“ORA-06522: Unable to load symbol from DLL”

上次做实验,我的服务器中既安装了ArcSDE9.3又安装了ArcSDE9.3.1,而且由于测试另外一个问题,我又将ArcSDE9.3.1进行升级到SP2补丁,但是今天测试ST_Geometry的SQL操作,系统提示如下错误:

14:04:25 SQL> select sde.st_astext(t.shape) from AAA.streets t,AAA.str r where sde.st_intersects(t.shape,r.shape)=1;
ERROR:
ORA-29902: 执行 ODCIIndexStart() 例行程序中出错
ORA-06521: PL/SQL: 映射函数时出错
ORA-06522: Unable to load symbol from DLL
ORA-06512: 在 "SDE.ST_GEOMETRY_SHAPELIB_PKG", line 943
ORA-06512: 在 "SDE.SPX_UTIL", line 2901
ORA-06512: 在 "SDE.SPX_UTIL", line 3146
ORA-06512: 在 "SDE.ST_DOMAIN_METHODS", line 291


从错误上看,加载的Dll不对,因为我们都知道执行ST_Geometry的SQL操作不仅仅是执行st_shapelib.dll,而且还有pe.dll和sg.dll,那么我的数据库中又安装了这么多数据库,还打了补丁,经过好几番折腾,我们发现ArcSDE9.3.1的相关dll版本的修改日期竟然是2008年的,这肯定有问题的,再检查ArcSDE9.3安装目录的dll发现是2010年的,晕,补丁位置打错了............


那么以后遇到类似情况,特别是在比较多的数据库中

我们要查看相关dll版本是否一致,而且是否和数据库的版本是否一致,这时候我们首先查看数据库的版本

C:\Users\Administrator>sqlplus sde/sde@orcl931

SQL*Plus: Release 11.2.0.1.0 Production on 星期二 2月 21 15:03:44 2012

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select * from version;

     MAJOR      MINOR     BUGFIX
---------- ---------- ----------
DESCRIPTION
-------------------------------------------------------------------------------
   RELEASE SDESVR_REL_LOW
---------- --------------
         9          3          1
 for Oracle11g Build 3056 Fri Sep 10 09:41:17  2010

     93005          93001
时间为2010年9月10号

那么我们在往存储目录查看这三个dll的修改日期,这样才能保证版本的一致性

执行ST_Geometry操作提示“ORA-06522: Unable to load symbol from DLL”_第1张图片

所以说我的这个问题的症结所在就是,我的库是2010年9月10日  ArcSDE9.3.1 SP2 的数据库,但是我引用的相关的ST_Geometry的dll(或者说读取user_libraries)里面的路径并不是这个时间的dll,所以出现这个问题。

你可能感兴趣的:(sql,数据库,application,dll,oracle11g,2010)