nullnull PL/SQLを使用してユーザーを作成する文を取得
6226 ワード
この文章を書く前に、xxxはnullnullのテーマを変える文章をいくつか書いたことがあります.知りたい人は前の文章をめくってもいいです.
Create procedure:
毎日同じ理屈
航行者は木を方向を導く街灯にたとえ、労働者は木を風雨を遮る傘にたとえ、詩人は木を筆の下の精霊にたとえ、私は木を教師にたとえなければならない.それは私たちのために風雨を遮る傘で、方向を示す街灯で、知識の殿堂の金の鍵を開けることだ.
The above proc when called with the foll. will give the SQLs for all users:
These SQLs generated can in turn be run as follows to get the master-list of all the grants in the database:
文章は终わってみんなに次のプログラマーのいくつかのジョークの语录を分かち合います:1匹の犬が街をぶらぶらして、ショーウインドーの中で1枚の掲示を见ます:“プログラマーを募集します.プログラミングができて、チームワークの精神があって、少なくとも2つの言语に精通します.均等な机会.”その犬は中に入って申请して、しかし断られました.「犬を雇って会社で仕事をするわけにはいかない」と社長は言った.犬は不服で、告示の「均等な機会」を指さして抗議した.社長は仕方なく、ため息をついて、「プログラミングができますか」と尋ねた.その犬は黙ってパソコンの前に出て、プログラムを作って、正確に動いた.「チームワークはありますか?」マネージャーが尋ねた.その犬は振り向いてドアの外を見て、野良犬の群れが外で虎視眈々としている.「私は本当に犬を雇ってこの仕事をすることはできません」社長は怒って言った.「プログラミングができて、チームワークがあっても、必要な従業員は少なくとも2つの言語に精通しなければならない」その犬はマネージャーを見上げて言った.「ニャー.」
Create procedure:
create or replace procedure get_case_sqls_for_ddls_ver1 as
cursor get_username is
select username from dba_users;
begin
for l_user in get_username loop
DBMS_OUTPUT.PUT_LINE('-----------------------');
DBMS_OUTPUT.PUT_LINE('select (case');
DBMS_OUTPUT.PUT_LINE(' when ((select count(*)');
DBMS_OUTPUT.PUT_LINE(' from dba_users');
DBMS_OUTPUT.PUT_LINE(' where username = ''' ||
l_user.username || ''') > 0)');
DBMS_OUTPUT.PUT_LINE(' then dbms_metadata.get_ddl (''USER'', ''' ||
l_user.username || ''')');
DBMS_OUTPUT.PUT_LINE(' else to_clob ('' -- Note: User not found!'')');
DBMS_OUTPUT.PUT_LINE(' end ) "--Extracted_DDL" from dual');
DBMS_OUTPUT.PUT_LINE('UNION ALL');
DBMS_OUTPUT.PUT_LINE('-----------------------');
DBMS_OUTPUT.PUT_LINE('select (case');
DBMS_OUTPUT.PUT_LINE(' when ((select count(*)');
DBMS_OUTPUT.PUT_LINE(' from dba_ts_quotas');
DBMS_OUTPUT.PUT_LINE(' where username = ''' ||
l_user.username || ''') > 0)');
DBMS_OUTPUT.PUT_LINE(' then dbms_metadata.get_granted_ddl (''TABLESPACE_QUOTA'',
''' || l_user.username || ''')');
DBMS_OUTPUT.PUT_LINE(' else to_clob ('' -- Note: No TS Quotas found!'')');
DBMS_OUTPUT.PUT_LINE(' end ) from dual');
DBMS_OUTPUT.PUT_LINE('UNION ALL');
DBMS_OUTPUT.PUT_LINE('-----------------------');
DBMS_OUTPUT.PUT_LINE('select (case');
DBMS_OUTPUT.PUT_LINE(' when ((select count(*)');
DBMS_OUTPUT.PUT_LINE(' from dba_role_privs');
DBMS_OUTPUT.PUT_LINE(' where grantee = ''' ||
l_user.username || ''') > 0)');
DBMS_OUTPUT.PUT_LINE(' then dbms_metadata.get_granted_ddl (''ROLE_GRANT'',
''' || l_user.username || ''')');
DBMS_OUTPUT.PUT_LINE(' else to_clob ('' -- Note: No granted roles found!'')');
DBMS_OUTPUT.PUT_LINE(' end ) from dual');
DBMS_OUTPUT.PUT_LINE('UNION ALL');
DBMS_OUTPUT.PUT_LINE('-----------------------');
DBMS_OUTPUT.PUT_LINE('select (case');
DBMS_OUTPUT.PUT_LINE(' when ((select count(*)');
DBMS_OUTPUT.PUT_LINE(' from dba_sys_privs');
DBMS_OUTPUT.PUT_LINE(' where grantee = ''' ||
l_user.username || ''') > 0)');
DBMS_OUTPUT.PUT_LINE(' then dbms_metadata.get_granted_ddl (''SYSTEM_GRANT'',
''' || l_user.username || ''')');
DBMS_OUTPUT.PUT_LINE(' else to_clob ('' -- Note: No System Privileges found!'')');
DBMS_OUTPUT.PUT_LINE(' end ) from dual');
DBMS_OUTPUT.PUT_LINE('UNION ALL');
DBMS_OUTPUT.PUT_LINE('-----------------------');
DBMS_OUTPUT.PUT_LINE('select (case');
DBMS_OUTPUT.PUT_LINE(' when ((select count(*)');
DBMS_OUTPUT.PUT_LINE(' from dba_tab_privs');
DBMS_OUTPUT.PUT_LINE(' where grantee = ''' ||
l_user.username || ''') > 0)');
DBMS_OUTPUT.PUT_LINE(' then dbms_metadata.get_granted_ddl (''OBJECT_GRANT'',
''' || l_user.username || ''')');
DBMS_OUTPUT.PUT_LINE(' else to_clob ('' -- Note: No Object Privileges found!'')');
DBMS_OUTPUT.PUT_LINE(' end ) from dual');
DBMS_OUTPUT.PUT_LINE('/');
DBMS_OUTPUT.PUT_LINE('----------------------------------------------------------------------');
end loop;
end;
/
毎日同じ理屈
航行者は木を方向を導く街灯にたとえ、労働者は木を風雨を遮る傘にたとえ、詩人は木を筆の下の精霊にたとえ、私は木を教師にたとえなければならない.それは私たちのために風雨を遮る傘で、方向を示す街灯で、知識の殿堂の金の鍵を開けることだ.
The above proc when called with the foll. will give the SQLs for all users:
set head off
set pages 0
set serveroutput on size unlimited
spool /tmp/sqls_gathered_frm_trial_run_1.sql
exec get_case_sqls_for_ddls_ver1
spool off
These SQLs generated can in turn be run as follows to get the master-list of all the grants in the database:
spool /tmp/grants_by_running_trial3_ver0.0.sql
conn / as sysdba
set head off
set long 1000000000
set pages 0
exec DBMS_METADATA.SET_TRANSFORM_PARAM(DBMS_METADATA.SESSION_TRANSFORM,'SQLTERMINATOR',TRUE);
@/tmp/sqls_gathered_frm_trial_run_1.sql
spool off
文章は终わってみんなに次のプログラマーのいくつかのジョークの语录を分かち合います:1匹の犬が街をぶらぶらして、ショーウインドーの中で1枚の掲示を见ます:“プログラマーを募集します.プログラミングができて、チームワークの精神があって、少なくとも2つの言语に精通します.均等な机会.”その犬は中に入って申请して、しかし断られました.「犬を雇って会社で仕事をするわけにはいかない」と社長は言った.犬は不服で、告示の「均等な機会」を指さして抗議した.社長は仕方なく、ため息をついて、「プログラミングができますか」と尋ねた.その犬は黙ってパソコンの前に出て、プログラムを作って、正確に動いた.「チームワークはありますか?」マネージャーが尋ねた.その犬は振り向いてドアの外を見て、野良犬の群れが外で虎視眈々としている.「私は本当に犬を雇ってこの仕事をすることはできません」社長は怒って言った.「プログラミングができて、チームワークがあっても、必要な従業員は少なくとも2つの言語に精通しなければならない」その犬はマネージャーを見上げて言った.「ニャー.」