如何知道用户被授予必要的权限以充当恢复目录所有者 (Oracle 12c)

How to know that a user is granted with the necessary priviliges to act as the recovery catalog owner (Oracle 12c)

我有一个数据库 TRADES,用户很少,其中一个用户拥有必要的权限。

查询USER_ROLE_PRIVS。例如,我的 Scott 用户没有该权限(其名称为 RECOVERY_CATALOG_OWNER:

SQL> connect scott/tiger
Connected.
SQL> select * from user_role_privs;

USERNAME                       GRANTED_ROLE                   ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
SCOTT                          CONNECT                        NO  YES NO
SCOTT                          RESOURCE                       NO  YES NO

SQL>

但是,如果我同意:

SQL> connect sys/pwd as sysdba;
Connected.
SQL> grant recovery_catalog_owner to scott;

Grant succeeded.

再次检查:

SQL> connect scott/tiger
Connected.
SQL> select * From user_role_privs;

USERNAME                       GRANTED_ROLE                   ADM DEF OS_
------------------------------ ------------------------------ --- --- ---
SCOTT                          CONNECT                        NO  YES NO
SCOTT                          RECOVERY_CATALOG_OWNER         NO  NO  NO  --> here it is
SCOTT                          RESOURCE                       NO  YES NO

此外,如果您以特权用户(例如 sys)连接并希望知道哪些用户被授予了该角色,那么

SQL> select * from dba_role_privs where granted_role = 'RECOVERY_CATALOG_OWNER';

GRANTEE                        GRANTED_ROLE                   ADM DEF
------------------------------ ------------------------------ --- ---
SYS                            RECOVERY_CATALOG_OWNER         YES YES
SCOTT                          RECOVERY_CATALOG_OWNER         NO  NO

SQL>