在不同服务器上安装 Oracle 和 ArcSDE
如果要在没有 Oracle 的其他服务器上安装 ArcSDE 应用程序服务器,则要建立地理数据库,还必须完成一些其他步骤。这些步骤包括在 ArcSDE 服务器上安装和配置 Oracle 客户端,将共享库从 ArcSDE 服务器复制到 Oracle 服务器,配置 EXTPROC 查找库,在 ArcSDE 服务器上设置 TWO_TASK 或 LOCAL 环境变量。
- 确保已在服务器上安装 Oracle 并且正在运行。
- 根据主题在 Linux 或 UNIX 上安装 ArcSDE for Oracle 或在 Windows 上安装 ArcSDE for Oracle 所述,在 ArcSDE 服务器上安装 ArcSDE。
- 在安装有 ArcSDE 的服务器上安装 Oracle 客户端软件,并对其进行配置以连接到 Oracle 数据库。
- 确保您可使用 SQL 从客户端服务器访问远程 Oracle 数据库。
- 配置 Oracle 数据库,如有必要添加 sde 用户并为 Linux 或 UNIX 中的 sde OS 用户设置变量。
-
将 EXTPROC 使用的 st_shape 共享库复制到 Oracle 服务器。如果要使用 ST_Raster 存储类型,也需要将 libst_raster_ora 共享库复制到 Oracle 服务器。这些文件的确切名称因所使用操作系统 (OS) 的不同而异。表 1 列出了各个受支持的 OS 对应的文件的完整名称。
确保被复制到 Oracle 服务器的文件可以在 Oracle 服务器的操作系统上运行。例如,如果 ArcSDE 安装在 Linux 计算机上,但 Oracle 安装在 Solaris 计算机上,则被复制到 Oracle 服务器的库文件必须可在 Solaris 上运行。要获取其他操作系统的文件,可在 Oracle 服务器上安装 ArcSDE 组件的软件文件,这将创建 SDEHOME 文件,然后删除所需库文件以外的所有其他文件。
或者,如果 Oracle 数据库安装在 Windows 服务器上,则可复制 ArcGIS Desktop 的 bin 目录下的库。需要确保 ArcGIS Desktop 的版本与所用 ArcSDE 版本相同。
表 1库名称
与 OS 相关的文件名称 ST_Shape
st_shapelib.dll (Windows)、libst_shapelib.so(Solaris、Linux 和 HP-UX Itanium)或 libst_shapelib_64.so (IBM)
ST_Raster
注:ST_Raster 安装为可选操作。如果要使用此类型,则请参阅在 Oracle 中安装 ST_Raster 类型以了解相关说明。
libst_raster_ora.dll (Windows)、libst_raster_ora.so(Solaris、Linux 和 HP-UX Itanium)或 libst_raster_ora_64.so (IBM)
安装 ArcSDE 后,可在 SDEHOME 的 bin (Windows) 或 lib (UNIX/Linux) 目录下找到这些文件。可将这些文件复制到 Oracle 服务器上的 ORACLE_HOME\bin (Windows) 或 ORACLE_HOME/bin (UNIX/Linux) 目录下(这是 Oracle 搜索共享库的默认位置)。还可将这些文件移动到拥有 ORACLE_HOME 的用户可访问的任何目录下。
-
以 ArcSDE 管理用户(sde 用户)身份,使用以下 SQL 命令为这些 ArcSDE 库创建 Oracle 库条目。
对于 Windows 服务器,用库路径替换 <full_path>,然后执行以下命令:
CREATE OR REPLACE LIBRARY st_shapelib AS '<full_path>\st_shapelib.dll' CREATE OR REPLACE LIBRARY libst_raster AS '<full_path>\libst_raster_ora.dll'
对于 UNIX 或 Linux 服务器,用库路径替换 <full_path>,提供正确的库名称,然后执行以下命令:
CREATE OR REPLACE LIBRARY st_shapelib AS '<full_path>/libst_shapelib.so' CREATE OR REPLACE LIBRARY libst_raster AS '<full_path>/libst_raster_ora.so'
注:在各 UNIX 平台上,库的确切名称不同。有关所用操作系统的正确库名称,请参阅表 1。
-
对 Oracle EXTPROC 进行配置,使其能够查找 st_shapelib 和 libst_raster_ora 库。可在数据库服务器上的侦听器配置文件 listener.ora 和 tnsnames.ora 文件中完成此操作。
-
添加远程数据库服务器上 tnsnames.ora 中的以下条目:
EXTPROC_CONNECTION_DATA = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = IPC) (KEY = extproc) ) ) (CONNECT_DATA = (SID = PLSExtProc) (PRESENTATION = RO) ) )
-
将以下条目添加到远程数据库服务器上 listener.ora 中的 SID_LIST:
在 Windows 服务器上
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME =<ORACLE_HOME_PATH>) (PROGRAM = extproc) (ENVS="EXTPROC_DLLS=<full_lib_path>\st_shapelib.dll;<full_lib_path>\libst_raster_ora.dll") ) )
请注意,st_shapelib 和 libst_raster_ora 库对应的条目用分号进行分隔。
在 UNIX 或 Linux 服务器上
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME =<ORACLE_HOME_PATH>) (PROGRAM = extproc) (ENVS="EXTPROC_DLLS=<full_lib_path>/libst_shapelib.so:<full_lib_path>\libst_raster_ora.so,LD_LIBRARY_PATH=<full_lib_path>") ) )
注:路径变量(在此示例中显示为 LD_LIBRARY_PATH)因操作系统的不同而异。对于 HP-UX Itanium,此变量为 SHLIB_PATH。对于 IBM AIX,此变量为 LIBPATH。
而且,如上所述,库名称因操作系统的不同而异。请确保使用正确的库名称。
-
添加远程数据库服务器上 tnsnames.ora 中的以下条目:
- 重新启动 Oracle 侦听器。
- 请确保 sde 用户具有创建地理数据库所需的权限。
- 按照与各 OS 相关的主题中的描述执行 ArcSDE 安装后配置步骤。对于 Windows 服务器,请参阅在 Windows 上的 Oracle 中创建地理数据库和在 Windows 上的 Oracle 中授权 ArcSDE 地理数据库。对于 Linux 或 UNIX 服务器,请参阅在 Linux 或 UNIX 上的 Oracle 中创建地理数据库和在 Linux 或 UNIX 上的 Oracle 中授权 ArcSDE 地理数据库。
-
如果要使用 ArcSDE 服务连接到地理数据库,则对其进行设置。根据 ArcSDE 安装在的操作系统,请执行以下操作之一:
- 在 Windows 服务器上,无法使用“安装后配置”向导创建和启动服务。要创建远程服务,请参阅创建远程 Windows 服务器中的 ArcSDE 服务。有关启动服务的说明,请参阅启动 Windows 上的远程 ArcSDE 服务。
- 在 Linux 或 UNIX 服务器上,启动此服务。请参阅启动 Linux 或 UNIX 上的远程 ArcSDE 服务。
-
要想 ArcSDE 服务器上的 Oracle 客户端连接远程实例,必须将环境变量设置为通过网络服务名称识别远程 Oracle 实例。
- 如果 ArcSDE 服务器在 UNIX 或 Linux 上,将 TWO_TASK 设置为 $SDEHOME/etc/dbinit.sde 文件中的 Oracle 网络服务名称。还必须设置 ORACLE_HOME 变量。
- 如果 ArcSDE 服务器在 Windows 上,将 LOCAL 设置为 %SDEHOME%\etc\dbinit.sde 文件中的 Oracle 网络服务名称。
应使用 TWO_TASK 或 LOCAL 变量指定本地 Oracle 数据库的网络服务名称。但不建议这样做,因为这样做会在与数据库建立连接时引起额外的系统开销。对于本地连接,应使用 Oracle_SID。
- 如果 tnsnames.ora 文件没有存储在默认位置,则设置 TNS_ADMIN 变量。
更改库路径的定义将使引用库的包正文失效,因此应使用 Oracle 重新编译某些 ArcSDE 存储过程包的包正文。