Oracle Database
データベースリンク
サーチ…
データベースリンクの作成
CREATE DATABASE LINK dblink_name
CONNECT TO remote_username
IDENTIFIED BY remote_password
USING 'tns_service_name';
リモートDBは、次の方法でアクセスできます。
SELECT * FROM MY_TABLE@dblink_name;
リンクされたデータベース内のオブジェクト名を知らなくてもデータベースリンクの接続をテストするには、次のクエリを使用します。
SELECT * FROM DUAL@dblink_name;
リンクされたデータベースサービスのドメインを明示的に指定するには、ドメイン名がUSING
ステートメントに追加されます。例えば:
USING 'tns_service_name.WORLD'
ドメイン名が明示的に指定されていない場合、Oracleはリンクが作成されているデータベースのドメインを使用します。
データベース・リンク作成のためのOracleのマニュアル:
- 10g: https : //docs.oracle.com/cd/B19306_01/server.102/b14200/statements_5005.htm
- 11g: https : //docs.oracle.com/cd/B28359_01/server.111/b28310/ds_concepts002.htm
- 12g: https : //docs.oracle.com/database/121/SQLRF/statements_5006.htm#SQLRF01205
データベースリンクの作成
「ORA1」と「ORA2」という2つのデータベースがあるとします。データベースリンクを使用して、データベース "ORA1"から "ORA2"のオブジェクトにアクセスできます。
前提条件:専用データベース・リンクを作成するには、 CREATE DATABASE LINK
特権が必要です。プライベートデータベースリンクを作成するには、 CREATE PUBLIC DATABASE LINK
権限が必要です。
* Oracle Netは両方のインスタンスに存在する必要があります。
データベースリンクを作成する方法:
ORA1から:
SQL> create <public> database link ora2 connect to user1 identified by pass1 using <tns name of ora2>;
データベースリンクが作成されました。
DBリンクが設定されたので、ORA1から次のコマンドを実行することで証明できます。
SQL> Select name from V$DATABASE@ORA2; -- should return ORA2
ユーザuser1
がORA2上のオブジェクト(以下のTABLE1など)に対してSELECT
権限を持っている場合、 "ORA1"から "ORA2"のDBオブジェクトにアクセスすることもできます。
SELECT COUNT(*) FROM TABLE1@ORA2;
前提条件:
- 両方のデータベースが起動していなければなりません(開かれている)。
- 両方のデータベース・リスナーが稼働している必要があります。
- TNSを正しく設定する必要があります。
- ORA2データベースにユーザーuser1が存在し、パスワードを確認して検証する必要があります。
- ユーザーuser1には、少なくとも
SELECT
権限が必要です。ORA2のオブジェクトにアクセスするには、ユーザー権限が必要です。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow