データベースリンクとは、他のデータベース上のオブジェクトにアクセスできるスキーマオブジェクトである。データベースリンクを使用すると、別のインスタンスのオブジェクトにアクセスすることができる。
Oracleデータベースにおいて、オブジェクト名の長さは最大30バイトまでである。ただし、例外的にデータベース・リンク名の長さは最大128バイトまでである。
SELECT * FROM emp@example_database_link.segakuin.com
データベース・リンクを使用する際、ネットワークドメインの部分は省略できる。
SELECT * FROM emp@example_database_link
ネットワーク・ドメインを省略した場合、グローバル・データベース名のドメインがデータベース・リンクのドメインと見なされる。たとえば、グローバル・データベース名が sales.segakuin.com の場合、データベース・リンク example_database_link は example_database_link.segakuin.com と見なされる。
データベース・リンクには、以下に示す2種類がある。
プライベート・データベース・リンクは、データベース・リンクを作成したユーザーのみがアクセスすることができるデータベース・リンクである。
パブリック・データベース・リンクは、全てのユーザーがアクセスできるデータベース・リンクである。
データベース・リンクを操作するSQL文の一覧を以下に示す。
CREATE DATABASE LINK は、データベース・リンクを作成するSQL文である。
ALTER DATABASE LINK は、データベース・リンクを変更するSQL文である。
DROP DATABASE LINK は、データベース・リンクを削除するSQL文である。
データベース・リンクの疎通確認を簡単に行うには、DUAL表を問い合わせる。
SQL> SELECT * FROM DUAL@dblink.segakuin.com;
D
-
X
SQL>
データベース・リンクに関する SQL*Plus コマンドを以下に示す。
ひとつのセッションで同時に使えるデータベース・リンクの数には制限がある。この数はopen_links初期化パラメータで設定されており、SHOWコマンドで確認できる。
SQL> SHOW PARAMETER OPEN_LINKS
NAME TYPE VALUE
------------------------ -------- --------
open_links integer 4
open_links_per_instance integer 4
ひとつのセッションで同時に使えるデータベース・リンク数の制限を超えると、「ORA-02020:使用中のデータベース・リンクが多すぎます。」のエラーが発生する。
使用中のデータベース・リンクをクローズするには、COMMIT又はROLLBACKを行う。
データベース・リンクを操作するために必要なシステム権限の一覧を以下に示す。
ALTER DATABASE LINK は、プライベート・データベース・リンクを変更できるシステム権限である。
ALTER PUBLIC DATABASE LINK は、パブリック・データベース・リンクを変更できるシステム権限である。
CREATE DATABASE LINK は、プライベート・データベース・リンクを作成および削除できるシステム権限である。
CREATE PUBLIC DATABASE LINK は、パブリック・データベース・リンクを作成できるシステム権限である。
DROP PUBLIC DATABASE LINK は、パブリック・データベース・リンクを削除できるシステム権限である。
データベース・リンクに関するデータ・ディクショナリ・ビューの一覧を次に示す。
ALL_DB_LINKS は、現在のユーザがアクセスできるデータベース・リンクを示す。
DBA_DB_LINKS は、Oracleデータベース内すべてのデータベース・リンクを示す。
GLOBAL_NAME は、グローバル・データベース名を示す。
USER_DB_LINKS は、現在のユーザが所有するデータベース・リンクである。