ORACLEはDLINKを使用してリモート・データベースに接続する

2741 ワード

database linkの概要
Database linkは、あるデータベースから別のデータベースへのパスを定義するオブジェクトです.database linkでは、リモート・テーブルを問合せたり、リモート・プログラムを実行したりできます.
database link分類
1.Private
Owner:database linkを作成するuserはこのdatabase linkを所有する
説明:ローカル・データベースの特定のschemaの下で確立されたdatabase link.このdatabase linkを確立したschemaのセッションのみが、このdatabase linkを使用してリモートのデータベースにアクセスできます.
同時にOwnerだけが独自のprivate database linkを削除することができます.
2.Public
Owner:PUBLIC
説明:Publicのdatabase linkはデータベース・レベルで、ローカル・データベース内のすべてのデータベース・アクセス権を持つユーザーまたはpl/sqlプログラムは、このdatabase linkを使用して対応するリモート・データベースにアクセスできます.
3.Global
Owner:PUBLIC
説明:Globalのdatabase linkはネットワークレベルであり、Oracleネットワークでディレクトリ・サーバが使用されると、ディレクトリ・サーバはネットワーク内の各Oracleデータベースに対してGlobal database link(ネットワーク・サービス名として)を自動的に作成および管理します.
任意のデータベース内のユーザーおよびpl/sqlサブルーチンは、グローバルリンクを使用して対応するリモート・データベース内のオブジェクトにアクセスできます.
注:Oracleデータベースの以前のバージョンでは、Global database linkがOracle名サーバに登録されたdatabase linkを参照していました.
Oracle名サーバーの使用は破棄されました.このドキュメントでは、グローバル・データベース・リンクは、ディレクトリ・サーバからのネットワーク・サービス名の使用を指します.
dblinkの作成に必要な権限
CREATEDATABASE LINKローカルデータベースプライベートDBLinkを作成
CREATEPUBLIC DATABASE LINKローカルデータベース共通のDBLinkを作成
CREATESESSIONリモート・データベース任意のタイプのDBLinkを作成
database link構文の作成
CREATE [SHARED][PUBLIC] database link link_name
[CONNECT TO [user][current_user] IDENTIFIED BY password]
[AUTHENTICATED BY user IDENTIFIED BY password]
[USING 'connect_string']
簡単な説明:
接続string:接続文字列、tnsnames.oraでは、リモート・データベースの接続列を定義したり、dblinkを作成するときに直接指定したりすることができます.
username、password:リモート・データベースのユーザー名、パスワード.指定しない場合は、現在のユーザー名とパスワードを使用してリモート・データベースにログインします.
使用例:
プライベートDBLinkの作成
create database link dblink_name 
connect to username identified by "password" 
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.1.18 )(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = orcl)))';

共通のDBLinkの作成
create public database link dblink_name 
connect to username identified by "password" 
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.1.18 )(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = orcl)))';

database linkの使用
最も簡単な使い方
SELECT* FROM table_name@dblink_name;
パッケージdblink_name名
CREATE SYNONYM table_name FOR table_name@dblink_name;
SELECT * FROM table_name;
カプセル化するビューを作成
CREATE VIEW table_name AS SELECT * FROM table_name@dblink_name;
database link削除
publicタイプのdatabase linkを削除
DROP PUBLIC database link dblink_name;
非publicタイプのdatabase linkを削除
注意:owner自身だけが自分の非publicタイプdatabase linkを削除できます.
DROP database link dblink_name;
クエリーdatabase link
select * from dba_db_links;