somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Oracle】SYNONYM作成文を作成する

エクスポートしたダンプファイルをインポートした際に、シノニムだけが作成されなかったので、無理やり作ってみました。

所有しているオブジェクトの情報

まず、作成されなかったシノニムを取得するために、シノニムを与えられたユーザーでログインし、下記のSQLを実行します。

select synonym_name from user_synonyms

所有しているシノニムがすべて表示されます。このSQLは、シノニムに限らず、user_(tables, sequenceなど)で所有しているオブジェクトの情報を取得できます。

他にも、dba_(~)でDBや、user_(~)でユーザ所有する情報を取得できます。これらは、データディクショナリビューと呼ばれ、system表領域の内の特殊なテーブル扱いになっています。

シノニム作成文の作成

データディクショナリビューを利用して、作成文を作成します。結果は、用途に合わせて取得カラムに出力し、それを実行します。他のデータディクショナリビューを利用すればいろいろなものを作成できます。

SELECT
   'CREATE OR REPLACE SYNONYM speciial_user. ' || SYNONYM_NAME
|| ' FOR ' || SYNONYM_NAME || ';'
FROM USER_SYNONYMS