Oracleのシノニムとは、オブジェクトに別の名前を付けて、その名前で使えるようにする機能。
テーブルを参照するのにシノニムを使うならビューを作るのと大差ないが、シノニムはテーブル以外のオブジェクトでも作れる。
プライベートシノニムは、特定のユーザーだけが使えるようになるシノニム。
scottユーザーのempテーブルを、hishidamaユーザーから見られるようにする例。
SQL> create synonym emp for scott.emp; シノニムが作成されました。
SQL> desc emp;
ERROR:
ORA-04043: オブジェクト"SCOTT"."EMP"は存在しません。
SQL> select * from emp;
select * from emp
*
行1でエラーが発生しました。:
ORA-00942: 表またはビューが存在しません。
SQL> grant select,insert,update,delete on emp to hishidama; 権限付与が成功しました。
SQL> desc emp
名前 NULL? 型
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
〜
パブリックシノニムは、全ユーザーが使えるようになるシノニム。
これを作るには、パブリックシノニムを作る権限が必要。(例えばsysユーザーで作る)
scottユーザーのempテーブルのパブリックシノニムを作る例。
SQL> create public synonym all_emp for scott.emp; シノニムが作成されました。
SQL> desc all_emp
名前 NULL? 型
----------------------------------------- -------- ----------------------------
EMPNO NOT NULL NUMBER(4)
ENAME VARCHAR2(10)
〜