中文

常见问题解答:何时需要更改 st_shapelib.dll 的 Oracle 库?

问题

常见问题解答:何时需要更改 st_shapelib.dll 的 Oracle 库?

答案

该库是 Oracle 通过外部进程查找 st_geometry 函数和运算符所使用的外部 .dll 文件的路径。

要确定 st_shapelib 库在 Oracle 中的当前位置,请在 SQL*Plus 中以 SDE 用户身份执行以下 SQL 语句:

代码:
SQL> SELECT library_name, file_spec FROM user_libraries;

LIBRARY_NAME FILE_SPEC
------------ --------------------------------------------
ST_SHAPELIB D:\ESRI\ArcSDE\ora10gexe\bin\st_shapelib.dll

file_spec 的值必须与服务器上的 st_shapelib.dll 的物理文件位置匹配。 如果不匹配,则 st_geometry 运算符和函数将无法执行。

如果出于任何原因必须更改库的路径(例如管理员移动 SDEHOME 的文件位置,或者从 st_shapelib.dll 路径不同的另一个实例导入 Oracle 导出文件),那么必须更新库的规范以匹配 st_shapelib.dll 的正确位置。

在执行 st_geometry 函数或运算符时,如果系统提示以下错误消息,则可能是在指示需要更新库的位置(错误表明指定库位置的值可能无效)。

代码:
SQL> SELECT sde.st_astext(shape) FROM sewers WHERE objectid = 10;
错误:
ORA-06520:PL/SQL:加载外部库时出错
ORA-06522:无法加载 DLL
ORA-06512:位于“SDE.ST_GEOMETRY_SHAPELIB_PKG”,第 70 行
ORA-06512:位于“SDE.ST_GEOMETRY_OPERATORS”,第 68 行”

要解决此问题,请将文件目录设置为 st_shapelib.dll 所在的位置,从而以 SDE 用户的身份更新 SQL * Plus 中的库路径。

代码:
SQL> CREATE OR REPLACE LIBRARY st_shapelib
2 AS 'C:\Program Files\ESRI\ArcSDE\ora11gexe\bin\st_shapelib.dll';
3 /

已创建库。

创建库会导致从属对象变为无效。 Oracle 最佳做法建议您编译所有对象并使其处于有效状态。 要确保所有对象在 SDE 方案中有效,请以 SDE 用户身份执行以下命令:

代码:
EXECUTE sys.utl_recomp.recomp_serial('SDE');

PL/SQL 步骤成功完成。

验证所有对象是否有效。

代码:
SQL> SELECT object_name FROM user_objects WHERE status = 'INVALID';

未选择行


Related Information