2017-10-11 9 views
1

에서 기존 역할의 역할 만들기 쿼리를 얻을 수있는 방법은 다음과 같이 뭔가를하고 싶지 :내가 오라클 DB

SHOW CREATE ROLE my_role_name;

가 나도 수출 쿼리 옵션에서 그것을 찾을 수 없습니다.

답변

4

DBMS_METADATA 패키지를 사용 :

set long 20000 longchunksize 20000 pagesize 0 linesize 1000 feedback off verify off trimspool on 
column ddl format a1000 

begin 
    dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'SQLTERMINATOR', true); 
    dbms_metadata.set_transform_param (dbms_metadata.session_transform, 'PRETTY', true); 
end; 
/

variable v_role VARCHAR2(30); 

exec :v_role := upper('&1'); 

select dbms_metadata.get_ddl('ROLE', r.role) AS ddl 
from dba_roles r 
where r.role = :v_role 
union all 
select dbms_metadata.get_granted_ddl('ROLE_GRANT', rp.grantee) AS ddl 
from dba_role_privs rp 
where rp.grantee = :v_role 
and rownum = 1 
union all 
select dbms_metadata.get_granted_ddl('SYSTEM_GRANT', sp.grantee) AS ddl 
from dba_sys_privs sp 
where sp.grantee = :v_role 
and rownum = 1 
union all 
select dbms_metadata.get_granted_ddl('OBJECT_GRANT', tp.grantee) AS ddl 
from dba_tab_privs tp 
where tp.grantee = :v_role 
and rownum = 1 
/

출처 :이 일을 https://oracle-base.com/dba/script?category=script_creation&file=role_ddl.sql

+0

감사합니다! –