Oracle 12c R2中HR用户无法查看PDB的问题排查求助
解决HR用户无法查看PDB的问题
这问题很常见,核心原因是HR用户默认没有访问CDB/PDB相关数据字典视图的权限——哪怕你已经给了普通的数据字典查看权限,Oracle对CDB级别的视图有额外的权限控制。
具体排查和解决步骤:
先确认HR的权限缺失情况
以SYSDBA身份登录后,执行这条查询,看看HR是否拥有SELECT_CATALOG_ROLE角色:SELECT granted_role FROM dba_role_privs WHERE grantee = 'HR';这个角色是Oracle预定义的,包含了访问绝大多数系统数据字典视图(包括
CDB_PDBS、V$PDBS这类PDB相关视图)的权限。如果查询结果里没有这个角色,那就是权限不足的问题。授予必要的权限
你有两种选择:- 方案一(推荐,权限覆盖全面):直接授予
SELECT_CATALOG_ROLE角色给HRGRANT SELECT_CATALOG_ROLE TO HR; - 方案二(最小权限原则):如果不想给HR这么宽泛的权限,只授予访问特定PDB视图的权限即可:
GRANT SELECT ON SYS.CDB_PDBS TO HR; GRANT SELECT ON SYS.V$PDBS TO HR;
- 方案一(推荐,权限覆盖全面):直接授予
验证结果
切换回HR用户重新登录,执行以下查询,应该就能看到PDB信息了:SELECT name, con_id, open_mode FROM v$pdbs; -- 或者 SELECT pdb_name, pdb_id, status FROM cdb_pdbs;
补充说明
SYSDBA能看到PDB是因为这个身份默认拥有所有系统权限,包括不受限制地访问所有数据字典视图。而HR作为普通业务用户,即使你给了普通的数据字典查看权限,也不包含CDB级别的视图访问权限——这是Oracle为了数据隔离和安全做的设计。
内容的提问来源于stack exchange,提问作者Kaushik Nayak
相关产品推荐
相关产品推荐

