LINK文を使用すると、データベース・リンクを作成できます。データベース・リンクとは、他のデータベース上のオブジェクトにアクセスできる、データベース上のスキーマ・オブジェクトです。Databaseシステムである必要はありません。Oracle以外のシステムにアクセスする場合は、Oracle異機種間サービスを使用する必要があります。データベース・リンクを作成した後で、表名、ビュー名またはPL/SQLオブジェクト名に@dblinkを追加し、そのリンクをSQL文で利用して、他のデータベース上の表、ビューおよびPL/SQLオブジェクトを参照できます。SELECT文を使用して、他のデータベース上の表またはビューを問い合せることができます。TABLE文を使用してもリモート表およびビューにアクセスできます。Databaseアドバンスト・アプリケーション開発者ガイド』を参照してください。Database管理者ガイド』を参照してください。Databaseリファレンス』を参照してください。LINK」を参照してください。LINK」を参照してください。TABLE」を参照してください。LINKシステム権限が必要です。LINKシステム権限が必要です。SESSION権限が必要です。Netをインストールしておく必要があります。構文create_database_link::=図「create_database_link.gif」の説明(dblink::=を参照)dblink_authentication::=図「dblink_authentication.gif」の説明セマンティクスPUBLICPUBLICを指定すると、すべてのユーザーが参照可能なパブリック・データベース・リンクを作成できます。この句を指定しない場合、データベース・リンクはプライベートとなり、作成したユーザー専用になります。リモート・データベース上のアクセス可能なデータは、リモート・データベースへの接続時にデータベース・リンクで使用される識別によって異なります。passwordを指定した場合、データベース・リンクは、指定されたユーザーとパスワードを使用して接続します。CURRENT_USERを指定した場合、データベース・リンクは、そのリンクが使用される有効範囲に基づいて有効なユーザーを使用して接続します。いずれの句も指定しない場合、データベース・リンクは、ローカル接続されたユーザーとしてリモート・データベースに接続します。関連項目:「パブリック・データベース・リンクの定義例:」SHAREDSHAREDを指定すると、ソース・データベースからターゲット・データベースへの1つのネットワーク接続を使用する複数のセッションで共有可能な1つのデータベース・リンクを作成できます。共有サーバー構成では、共有データベース・リンクによって、リモート・データベースへの接続数が多くなりすぎるのを防ぐことができます。通常、共有リンクはパブリック・データベース・リンクでもあります。多くのクライアントが同じローカル・スキーマにアクセスして同じプライベート・データベース・リンクを使用する場合は、共有プライベート・データベース・リンクが役立つ場合もあります。共有データベース・リンクでは、ソース・データベースの複数のセッションでターゲット・データベースへの同じ接続が共有されます。ターゲット・データベースでセッションが確立されると、ソース・データベースの別のセッションで接続を使用できるように、そのセッションは接続から関連付けを解除されます。認可されていないセッションがデータベース・リンクを使用して接続できないように、SHAREDを指定するときは、データベース・リンクの使用を認可されたユーザーに対してdblink_authentication句も指定する必要があります。Database管理者ガイド』を参照してください。dblinkデータベース・リンクの完全な名前または名前の一部を指定します。データベース名のみを指定した場合、ローカル・データベースのデータベース・ドメインが暗黙的に追加されます。dblinkには、ASCII文字のみを使用してください。マルチバイト文字はサポートされていません。データベース・リンク名は、大文字と小文字が区別されず、大文字のASCII文字で保存されます。データベース名を引用識別子として指定した場合、引用符は特に警告もなく無視されます。GLOBAL_NAMES初期化パラメータの値がTRUEの場合、データベース・リンクは、接続先のデータベースと同じ名前を持つ必要があります。GLOBAL_NAMESの値がFALSEで、データベースのグローバル名を変更した場合、グローバル名を指定できます。RAC構成の1つのセッションまたは1つのインスタンスでオープンできるデータベース・リンクの最大数は、OPEN_LINKSおよびOPEN_LINKS_PER_INSTANCE初期化パラメータの値で指定します。他のユーザーのスキーマ内にはデータベース・リンクを作成できません。dblinkはスキーマ名を付けて指定できません。データベース・リンク名にはピリオドを指定できるため、ralph.linktosalesのような名前を付けた場合、スキーマralphのlinktosalesという名前のデータベース・リンクと解析されるのではなく、名前全体が自分のスキーマにあるデータベース・リンク名と解析されます。関連項目:データベース・リンクのネーミングのガイドラインについては、「リモート・データベース内のオブジェクトの参照」を参照してください。Databaseリファレンス』を参照してください。GLOBAL_NAME句」を参照してください。TO句を使用すると、リモート・データベースへの接続に使用するユーザーおよび資格証明がある場合は、それらを指定できます。CURRENT_USER句CURRENT_USERを指定すると、現行のユーザーのデータベース・リンクを作成できます。現行のユーザーは、リモート・データベースに有効なアカウントを持つグローバル・ユーザーである必要があります。データベース・リンクがストアド・オブジェクト内からではなく直接使用される場合、現行のユーザーは接続ユーザーと同じです。データベース・リンクを開始するストアド・オブジェクト(プロシージャ、ビュー、トリガーなど)を実行する場合、CURRENT_USERは、ストアド・オブジェクトを所有するユーザーの名前であり、オブジェクトをコールしたユーザーの名前ではありません。データベース・リンクが(scottによって作成された)プロシージャscott.p内にあり、ユーザーjaneがプロシージャscott.pをコールした場合、現行のユーザーはscottになります。ストアド・オブジェクトが実行者権限ファンクション、プロシージャまたはパッケージである場合、実行者認可IDはリモート・ユーザーとしての接続に使用されます。権限を持つデータベース・リンクがプロシージャscott.p(scottによって作成された実行者権限プロシージャ)内にあり、ユーザーJaneがプロシージャscott.pをコールした場合、CURRENT_USERはjaneであり、プロシージャは、Janeの権限で実行されます。FUNCTION」を参照してください。password固定ユーザー・データベース・リンクを使用して、リモート・データベースに接続するためのユーザー名およびパスワードを指定できます。この句を指定しない場合、データベース・リンクでは、データベースに接続している各ユーザーのユーザー名およびパスワードが使用されます。これを接続ユーザー・データベース・リンクといいます。関連項目:「固定ユーザー・データベース・リンクの定義例:」dblink_authentication共有データベース・リンクを作成する場合(SHARED句を指定した場合)にのみ、この句を指定できます。ターゲット・インスタンスのユーザー名およびパスワードを指定します。この句は、リモート・サーバーに対してユーザーを認証するもので、セキュリティ上必要です。指定するユーザー名およびパスワードは、リモート・インスタンスで有効なユーザー名およびパスワードである必要があります。ユーザー名およびパスワードは、認証用としてのみ使用されます。このユーザーを対象とした認証以外の操作はありません。string'リモート・データベースのサービス名を指定します。データベース名のみを指定した場合、接続文字列にデータベース・ドメインが暗黙的に追加され、完全なサービス名が作成されます。したがって、リモート・データベースのデータベース・ドメインが現行のデータベース・ドメインと異なる場合は、完全なサービス名を指定する必要があります。Database管理者ガイド』を参照してください。次の例では、localという名前のデータベースとremoteという名前の2つのデータベースを使用することを想定しています。Databaseドメインを使用します。ご使用のドメインとは異なります。次の例では、remoteという共有パブリック・データベース・リンクを定義します。このデータベース・リンクは、サービス名remoteで指定されたデータベースと対応しています。このデータベース・リンクによって、localデータベース上のユーザーhrがリモート・データベース上の表を更新できます(hrに適切な権限があることを想定しています)。次の例では、リモート・データベース上のユーザーhrが、localデータベース上のhrスキーマに、localという名前の固定ユーザー・データベース・リンクを定義します。'local';このデータベース・リンクが作成されると、hrは、次のようにlocalデータベース上のスキーマhrの表を問い合せることができます。employees@local;ユーザーhrは、次のDML文を使用して、localデータベース上のデータを変更することもできます。999;この固定データベース・リンクを使用すると、remoteデータベース上のユーザーhrは、同じデータベース上の他のユーザーが所有する表にもアクセスできます。この文は、ユーザーhrがoe.customers表に対するSELECT権限を持っていることを想定しています。この文では、localデータベースのユーザーhrに接続した後で、次のようにoe.customers表への問合せが行われます。次の文は、リンク名としてサービス名全体を使用して、remoteデータベースに対する現行のユーザーのデータベース・リンクを定義します。'remote';この文を発行するユーザーは、LDAPディレクトリ・サービスに登録されたグローバル・ユーザーである必要があります。特定の表がremoteデータベース上にあることを示さないように、シノニムを作成できます。次の文によって、これ以降にemp_tableを参照すると、リモート・データベース上のhrが所有するemployees表にアクセスします。