在ORACLE 去存储 GT_GEOMETRY 的时候出现了 ORA-28595: Extproc agent : Invalid DLL Path。查询到如下解决方式(按下面步骤改变相应路径即可):
Oracle Net Services to use ST_Geometry SQL functions:
在Oracle中使用ST_Geometry的SQL functions可以实现使用通过Sql语句来操作和维护空间数据的功能,所以在一些不想按照AO类库通过AO接口来操作空间数据的地方,这个会很有用,从性能和架构的考虑上,这个也是很有必要的考虑。但按照完SDE,即使通过ArcGIS Desktop可以正常对空间数据库进行访问、修改都是可以的。但一运行报找不到外部程序的错误,错误如下:
Windows系统:
ORA-28595: Extproc agent : Invalid DLL Path.
非Windows系统:
ORA-06520: PL/SQL: Error loading external library
ORA-06522: 0509-022 Cannot load module
/home/sde/sdeexe93/lib/libst_shapelib_64.so.
0509-150 Dependent module libsg_64.so could not be loaded.
0509-022 Cannot load module libsg_64.so.
0509-026 System error: A file or directory in the path name does not exist.
0509-022 Cannot load module /home/sde/sdeexe93/lib/libst_shapelib_64.so.
0509-150 Dependent module /home/sde/sdeexe93/lib/libst_shapelib_64.so could
not be loaded.
原因:
要使用Oracle中ST_Geometry这种空间存储类型的SQL functions,它是通过扩展oracle的external procedure agent或者extproc来实现的。因此需要在Oracle监听中添加外部程序的路径。修改listener.ora和tnsnames.ora如下:
listener.ora
windows:
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = vmserver)(PORT = 1521))
)
)
)
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = PLSExtProc)
(ORACLE_HOME = C:\oracle\ora92)
(ENVS="EXTPROC_DLLS=C:\ArcSDE\sdeexe93\bin\st_shapelib.dll,PATH=C:\ArcSDE\sdeexe93")(添加的环境变量,记得一定不要忘了PATH环境变量)
(PROGRAM = extproc)
)
(SID_DESC =
(GLOBAL_DBNAME = orcl)
(ORACLE_HOME = C:\oracle\ora92)
非windows:
有关ENVS ESRI帮助上的说明:This is a list of environment variables that the extproc uses when it runs. The list is: delimited. This list must include a definition of the environment variable EXTPROC_DLLS (see below) and any other environment variable the extproc needs when it runs, often including LD_LIBRARY_PATH, SHLIB_PATH, or LIBPATH on UNIX and Linux systems or PATH on Windows servers. The path variable often includes the location of the Geometry and Projection Engine libraries.
(ENVS = "EXTPROC_DLLS=/home/sde/sdeexe93/lib/libst_shapelib_64.so", LIBPATH= /home/sde/sdeexe93/lib)
提醒:千万不要忘了后面那个Lib的环境变量。
tnsnames.ora
EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)
两个文件添加过程中,要保证KEY值是一样的!
修改完成后需要重启监听,在命令行输入Lsnrctl stop , Lsnrctl start .
PS: (ENVS = EXTPROC_DLLS=ANY) 也可以。具体看下面的描述。
he optional keywords ANY and ONLY can be used to loosen or restrict the way the extproc uses library files. If you preface the path with ANY, Oracle can load any libraries from the specified path and you don't have to provide a library name. If you preface the path with ONLY, Oracle will only use the specific library you provide in the path.
还有:Linux,Unix下要把$SDEHOME/lib目录添加到oracle用户下的.profile或者.bash_profile的相关环境变量中。
分享到:
相关推荐
ora-01033:oracle initialization or shutdown in progress 解决方法 ora-01033:oracle initialization or shutdown in progress 解决方法 ora-01033:oracle initialization or shutdown in progress 解决方法 ora-...
在运行查询SELECT * FROM V$SESSION 会出现ORA-29275:部分多字节字符的错误,这是什么原因开始我不得其解,网上也没有介绍什么好办法。本文给出答案。
ORA-12154: TNS: 无法解析指定的连接标识符的解决方法
ORA-32001:write to spfile requested but no spfile is in use请求写入spfile,但没有使用spfile的解决方法 在输入以下语句中报了这样的错误: SQL>alter system set control_files=’/u01/app/oracle/oradata/prod/...
ORA-00031:标记要终止的会话解决方案; ORA-00031:标记要终止的会话解决方案;
ORA-01036:非法的变量名/编号 oracle特有的错误
调整参数后引起,ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 3 2768M 的解决方案
oracle12c程序连接时异常: ORA-01017: 用户名/口令无效; 登录被拒绝 的解决方案。
oracle 12 c ORA-01017: 用户名/口令无效; 登录被拒绝
NULL 博文链接:https://3w1h.iteye.com/blog/1211779
-- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... -- 解决ORA-00904: "WMSYS"."WM_CONCAT": 标识符无效 的文件包....... ...
oracle报错ora-12541:TNS无监听程序
解决ORACLE TNS: 无法解析指定的连接标识符; 里面有步骤
oracle19c缺少的函数
最近在工作中遇到了一个问题,错误是Oracle dbca时报错:ORA-12547: TNS:lost contact,通过查找相关的资料终于找到了解决的方法,下面分享给大家,话不多说了,来一起看看详细的介绍吧。 环境: OS:RHEL6.5 x86-...
错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...
ora-12514:TNS:监听程序当前无法识别连接描述符中请求的服务bug,解决文档.
CLOB字段类型报错 ORA-01704:文字字符串过长的解决
ORA-12541 TNSno listener 的解决方案 ORA-12541 TNSno listener 的解决方案
NULL 博文链接:https://springlin.iteye.com/blog/1520668