Skip to main content

从 ArcGIS 连接到 Oracle

要发布引用 Oracle 数据库中数据的 ArcGIS Server Web 服务,请完成以下操作:

安装 Oracle 客户端软件

Oracle 客户端软件必须安装在您将发布到的 ArcGIS Server 站点上的所有计算机上。 如果您没有在运行 ArcGIS 客户端的计算机上安装软件的权限,则需要请求 IT 部门为您安装并配置 Oracle 客户端。

请安装与需要连接到的数据库版本兼容的 Oracle 客户端应用程序版本。

您可以按照 Oracle 文档中的说明,从 Oracle 处获取 Oracle Instant、Runtime 或 Administrator Client 并安装在客户端计算机上。

可以使用下表中的信息来确定适用的 Oracle 客户端配置:

安装组合

要使用的配置

ArcGIS Server(单机站点)和 Oracle 安装在一台服务器上;ArcGIS Pro 安装在其他计算机上。

在所有 ArcGIS Pro 计算机上安装 64 位 Oracle 客户端,并将 PATH 变量设置为 Oracle 客户端主目录。

无需在服务器上安装 Oracle 客户端,因为要连接的文件已随 Oracle 数据库管理系统一并安装。 确保 LD_LIBRARY_PATH (Linux) 或 PATH (Microsoft Windows) 系统变量已设置为 Oracle 主目录。

如果为 Oracle 客户端设置了一个 tnsname,那么在 ArcGIS Server 计算机和 ArcGIS Pro 计算机上也必须使用相同的名称。

ArcGIS Server 安装在独立于 DBMS 的一台或多台计算机上。 ArcGIS Pro 安装在与 Oracle 和 ArcGIS Server 分开的计算机上。

在所有 ArcGIS Pro 计算机上安装 64 位 Oracle 客户端,并将 PATH 变量设置为 Oracle 客户端主目录。

在所有 ArcGIS Server 计算机上安装 64 位 Oracle 客户端,并确保将 PATH (Windows) 或 LD_LIBRARY_PATH (Linux) 系统变量设置为 Oracle 客户端主目录。

如果为 Oracle 客户端设置了一个 tnsname,那么在 ArcGIS Server 计算机和 ArcGIS Pro 计算机上也必须使用相同的名称。

ArcGIS Server 和 ArcGIS Pro 安装在一台服务器上;Oracle 安装在其他服务器上。

在所有 ArcGIS Server 计算机中安装 64 位 Oracle 客户端。 ArcGIS Server 和 ArcGIS Pro 都将使用此客户端。

将 PATH 系统变量设置为 Oracle 客户端主目录。

ArcGIS Server、ArcGIS Pro 和 Oracle 都安装在同一台计算机上。

ArcGIS Server 和 ArcGIS Pro 将使用随 Oracle 数据库管理系统一同安装的 64 位客户端文件进行连接。

将 PATH 变量设置为 Oracle 客户端主目录。

如果您的 ArcGIS Server 站点中还包括其他服务器,请在站点中的每台服务器上安装 64 位 Oracle 客户端,并将 PATH 变量设置为 Oracle 客户端主目录。

设置 LD_LIBRARY_PATH 环境变量(仅适用于 Oracle Administrator、Developer 或 Runtime 客户端)

如果您已安装 Oracle Administrator、Developer 或 Runtime 客户端,将 LD_LIBRARY_PATH 系统变量设置为 Oracle 客户端主目录。

如果您已安装 Oracle Instant 客户端,则需要在 init_user_param.sh 脚本中设置 LD_LIBRARY_PATH 变量。

更改 init_user_param.sh 脚本

在安装数据库客户端文件后,更改与 ArcGIS Server 一同安装的 init_user_param.sh 脚本以引用客户端文件。 可通过浏览至 <ArcGIS Server installation directory>/arcgis/server/usr 目录访问该脚本。

您必须更新 ArcGIS Server 站点中每台计算机上的 init_user_param.sh

注:

如果用户配置文件引用了 Oracle 客户端,并且用户配置文件和 init_user_param.sh 的客户端信息不同,则 ArcGIS Server 在尝试与数据库连接时可能会出现问题。 要解决连接问题,可从用户配置文件中移除参考信息,然后使用以下步骤再次引用数据库客户端库:

  1. 请确保每台计算机的 ArcGIS Server 安装程序所有者至少具有在数据库客户端库中读取和执行的权限。

  2. 在文本编辑器中打开 init_user_param.sh 脚本。

  3. 移除以 export 开头的行中的注释标记 (#)。

    如果安装了 Oracle Administrator、Developer 或 Runtime 客户端,请删除以 export 开头的所有 Oracle 行中的注释标记。

    #
    # For connection with Oracle Runtime or Administrator Client
    #
    export ORACLE_BASE=<Oracle_Installdir>/app
    export ORACLE_HOME=$ORACLE_BASE/<Oracle_release>/product/<Oracle_version>/<client_version>
    export ORACLE_SID=<set when applicable>
    export TNS_ADMIN=<set when applicable. e.g.$ORACLE_HOME/network/admin>
    export PATH=$ORACLE_HOME/bin:$PATH
    export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH
    

    如果使用 Oracle 数据库 Instant 客户端库,您只需取消注释并设置 $LD_LIBRARY_PATH,例如:

    #
    # For connection with Oracle Instant Client
    #
    export LD_LIBRARY_PATH=<Location_to_instantclient_11_2>:$LD_LIBRARY_PATH
    
  4. 设置导出变量的值。

    • 对于 Oracle Administrator、Developer 或 Runtime 客户端,取消注释并使用适合您个人安装情况的特定信息设置以下变量:

      • ORACLE_BASE=<Oracle_Installdir>

      <Oracle_Installdir> 是安装了 Oracle 客户端的顶级目录的路径和名称。

      • ORACLE_HOME=$ORACLE_BASE/<Oracle_Release>/product/<Oracle_Version>/client_1

        这是 Oracle 客户端库文件的路径。 将 ORACLE_HOME 设置为这些文件所在的目录。 默认情况下,目录名称为 client_1,但您的安装可能具有不同的目录名称。

      • 如果要使用 Oracle 系统 ID (SID) 进行连接,请将 ORACLE_SID= 设置为数据库的 Oracle 系统 ID。 如果要使用 Easy Connect 字符串进行连接,则注释掉此行。

      • TNS_ADMIN= 设置为 Oracle 客户端 TNS 管理文件的位置。 如果要使用 Easy Connect 字符串进行连接,则无需设置此值,但必须注释掉此行。

    • 对于 Oracle Instant Client,取消注释并仅设置 LD_LIBRARY_PATH 变量,将 <Location_to_instantclient> 替换为 Oracle Instant Client 文件所在的目录路径和名称。

    • 如果 ArcGIS Server 和 Oracle 安装在同一台服务器上,则取消注释并设置以下变量:

      • ORACLE_BASE=<Oracle_Installdir>

      <Oracle_Installdir> 是安装了 Oracle 的顶级目录的路径和名称。

      • ORACLE_HOME=$ORACLE_BASE/<Oracle_Release>/product/<Oracle_Version>/client_1

        这是 Oracle 库文件的路径。 将 ORACLE_HOME 设置为这些文件所在的目录。 默认情况下,目录名称为 db_,但您的安装可能具有不同的目录名称。

      • 如果要使用 Oracle 系统 ID (SID) 进行连接,请将 ORACLE_SID= 设置为数据库的 Oracle 系统 ID。 如果要使用 Easy Connect 字符串进行连接,则注释掉此行。

      • TNS_ADMIN= 设置为 Oracle 客户端 TNS 管理文件的位置。 如果要使用 Easy Connect 字符串进行连接,则无需设置此值,但必须注释掉此行。

  5. 保存并关闭脚本。

  6. 要使在 init_user_param.sh 文件中进行的更改生效,必须重新启动 ArcGIS Server。

    为此,先后在 ArcGIS Server 站点的每台计算机上运行 stopserver.sh 脚本和 startserver.sh 脚本。

    ./stopserver.sh

    ./startserver.sh

设置 PATH 环境变量(仅适用于 Windows)

将每个 ArcGIS Server Windows 服务器上的 PATH 环境变量设置为 Oracle 客户端安装位置。 有关设置 PATH 环境变量的说明,请参阅 Microsoft Windows 文档。

如果在配置 Oracle 客户端和设置 PATH 变量前正在运行 ArcGIS Server,则必须重新启动 ArcGIS Server。 您可以从 Windows 的服务界面重新启动 ArcGIS Server。

创建数据库连接

您必须有数据库连接(.sde 文件),用于对数据库的连接进行身份验证。

可以在需要连接数据库的 ArcGIS Server 站点中的某台计算机上调用 ArcPy CreateDatabaseConnection 函数。 有关运行此函数的信息,请参阅 ArcGIS Pro 帮助中的创建数据库连接

以下信息专用于创建数据库连接文件,以用于 ArcGIS Server。

  • 您必须将用户信息与连接文件一起保存。

  • 如果您选择使用操作系统身份验证,则使用域账户作为 ArcGIS Server 账户并将域账户添加到 Oracle 数据库。

  • 如果您使用 TNS 连接,请确保在 ArcGIS Server 站点中的所有计算机以及您发布的 ArcGIS Pro 客户端上的 tnsnames.ora 文件中使用相同的网络服务名称。

授予权限

必须在数据库中授予连接到数据库时所用的数据库用户、角色或 ArcGIS Server 账户(在使用操作系统身份验证的情况下)访问要发布的数据的权限。 具体权限以及需要授予这些权限的情况如下:

权限

原因

CREATE SESSION

需要连接到数据库。

CREATE TABLE

选择集将导致在地理数据库中创建一个日志文件表。 如果用户没有此权限,则将在 sde 用户方案中创建日志文件表。

待发布数据集的 SELECT

至少授予用户或 ArcGIS 账户对待发布的数据集的 SELECT 权限

发布到可编辑要素服务的数据的 INSERTUPDATEDELETE 权限

要通过要素服务编辑数据,必须授予对数据库中数据集进行编辑所需的足够权限

数据库管理员必须授予上面列出的前两个权限。 如果数据位于地理数据库中,则数据所有者必须授予数据集所需的权限。 如果数据位于数据库中,则数据所有者可以从 ArcGIS 授予数据集权限,或者数据库管理员可以使用数据库工具授予所需的权限。

有关详细信息,请参阅 Oracle 地理数据库权限ArcGIS 中使用 Oracle 数据库的权限

注册连接文件

要允许 ArcGIS Server 站点访问数据,请使用已创建的数据库连接文件在 ArcGIS Pro 中添加已注册的数据存储在门户中添加数据存储项目