Oracle初心者向け:シノニム(Synonym)とは?

Oracle Master Silver

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

1. シノニムとは?

シノニム(Synonym) は、データベースオブジェクト(テーブル、ビュー、シーケンス、プロシージャなど)への別名を定義する機能です。ユーザーがオブジェクトを簡単に利用できるようにするために使用されます。特に、長いオブジェクト名や複雑なスキーマ構成の場合に便利です。

例えば、スキーマにある EMPLOYEES テーブルを操作する場合、スキーマ名を付けて SCHEMA_NAME.EMPLOYEES と記述する必要がありますが、シノニムを利用すれば簡略化できます。


2. シノニムの種類

  • パブリックシノニム(PUBLIC SYNONYM)
    全てのユーザーがアクセス可能なシノニム。DBA 権限が必要です。
  • プライベートシノニム(PRIVATE SYNONYM)
    特定のユーザーが利用できるシノニム。通常のユーザーが作成します。

3. シノニムの作成方法

以下にシノニム作成の基本構文を示します。

CREATE [PUBLIC] SYNONYM シノニム名 FOR オブジェクト名;

サンプルデータの準備

以下の SQL を実行して、サンプルテーブルを作成します。

CREATE TABLE EMPLOYEES (
    EMP_ID NUMBER PRIMARY KEY,
    EMP_NAME VARCHAR2(50),
    DEPT_ID NUMBER
);

INSERT INTO EMPLOYEES VALUES (1, '山田 太郎', 10);
INSERT INTO EMPLOYEES VALUES (2, '鈴木 花子', 20);
INSERT INTO EMPLOYEES VALUES (3, '田中 一郎', 30);
COMMIT;

プライベートシノニムの作成例

以下の例では、EMPLOYEES テーブルへのシノニムを作成します。

-- シノニム作成
CREATE SYNONYM EMP FOR EMPLOYEES;

-- シノニムを利用したクエリ
SELECT * FROM EMP;

パブリックシノニムの作成例

以下の例では、全てのユーザーが利用できるパブリックシノニムを作成します。

-- DBA権限で実行
CREATE PUBLIC SYNONYM PUB_EMP FOR EMPLOYEES;

-- 他のユーザーでも利用可能
SELECT * FROM PUB_EMP;

4. 別スキーマの表でのシノニム利用

異なるスキーマにあるオブジェクトにアクセスする場合、スキーマ名を付ける必要がありますが、シノニムを使用すると簡略化できます。

-- 別スキーマのテーブルに対してシノニムを作成
CREATE SYNONYM HR_EMP FOR SCHEMA_NAME.EMPLOYEES;

-- シノニムを利用したクエリ
SELECT * FROM HR_EMP;

5. DBLINKでのシノニム利用

リモートデータベース上のオブジェクトを参照する際にもシノニムを活用できます。

DBLINKの作成

まず、リモートデータベースへの DBLINK を作成します。

-- DBA権限または作成権限を持つユーザーで実行
CREATE DATABASE LINK REMOTE_DB
CONNECT TO REMOTE_USER IDENTIFIED BY password
USING 'REMOTE_TNS';

シノニムの作成

-- リモートデータベースのテーブルに対するシノニムを作成
CREATE SYNONYM REMOTE_EMP FOR EMPLOYEES@REMOTE_DB;

-- シノニムを利用したクエリ
SELECT * FROM REMOTE_EMP;

6. Oracle Net接続でのシノニム利用

Oracle Netを使用して異なるデータベースインスタンスに接続する場合も、シノニムを利用することで操作を簡素化できます。

tnsnames.oraの設定例

REMOTE_DB =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = your_remote_host)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = your_service_name)
    )
  )

シノニム作成例

-- Oracle Netを通じたリモート接続のシノニム作成
CREATE SYNONYM NET_EMP FOR EMPLOYEES@REMOTE_DB;

-- シノニムを利用したクエリ
SELECT * FROM NET_EMP;

7. ユーザー作成とシノニム利用

新しいユーザーを作成し、そのユーザーがシノニムを利用できるようにする方法を以下に示します。

ユーザーの作成

-- ユーザーの作成
CREATE USER NEW_USER IDENTIFIED BY password;

-- 必要な権限を付与
GRANT CREATE SESSION, CREATE SYNONYM, SELECT ANY TABLE TO NEW_USER;

シノニムの作成と利用

-- NEW_USER でシノニムを作成
CREATE SYNONYM EMP_FOR_USER FOR EMPLOYEES;

-- シノニムを利用したクエリ
SELECT * FROM EMP_FOR_USER;

8. シノニムの削除方法

シノニムを削除する際は以下のコマンドを使用します。

-- プライベートシノニムの削除
DROP SYNONYM シノニム名;

-- パブリックシノニムの削除
DROP PUBLIC SYNONYM シノニム名;

9. シノニムを使うメリット

  1. 簡易性
    長いスキーマ名やテーブル名を簡略化できます。
  2. 移植性
    アプリケーションが異なるスキーマ構造のデータベースに移行しても、シノニムを変更するだけで対応可能です。
  3. セキュリティ
    他のユーザーに直接テーブル名を公開せず、間接的にアクセスさせることができます。

10. 注意点

  • パブリックシノニムはすべてのユーザーがアクセス可能になるため、セキュリティ上のリスクがあります。利用する際は十分に注意してください。
  • シノニムが参照するオブジェクトが削除されると、シノニムは無効になります。

11. まとめ

シノニムは、Oracle データベースの操作を簡略化し、メンテナンス性や移植性を高める便利な機能です。特に、複雑なスキーマ構成やリモートデータベースを操作する際に威力を発揮します。適切に使用することで、効率的なデータベース運用が可能になります。

ぜひ、この記事を参考にして、シノニムを活用してみてください!

[参考]
Oracle Databaseデータベース管理者ガイド 19c

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました