Subject: "GRANT SELECT ANY DICTIONARY" Privilege Required When Connecting from 9i OEM console to 10

本文档描述了使用9i Oracle Enterprise Manager (OEM) 控制台连接10g数据库时遇到的问题及解决方案。主要症状包括无法通过'SYSTEM'用户或'SYS'用户连接,并收到权限不足错误。解决办法是推荐使用Grid Control、Database Control或10g Java控制台进行监控。
Doc ID: 340951.1Type: PROBLEM
Modified Date : 06-MAY-2007Status: MODERATED

In this Document
Symptoms
Changes
Cause
Solution
References


This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process, and therefore has not been subject to an independent technical review.

Applies to:

Oracle Enterprise Manager - Version: 10.1.0.2
This problem can occur on any platform.

Symptoms

Trying to connect a 10G database via 9i OEM standalone console.
- Try connect with 'SYSTEM' user as 'normal': returns the error that this user requires 'SELECT ANY DICTIONARY' privilege.
- Try connect with 'SYS' user as 'SYSDBA' : got ORA-01031 insufficient privilege.

Both sys and system have been granted 'SELECT ANY DICTIONARY' privilege.
Connection is possible via the sqlplus tool but not via the 9i OEM console.

Connection works fine when connecting to a 9i database.

Changes

Newly created 10G database or 9i database upgraded to 10G.

Cause

This combination is not certified. It is not possible to monitor a 10G database via 9i OEM console.

For more information, check :
Bug 4154109 : Abstract: GRANT SELECT ANY DICTIONARY WHEN CONNECT FROM 9I EM TO 10G DB


Solution

9i OEM console should NOT be used to monitor a 10G database, as this is not a certified combination.

For monitoring a 10G database you will have to make use of the Grid control, database control or the 10G java console.

- The Grid control is similar to the OMS setup in 9i where there is a grid agent on the target
machine being monitored. Using this, you can monitor 8.1.7.4 and above, 9.2.0.1 and above, 10g
databases.

- Database control is for a single 10G database (sinlge instance or RAC). You can only monitor a
single 10g database from each database control. For a second 10G database, you will have to
configure another database control.

- 10G Java console is similar to the standalone console of the 9i version. This can be installed
from the 10G Client software.
You can monitor 8i, 9i and 10G databases using this console.

For more information, refer to the documentation :

Oracle® Enterprise Manager Grid Control Installation and Basic Configuration 10 g Release 1 (10.1), Appendix D - Enterprise Manager Java Console

References

Bug 4154109 - GRANT SELECT ANY DICTIONARY WHEN CONNECT FROM 9I EM TO 10G DB

Keywords

GRID~CONTROL; DATABASE~CONTROL; ENTERPRISE~MANAGER; OMS; JAVACONSOLE;[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/87149/viewspace-1019653/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/87149/viewspace-1019653/

<think>我们正在讨论Oracle数据库的权限管理。用户已经查询了关于`GRANTSELECTONV$DATABASE`的含义,现在转向`GRANTSELECTANYDICTIONARY`权限。根据引用[2][3][4],我们需要解释`SELECTANYDICTIONARY`权限的含义、作用以及与相关角色(如`SELECT_CATALOG_ROLE`)的区别。注意:用户提供的引用中,引用[1]提到的是`SELECTANYTABLE`权限和`O7_DICTIONARY_ACCESSIBILITY`参数,引用[2]解释了系统权限和实体权限的区别,引用[3]展示了`SELECTANYDICTIONARY`和`SELECT_CATALOG_ROLE`的授权情况,引用[4]则提到授予`SELECTANYDICTIONARY`权限的风险。我将组织回答如下:1.定义:`SELECTANYDICTIONARY`是什么类型的权限,它的作用范围。2.作用:授予这个权限后用户能做什么(访问数据字典视图和动态性能视图)。3.与直接授予特定视图权限的区别(如之前讨论的`V$DATABASE`)。4.与`SELECT_CATALOG_ROLE`角色的区别(引用[3])。5.风险:为什么引用[4]说不要轻易赋予普通用户(过度权限的风险)。6.实际授权示例(如何授予和撤销)。注意:我们可能涉及到数据字典视图(如`DBA_TABLES`)和动态性能视图(如`V$DATABASE`)的访问。另外,根据引用[2]:-系统权限:`SELECTANYDICTIONARY`是系统权限,允许用户查询任何数据字典(包括所有基表和视图)。-实体权限:比如`SELECTONSYS.V_$DATABASE`是实体权限。引用[3]中展示了一个用户被授予了`SELECTANYDICTIONARY`和`UNLIMITEDTABLESPACE`。引用[4]强调,解决无权限访问数据字典的问题时,更安全的方式是单独授予特定视图的权限,而不是直接给`SELECTANYDICTIONARY`,因为后者权限过大。我们按照这些要点来回答。</think> ### Oracle GRANT SELECT ANY DICTIONARY 权限详解 #### 1. **权限定义与作用** `GRANT SELECT ANY DICTIONARY` 是一种**系统权限**,允许用户查询 Oracle 数据字典中的所有对象,包括: - **数据字典视图**(如 `DBA_TABLES`, `ALL_CONSTRAINTS`) - **动态性能视图**(如 `V$DATABASE`, `V$SESSION`) - **基表**(如 `SYS.TAB$`, `SYS.COL$`)[^2][^4] 授予后用户可执行: ```sql SELECT * FROM DBA_TABLES; -- 查看所有表信息 SELECT * FROM V$SESSION; -- 监控会话状态 ``` #### 2. **权限层级与区别** | **权限类型** | **覆盖范围** | **风险等级** | |----------------------------|------------------------------------------|--------------| | **`SELECT ANY DICTIONARY`** | 所有数据字典对象(含动态视图) | ⚠️ 高危 | | **`SELECT_CATALOG_ROLE`** | 仅静态数据字典视图(如 `DBA_*`) | ⚠️ 中危 | | **特定视图授权** | 如 `GRANT SELECT ON V$DATABASE TO user` | ✅ 低危 | - **动态视图差异**:`SELECT ANY DICTIONARY` 可访问 `V$` 视图(实时性能数据),而 `SELECT_CATALOG_ROLE` 仅限静态字典[^3][^4]。 - **权限范围**:`ANY DICTIONARY` 隐含 `SELECT_CATALOG_ROLE` 的所有权限[^3]。 #### 3. **安全风险**(引用[4]关键警告) - **过度暴露敏感信息**: 用户可访问 `V$SQL`(含 SQL 文本)、`V$PASSWORDFILE`(密码文件状态)等敏感视图。 $$ \text{风险指数} = \frac{\text{可访问对象数量}}{\text{必要权限}} \propto \text{安全威胁} $$ - **审计难题**:权限范围过大,难以跟踪具体访问行为[^4]。 - **最佳实践**:优先使用细粒度授权(如单独授予 `V$DATABASE` 权限)而非 `ANY DICTIONARY`[^4]。 #### 4. **授权与撤销示例** - **授予权限**: ```sql GRANT SELECT ANY DICTIONARY TO xcyonbipzs; -- 需 SYSDBA 权限 ``` - **撤销权限**: ```sql REVOKE SELECT ANY DICTIONARY FROM xcyonbipzs; ``` - **检查权限**: ```sql SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = &#39;XCYONBIPZS&#39;; ``` #### 5. **典型应用场景** - **数据库监控工具**:需实时访问 `V$` 视图的第三方工具(如 OEM)。 - **紧急故障诊断**:DBA 临时授予权限以分析系统瓶颈。 > **注意**:生产环境应通过角色(Role)限制权限生命周期,避免长期持有[^5]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值