CREATE DATABASE LINKはOracleでデータベースリンクを作成するSQLです。その使い方や確認方法、必要な権限などをご紹介します。
データベースリンクには以下に示す3種類がある。
プライベート・データベースリンクとは、データベースリンクを作成したユーザだけが参照できるデータベースリンクである。
パブリック・データベースリンクとは、すべてのユーザが参照できるデータベースリンクである。
共有データベースリンクとは、ソースデータベースからターゲットデータベースへのひとつのネットワーク接続を使用する複数のセッションで共有可能なひとつのデータベースリンクである。
CREATE { PUBLIC | SHARED } DATABASE LINK dblink
[CONNECT TO user IDENTIFIED BY password]
[USING connect_string]
SQL> CREATE PUBLIC DATABASE LINK example CONNECT TO tsuka IDENTIFIED BY mellon USING '19c';
PUBLIC 及び SHARED の指定を省略した場合、プライベート・データベースリンクを作成する。
SQL> CREATE SHARED DATABASE LINK example CONNECT TO tsuka IDENTIFIED BY mellon USING '19c';
PUBLIC 及び SHARED の指定を省略した場合、プライベート・データベースリンクを作成する。
作成するデータベースリンクの名前を指定する。
データベースオブジェクトの名前の長さは30バイトまでだが、データベースリンクの名前は例外的に128バイトまでの長さまで指定できる。
ローカルデータベースの初期化パラメータglobal_namesがtureに設定されている場合は、データベースリンク名が接続先リモートデータベースのグローバル名と一致している必要がある。 この場合、接続先リモートデータベースで SELECT * FROM GLOBAL_NAME;を実行した結果をそのままデータベースリンク名に指定すればよい。初期化パラメータglobal_namesがfalseに設定されている場合は、この限りではない。
接続先リモートデータベースのユーザを指定する。
SQL> CREATE DATABASE LINK example CONNECT TO tsuka IDENTIFIED BY mellon USING '19c';
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>