【Oracle】シノニムについて

引継ぎ相手がお休みなので、業務中に個人的に気になった技術に関して記事を書いたので投稿。

概要

  • シノニムに関する内容をまとめる。

シノニム

概要

  • あすスキーマオブジェクト、非スキーマオブジェクトへのエイリアスである。
スキーマについて
  • その前にスキーマって何よ?ってはなし。
  • マニュアル曰く、“データの論理構造の集合”である。
スキーマオブジェクト
  • エンジニア同士で、[スキーマ]と言うときこれを指すことが多い。
    • 一部抜粋なので注意。
      • 全部みたけりゃコレを参照。
名称 DDL
CREATE TABLE
インデックス CREATE INDEX
ビュー CREATE VIEW
トリガー CREATE TRIGGER
演算子 CREATE OPERATOR
順序・シーケンス CREATE SEQUENCE
シノニム CREATE SYNONYM
非スキーマオブジェクト
  • ユーザが作成できるが、スキーマに分類されていないもの
    • シノニムがスキーマオブジェクトで、
      パブリックシノニムが非スキーマオブジェクトなのはなぜだろう?

      • 共有物は非スキーマオブジェクト説~
名称 DDL
ユーザ CREATE USER
プロファイル CREATE PROFILE
ロール CREATE ROLE
表領域 CREATE TABLESPACE
コンテキスト CREATE CONTEXT
ディレクトリ CREATE DIRECTORY
パブリック・シノニム CREATE PUBLIC SYNONYM

プライベート・シノニム

概要

  • プライベート・シノニムとは、ある特定のユーザだけに所有された別名である。
  • シノニムの代表的な利用法として下記の二つがある。
  1. 表のオーナ(管理者)とユーザ(閲覧者)を切り分ける。
  2. 複数ユーザでスキーマを共有する。
  • 1.の用法でシノニムを利用するときに、プライベートシノニムを利用する。

文法

CREATE SYNONYM スキーマ名.シノニム名 FOR ユーザ名.テーブル名;

サンプル

-- ADMIN に接続
CONNECT ADMIN/admin_password
 
CREATE TABLE TEST_TABLE
(
    TEST_COLUMN VARCHAR2(10)
);
GRANT SELECT ON ADMIN.TEST_TABLE TO WORKER ;
CREATE SYNONYM WORKER.TEST_TABLE_ALIAS FOR ADMIN.TEST_TABLE  ;
--                    ↑ 通常は同じ名前にする                
-- CREATE SYNONYM WORKER.TEST_TABLE FOR ADMIN.TEST_TABLE  ;
-- -- DROP SYNONYM WORKER.TEST_TABLE
-- WORKER に接続
CONNECT WORKER/yyyy
 
SELECT * FROM ADMIN.TEST_TABLE ;
SELECT * FROM TEST_TABLE_ALIAS  ;

パブリック・シノニム

概要

  • パブリックシノニムはPUBLICという実体のない特別なユーザグループが所有するシノニムである。
  • PUBLICが所有するシノニムは、すべてのユーザに対して開放されている状態を表す。

DUAL表

  • パブリックシノニムの代表的なものとして、DUAL表がある。
  • DUAL表は、すべてのユーザに最初から存在しているように見えているが、実はSYSユーザの所有物である。
  • 下記のSQLで生成されている。
CREATE PUBLIC SYNONYM DUAL FOR SYS.DUAL

参考サイト

シノニム – オラクル・Oracleをマスターするための基本と仕組み

以上

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です