CREATE SYNONYM

CREATE SYNONYM文は、データベース・オブジェクトのパブリック・シノニムまたはプライベート・シノニムを作成します。シノニムは、データベース・オブジェクトの別名です。オブジェクトは、表、ビュー、シノニム、順序、PL/SQLストアド・プロシージャ、PL/SQLファンクション、PL/SQLパッケージ、マテリアライズド・ビューまたはキャッシュ・グループです。

プライベート・シノニムは、特定のユーザーが所有し、そのユーザーのスキーマ内に存在します。プライベート・シノニムに所有者以外のユーザーがアクセスできるのは、基礎となるオブジェクトに対する適切な権限がユーザーにあり、シノニム名とともにスキーマを指定する場合のみです。

パブリック・シノニムは、基礎となるオブジェクトに対する適切な権限がユーザーにあるかぎり、すべてのユーザーがアクセスできます。

CREATE SYNONYMはDDL文です。

シノニムは、次のSQL文で使用できます。

  • DML文: SELECTDELETEINSERTUPDATEMERGE

  • 一部のDDL文: GRANTREVOKECREATE TABLE ... AS SELECTCREATE VIEW ... AS SELECTCREATE INDEXDROP INDEX

  • 一部のキャッシュ・グループ文: LOAD CACHE GROUPUNLOAD CACHE GROUPREFRESH CACHE GROUPFLUSH CACHE GROUP

必要な権限

プライベート・シノニムを作成するには、CREATE SYNONYM(所有者の場合)またはCREATE ANY SYNONYM(非所有者の場合)。

パブリック・シノニムを作成するには、CREATE PUBLIC SYNONYM

TimesTen Scaleoutでの使用

この文は、TimesTen Scaleoutでサポートされています。

SQL構文

CREATE [OR REPLACE] [PUBLIC] SYNONYM [Owner1.]synonym FOR [Owner2.]object

パラメータ

パラメータ 説明

[OR REPLACE]

シノニムがすでに存在する場合に再作成するには、OR REPLACEを指定します。この句を使用すると、既存のシノニムの定義をはじめに削除しなくても、その定義を変更できます。

[PUBLIC]

PUBLICを指定すると、パブリック・シノニムを作成できます。パブリック・シノニムは、すべてのユーザーがアクセスできますが、シノニムを使用するには、基礎となるオブジェクトに対する適切な権限が各ユーザーに必要です。

オブジェクトの先頭にスキーマ名が指定されていない場合のみ、オブジェクトへの参照を変換するときに、TimesTenでパブリック・シノニムが使用されます。

[Owner1.]synonym

シノニムの所有者を指定します。PUBLICを指定した場合、所有者は指定できません。PUBLICOwner1の両方を省略した場合、TimesTenによって、自分のスキーマ内にシノニムが作成されます。

シノニムの名前を30バイト以内で指定します。

[Owner2.]object

オブジェクトが配置される所有者を指定します。シノニムを作成する対象のオブジェクト名を指定します。objectOwner2で修飾しなかった場合、そのオブジェクトは自分のスキーマ内にあります。Owner2およびobjectは、シノニムの作成時に存在している必要はありません。

説明

  • スキーマ・オブジェクトは、そのシノニムの作成時に存在している必要はありません。

  • TimesTen組込みプロシージャと同じ名前のパブリック・シノニムは作成しないでください。

  • シノニムを使用するには、シノニムを使用する前に、シノニムによって別名が付けられるオブジェクトのユーザーに適切な権限が付与されている必要があります。

  • プライベート・シノニムの名前は、プライベート・シノニムと同じスキーマにある表、ビュー、順序、PL/SQLパッケージ、ファンクション、プロシージャおよびキャッシュ・グループと同じにすることはできません。

  • パブリック・シノニムの名前は、プライベート・シノニムやオブジェクト名と同じにすることができます。

  • 問合せがOracle Databaseで実行される必要があるようにPassThrough属性が設定されている場合は、その問合せは変更されずにOracle Databaseに送信されます。問合せがキャッシュ・グループの表に対してシノニムを使用する場合、問合せが成功するためには、同じ名前のシノニムが対応するOracle Database表に定義されている必要があります。

  • オブジェクト名が、シノニムを使用できるDML文およびDDL文で使用される場合、オブジェクト名は次のように解決されます。

    1. 現在のスキーマ内で一致を検索します。一致が見つからない場合は、次に進みます。

    2. パブリック・シノニム名との一致を検索します。一致が見つからない場合は、次に進みます。

    3. SYSスキーマ内で一致を検索します。一致が見つからない場合は、次に進みます。

    4. オブジェクトは存在しません。

    TimesTenでは、一部のオブジェクトのパブリック・シノニムがSYSスキーマ内に作成されます。パブリック・シノニムの名前はオブジェクト名と同じです。そのため、オブジェクト名解決のステップ2と3を入れ替えても、検索結果は変わりません。

  • アクティブ・スタンバイ・ペアのレプリケートされた環境で、DDL_REPLICATION_LEVELが2以上の場合にアクティブ・データベースでCREATE SYNONYMを実行すると、シノニムはレプリケーション・スキームのすべてのデータベースにレプリケートされます。詳細は、『Oracle TimesTen In-Memory Databaseレプリケーション・ガイド』「アクティブ・スタンバイ・ペアでのDDL変更」を参照してください。

ユーザーttuserとして、jobs表のシノニムを作成します。シノニムを使用して情報を取得できることを確認します。SYS.USER_SYNONYMSシステム・ビューの内容を表示します。

Command> CREATE SYNONYM synjobs FOR jobs;
Synonym created.

Command> SELECT FIRST 2 * FROM jobs;
< AC_ACCOUNT, Public Accountant, 4200, 9000 >
< AC_MGR, Accounting Manager, 8200, 16000 >
2 rows found.
Command> SELECT FIRST 2 * FROM synjobs;
< AC_ACCOUNT, Public Accountant, 4200, 9000 >
< AC_MGR, Accounting Manager, 8200, 16000 >
2 rows found.

Command> SELECT * FROM sys.user_synonyms;
< SYNJOBS, TTUSER, JOBS, <NULL> >
1 row found.

employees表のパブリック・シノニムを作成します。

Command> CREATE PUBLIC SYNONYM pubemp FOR employees;
Synonym created.

pubempがパブリック・シノニムとしてSYS.ALL_SYNONYMSシステム・ビューに表示されることを確認します。

Command> SELECT * FROM sys.all_synonyms;
< PUBLIC, TABLES, SYS, TABLES, <NULL> >
...
< TTUSER, SYNJOBS, TTUSER, JOBS, <NULL> >
< PUBLIC, PUBEMP, TTUSER, EMPLOYEES, <NULL> >
57 rows found.

terryスキーマのtab表のシノニムを作成します。シノニムを記述します。

Command> CREATE SYNONYM syntab FOR terry.tab;
Synonym created.
Command> DESCRIBE syntab;
 
Synonym TTUSER.SYNTAB:
  For Table TERRY.TAB
  Columns:
    COL1                            VARCHAR2 (10) INLINE
    COL2                            VARCHAR2 (10) INLINE

1 Synonyms found.

OR REPLACE句を使用して、employees表の別名となるように、synjobsシノニムを再定義します。synjobsと記述します。

Command> CREATE OR REPLACE synjobs FOR employees;
Synonym created.
 
Command> DESCRIBE synjobs;
 
Synonym TTUSER.SYNJOBS:
  For Table TTUSER.EMPLOYEES
  Columns:
   *EMPLOYEE_ID                     NUMBER (6) NOT NULL
    FIRST_NAME                      VARCHAR2 (20) INLINE
    LAST_NAME                       VARCHAR2 (25) INLINE NOT NULL
    EMAIL                           VARCHAR2 (25) INLINE UNIQUE NOT NULL
    PHONE_NUMBER                    VARCHAR2 (20) INLINE
    HIRE_DATE                       DATE NOT NULL
    JOB_ID                          VARCHAR2 (10) INLINE NOT NULL
    SALARY                          NUMBER (8,2)
    COMMISSION_PCT                  NUMBER (2,2)
    MANAGER_ID                      NUMBER (6)
    DEPARTMENT_ID                   NUMBER (4)
 
1 Synonyms found.

関連項目

DROP SYNONYM