HOME > 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_で始まるものもあります。
違いは参照できる範囲が異なります。
カラム | 内容 |
---|---|
OWNER | データベースリンクの所有者 |
DB_LINK | データベースリンク名 |
USERNAME | リンク先のスキーマ名 |
HOST | リンク先の接続情報 |
CREATED | データベースリンクの作成日時 |