title: what's the reason of dbms_metadata.get_granted_ddl('SYSTEM_GRANT', 'AQ_ADMINISTRATOR_ROLE') ora-31608 error?
body: <p>I'd like to get ddls of all roles in the database using dbms_metadata package. Unfortunately dbms_metadata.get_granted_ddl fails with error when there are no grant (object, system or role type) for the role. That's why I have to check the presence of privileges in dba_tab_privs, dba_sys_privs and dba_role_privs views. 
  However AQ_ADMINISTRATOR_ROLE role has system privileges the following statement fails. Checked on two databases.</p>
  
  <pre><code>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')
  /
  </code></pre>
  
  <blockquote>
    <p>ORA-31608: specified object of type SYSTEM_GRANT not found ORA-06512:
    at "SYS.DBMS_METADATA", line 4018 ORA-06512: at "SYS.DBMS_METADATA",
    line 5991 ORA-06512: at line 1</p>
  </blockquote>
  
  <pre><code>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
  </code></pre>