ORACLE/DATABASE LINK編

オラクルちょこっとリファレンス

HOME > DATABASE LINK編

DATABASE LINK(データベースリンク)

他のデータベースにあるテーブルなどのオブジェクトを、あたかも自身のデータベースにあるテーブル等としてアクセスしたい場合はDATABASE LINKを作成すれば実現できます。

DATABASE LINK概念図

例えば、「tarodb」というデータベースリンクを作成し、tarodb内にあるtaro_tableにアクセスしたい場合は以下のような記述でアクセスできるようになります。

データベースリンク使用例
SELECT * FROM taro_table@tarodb;

データベースリンクの接続先が見つからない場合は以下のエラーが発生します。
 ORA-02019:指定されたリモート・データベースは存在しません。

DATABASE LINKの作成

データベースリンクの作成には、CREATE DATABASE LINK句を使用します。

CREATE DATABASE LINK構文
CREATE [PUBLIC] DATABASE LINK <データベースリンク名>
  CONNECT TO <ユーザ名> IDENTIFIED BY <パスワード>
  USING '<DB接続名>'
;

DB接続名は「'」(シングルクオーテーション)で囲う必要があります。

パラメータ 説明
PUBLIC パブリックデータベースリンクを作成する場合に指定する。
(パブリックデータベースリンクは全てのユーザがアクセス可能なデータベースリンクの事です。)
CONNECT TO ~ データベースリンクを張りたいデータベースのユーザIDとパスワードを指定します。
USING ~ データベースリンクを張りたいデータベースの接続名(ネットサービス名)を指定します。
tnsnames.oraに記述する内容をそのまま指定する事もできます。
CREATE DATABASE LINK例文1
--(例)データベースdb02(接続名:db02)のtaroスキーマ(パスワード:taropw)に --tarodbというデータベースリンクを作成する。 CREATE DATABASE LINK tarodb CONNECT TO taro IDENTIFIED BY taropw USING 'db02';
CREATE DATABASE LINK例文2
--(例)接続先(IP:999.999.999.999、ポート:1521、SID:db01)のtaroスキーマ --(パスワード:taropw)にtarodbというデータベースリンクを作成する。 CREATE DATABASE LINK tarodb CONNECT TO taro IDENTIFIED BY taropw USING '(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=999.999.999.999)(PORT=1521)) (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=db01)))';

DATABASE LINKを作成するためには以下の権限が必要です。

  • CREATE DATABASE LINK:自スキーマに作成する時
  • CREATE PUBLIC DATABASE LINK:パブリックデータベースリンクを作成する時

データベースリンクの変更

データベースリンクを変更するには ALTER句を使用します。

ALTER DATABASE LINK構文
ALTER DATABASE LINK <データベースリンク名>
  CONNECT TO <ユーザ名> IDENTIFIED BY <パスワード>;

※ALTER DATABASE LINK で変更できるのはパスワードのみです。接続先や接続ユーザを変更したい場合は、一旦DROPしてから再度CREATEする必要があります。

ALTER DATABASE LINK例文
--(例)データベースリンクtarodbの接続パスワードをpasswordに変更する ALTER DATABASE LINK tarodb CONNECT TO taro IDENTIFIED BY password;

データベースリンクの削除

データベースリンクの削除には DROP DATABASE LINK句を使用します。

DROP DATABASE LINK構文
DROP [PUBLIC] DATABASE LINK <データベースリンク名>;

PUBLIC DATABASE LINKを削除するためには以下の権限が必要です。

  • DROP PUBLIC DATABASE LINK
DROP DATABASE LINK例文
--(例)データベースリンク(tarodb)を削除する。 DROP DATABASE LINK tarodb;

データベースリンクの情報を表示する

データベースリンクの情報を表示するには ALL_DB_LINKSデータディクショナリビューを検索します。

データベースリンクの情報を表示する
SELECT * FROM ALL_DB_LINKS;

データディクショナリビューには、DBA_やUSER_で始まるものもあります。
 違いは参照できる範囲が異なります。

【ALL_DB_LINKSのカラム】
カラム内容
OWNERデータベースリンクの所有者
DB_LINKデータベースリンク名
USERNAMEリンク先のスキーマ名
HOSTリンク先の接続情報
CREATEDデータベースリンクの作成日時
ToTop