我已经创建了一个通用用户c##user,并为它分配了以下权限:
GRANT CREATE SESSION TO c##user CONTAINER=ALL;
GRANT SET CONTAINER TO c##user CONTAINER=ALL;
GRANT SELECT ON V_\$DATABASE TO c##user CONTAINER=ALL;
GRANT FLASHBACK ANY TABLE TO c##user CONTAINER=ALL;
GRANT SELECT ANY TABLE TO c##user CONTAINER=ALL;
GRANT SELECT_CATALOG_ROLE TO c##user CONTAINER=ALL;
GRANT EXECUTE_CATALOG_ROLE TO c##user CONTAINER=ALL;
GRANT SELECT ANY TRANSACTION TO c##user CONTAINER=ALL;
GRANT SELECT ANY DICTIONARY TO c##user CONTAINER=ALL;
GRANT LOGMINING TO c##user CONTAINER=ALL;
GRANT CREATE TABLE TO c##user CONTAINER=ALL;
GRANT ALTER ANY TABLE TO c##user CONTAINER=ALL;
GRANT LOCK ANY TABLE TO c##user CONTAINER=ALL;
GRANT CREATE SEQUENCE TO c##user CONTAINER=ALL;
GRANT EXECUTE ON DBMS_LOGMNR TO c##user CONTAINER=ALL;
GRANT EXECUTE ON DBMS_LOGMNR_D TO c##user CONTAINER=ALL;
GRANT SELECT ON V_\$LOGMNR_LOGS TO c##user CONTAINER=ALL;
GRANT SELECT ON V_\$LOGMNR_CONTENTS TO c##user CONTAINER=ALL;
GRANT SELECT ON V_\$LOGFILE TO c##user CONTAINER=ALL;
GRANT SELECT ON V_\$ARCHIVED_LOG TO c##user CONTAINER=ALL;
GRANT SELECT ON V_\$ARCHIVE_DEST_STATUS TO c##user CONTAINER=ALL;但是,当我与这个用户连接到CDB$ROOT并运行SELECT * FROM V$CONTAINERS时,唯一返回的行是CDB$ROOT的行,但是有一个打开和可用的ORCLPDB1。如果我执行:
ALTER SESSION SET CONTAINER=ORCLPDB1;
SELECT * FROM V$CONTAINERS;然后,查询只返回ORCLPDB1的信息,文档说应该这样做。但是,为什么当我连接到CDB根并对V$CONTAINERS运行相同的查询时,我没有看到任何PDBs?
我明白,只有当我连接到ORCLPDB1时,普通用户才会在V$CONTAINERS视图中看到CDB$ROOT,但这并没有发生。这里有什么我看不见的许可问题吗?
更新
看起来,必须使用管理员为V$CONTAINERS视图执行的以下命令显式地授予普通用户对容器数据的访问权限,以返回当前容器之外的结果。
ALTER USER c##user SET CONTAINER_DATA=(CDB$ROOT,ORCLPDB1) CONTAINER=CURRENT;这是我们想要的处理方法吗?
发布于 2021-07-04 17:25:44
是的,这是系统的预期行为。
根据Oracle文档:
扩展数据链接Oracle提供的数据字典对象
这种类型的对象存储与CDB根相关的数据,以及与单个PDB相关的数据。
当从CDB根查询此类型的对象时,只返回与CDB根相关的数据。
因此,v$container是一个扩展的数据对象,因为它包含有关根和其他PDB的数据,因此默认情况下它只显示有关根的数据。
ALTER USER c##user SET CONTAINER_DATA=(CDB$ROOT,ORCLPDB1) CONTAINER=CURRENT;上面的alter将使系统也能够显示关于ORCLPDB1 PDB的数据,如果您再次按下面的方式修改它,它将只显示ROOT的数据。
ALTER USER c##user SET CONTAINER_DATA=(CDB$ROOT) CONTAINER=CURRENT;https://stackoverflow.com/questions/68242412
复制相似问题