CREATE DATABASE LINK

CREATE DATABASE LINKはOracleでデータベースリンクを作成するSQLです。その使い方や確認方法、必要な権限などをご紹介します。

データベースリンクの種類

データベースリンクには以下に示す3種類がある。

プライベート・データベースリンクとは、データベースリンクを作成したユーザだけが参照できるデータベースリンクである。

パブリック・データベースリンクとは、すべてのユーザが参照できるデータベースリンクである。

共有データベースリンクとは、ソースデータベースからターゲットデータベースへのひとつのネットワーク接続を使用する複数のセッションで共有可能なひとつのデータベースリンクである。

SQL

CREATE { PUBLIC | SHARED } DATABASE LINK dblink
  [CONNECT TO user IDENTIFIED BY password]
  [USING connect_string]
PUBLIC
すべてのユーザが参照できるパブリック・データベースリンクを作成する。
SQL> CREATE PUBLIC DATABASE LINK example CONNECT TO tsuka IDENTIFIED BY mellon USING '19c';

PUBLIC 及び SHARED の指定を省略した場合、プライベート・データベースリンクを作成する。

SHARED
共有データベースリンクを作成する。
SQL> CREATE SHARED DATABASE LINK example CONNECT TO tsuka IDENTIFIED BY mellon USING '19c';

PUBLIC 及び SHARED の指定を省略した場合、プライベート・データベースリンクを作成する。

dblink

作成するデータベースリンクの名前を指定する。

データベースオブジェクトの名前の長さは30バイトまでだが、データベースリンクの名前は例外的に128バイトまでの長さまで指定できる。

ローカルデータベースの初期化パラメータglobal_namesがtureに設定されている場合は、データベースリンク名が接続先リモートデータベースのグローバル名と一致している必要がある。 この場合、接続先リモートデータベースで SELECT * FROM GLOBAL_NAME;を実行した結果をそのままデータベースリンク名に指定すればよい。初期化パラメータglobal_namesがfalseに設定されている場合は、この限りではない。

user

接続先リモートデータベースのユーザを指定する。

password
接続先リモートデータベースのパスワードを指定する。パスワードを引用符で囲む必要はない。
SQL> CREATE DATABASE LINK example CONNECT TO tsuka IDENTIFIED BY mellon USING '19c';
connect_string
接続先リモートデータベースのネットサービス名を指定する。
SQL> CREATE DATABASE LINK example CONNECT TO tsuka IDENTIFIED BY mellon USING '19c';

スキーマ指定

データベースリンクを作成できるのは自分のスキーマ内だけである。

他のスキーマにデータベースリンクを作成することはできないので、CREATE DATABASE LINKにスキーマ名は指定できない。

権限

プライベート・データベースリンクを作成するには、CREATE DATABASE LINKシステム権限が必要である。

パブリック・データベースリンクを作成するには、CREATE PUBLIC DATABASE LINKシステム権限が必要である。

確認

作成したデータベースリンクは、ALL_DB_LINKS、DBA_DB_LINKS又はUSER_DB_LINKSで確認することができる。

SELECT DB_LINK FROM USER_DB_LINKS

データベースリンクで接続できるかどうかを確認するには、DUAL表を問い合わせて、結果が返ることを確認する。

SQL> SELECT * FROM DUAL@dblink1

D
-
X

SQL>

関連SQL