中文

漏洞:安装某些 Oracle 关键修补程序更新 (CPU) 后,ArcGIS 无法连接到 Oracle 数据库

说明

在某些情况下,安装某些版本的 Oracle 或者安装某些 Oracle 关键修补程序更新 (CPU) 后,ArcGIS 无法连接到 Oracle。 在尝试建立连接时,ArcGIS 连接可能停止响应,由此导致错误或崩溃。
在 Oracle 12.1.0.2 版本中会遇到此行为,并且第一个报告此行为的 CPU 是 2014 年 10 月修补程序。 此漏洞适用于所有连接到 Oracle 实例(具有已应用的 Oracle 权限更改)的 ArcGIS 版本。 此漏洞同样适用于连接到 Oracle 实例(具有或不具有地理数据库)和/或使用 ArcSDE Application Server Services 的 ArcGIS 客户端。

原因

Oracle dbms_utility 包的子程序“get_parameter_value”将返回以下错误:

错误: ORA-01031:权限不足。

在创建与 Oracle 数据库的连接以获取数据库参数“open_cursors”值时,ArcGIS 软件将调用此子程序。 该值为必填项,用于确保与 Oracle 实例一起使用的 ArcGIS 会话不超过该会话内可用的最大游标数。
对于频繁执行的 SQL 语句,ArcGIS 将保持游标打开,以提高性能和可扩展性。 安装关键修补程序更新后引入的此问题的影响是它会阻止 ArcGIS 成功建立连接。
有关 Oracle 关键修补程序更新公告的附加信息,请访问 Oracle 网站

解决办法

作为替代解决方法,系统管理员可以将 SELECT_CATALOG_ROLE 授予每位使用 ArcGIS 访问 Oracle 实例的用户。
Esri 联系了 Oracle 技术支持中心 (Oracle SR 3-9775575171),并验证了有关 PUBLIC 角色的权限更改已纳入其某些版本和 CPU 中。 根据 Oracle 的说明,要确保 ArcGIS 应用程序能够成功连接到 Oracle 实例,建议向每位用户或公共角色明确授予 v$parameter 视图上的 SELECT 权限。
在 SQL*Plus 中以 SYS 用户身份进行连接,然后将 v_$parameter 表上的 SELECT 权限授予每位授权用户或 PUBLIC 角色。

SQL> GRANT SELECT ON v_$parameter TO PUBLIC;

解决方案
在安装 Oracle 关键修补程序更新 (CPU) 后,如果遇到建立连接的问题,请验证是否已安装相应的 ArcGIS Esri 修补程序。 ArcGIS 'Oracle Critical Patch Update - October 2014' Connection Issue Patch 不需要高级系统权限,即可允许用户创建 Oracle 数据库连接。
有关在地理数据库内设置 open_cursors 参数以匹配在 Oracle 数据库连接的 Oracle 初始化参数中设置的内容的详细信息,请参阅操作方法:为 Oracle 配置地理数据库 open_cursors server_config 参数

相关信息

上次修改时间 : 11/4/2020

文章 ID: 000012229

Software: ArcMap 10.8.1, 10.8, 10.7.1, 10.7, 10.6.1, 10.6, 10.5.1, 10.5, 10.4.1, 10.4, 10.3.1, 10.3, 10.2.2, 10.2.1, 10.2, 10.1, 10