我想使用 dbms_metadata 包获取数据库中所有角色的 ddls。不幸的是,当角色没有授予(对象、系统或角色类型)时,dbms_metadata.get_granted_ddl 失败并出现错误。这就是为什么我必须检查 dba_tab_privs、dba_sys_privs 和 dba_role_privs 视图中是否存在特权。但是 AQ_ADMINISTRATOR_ROLE 角色具有系统权限以下语句失败。检查了两个数据库。
sqlplus system/pass@db1
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT', 'AQ_ADMINISTRATOR_ROLE')
from dual
where exists (select 1 from dba_sys_privs where grantee = 'AQ_ADMINISTRATOR_ROLE')
/
ORA-31608:未找到 SYSTEM_GRANT 类型的指定对象 ORA-06512:在“SYS.DBMS_METADATA”,第 4018 行 ORA-06512:在“SYS.DBMS_METADATA”,第 5991 行 ORA-06512:在第 1 行
select * from v$version
/
Oracle Database 11g Release 11.2.0.2.0 - 64bit Production PL/SQL
Release 11.2.0.2.0 - Production CORE 11.2.0.2.0 Production