Oracle   Oracleデータベースの引越しに役立つ(かもしれない)PL/SQLツール
  2007/03/27


Oracleデータベースの引越しに役立つ(かもしれない)PL/SQLツール

●現在のGRANT状況を復元するSQL*Plusスクリプトを生成するSQL*Plusスクリプト
引越し元サーバで実行します。
USER_TAB_PRIVS_MADEを検索して、他ユーザにGRANTしている全てのオブジェクトに対して、 GRANT文を出力します。

set serveroutput on size 999999
spool grantall.sql

declare
begin
  for s in (SELECT GRANTEE, TABLE_NAME, PRIVILEGE FROM USER_TAB_PRIVS_MADE
          ORDER BY TABLE_NAME, PRIVILEGE) loop
    DBMS_OUTPUT.PUT_LINE('GRANT ' || s.PRIVILEGE ||
      ' ON ' || s.TABLE_NAME || ' TO ' || s.GRANTEE || ';');
  end loop;
end;
/
spool off
exit


GRANTを受けているオブジェクトと同名のシノニムを作るCREATE文を作るSQL*Plusスクリプト

引越し元サーバで実行します。
USER_TAB_PRIVS_RECDを検索して、GRANTを受けている全てのオブジェクトに対して、 同名のシノニムを作るCREATE文を出力します。

set serveroutput on size 999999
spool create-granted-synonyms.sql

declare
begin
  for s in (SELECT DISTINCT OWNER, TABLE_NAME
          FROM USER_TAB_PRIVS_RECD ORDER BY OWNER, TABLE_NAME) loop
    DBMS_OUTPUT.PUT_LINE('CREATE SYNONYM ' || s.TABLE_NAME ||
      ' FOR ' || s.OWNER || '.' || s.TABLE_NAME || ';');
  end loop;
end;
/
spool off
exit


PL/SQLソースファイルを一括コンパイルするSQL*Plusスクリプトを生成するshスクリプト

これは特筆するまでもない単純なコマンドです。 カレントディレクトリにたくさん置かれている、ストアドプロシージャ、パッケージなどのソースファイルをすべてコンパイルする、 SQL*Plusスクリプトを出力するUNIXコマンドです。

ls -l | awk '{print "@ " $9}' > temp.txt

ただファイル名の頭に@をつけているだけじゃねーか。ってだってその通りですやん。

  もくじ
Oracle   (C) 2002-2003 MISUMI URANO (2007/03/27 - 2007/03/27)