Oracleデータベースリンク
Oracle10gと8.1.6でデータベースリンクを張った
Oracle8.1.6のユーザーHOGE1からOracle10gのユーザーHOGE2へSQLが発行できるようにする。
Oracle8.1.6のtnsnames.oraにOracle10gへの接続設定を行う。
TNS名称はorcl10gとする
Oracle8.1.6のサーバーから、Oracle10gのユーザーHOGE2に接続できればOK
データベースリンクを作成する
Oracle8.1.6のユーザーHOGE1に接続し、データベースリンクを作成する。
データベースリンク名 | HOGE2_LINK |
リンク先DBのユーザ名 | HOGE2 |
リンク先DBのパスワード | pass |
CREATE DATABASE LINK HOGE2_LINK CONNECT TO HOGE2 IDENTIFIED BY pass USING 'orcl10g';
テスト(失敗例)
Oracle8.1.6のユーザーHOGE1に接続し、Oracle10gのユーザーHOGE2にあるテーブルcompaniesを参照する
SELECT * FROM COMPANIES@HOGE2_LINK; [row:1,col:25] ORA-02085: データベース・リンク: HOGE2_LINK.WORLDはORCL0.REGRESS.RDBMS.DEV.US.ORACLE.COMに接続します。
global_namesの確認
SystemでOracle8.1.6のユーザーHOGE1に接続し、以下のSQLを実行
SELECT VALUE FROM v$parameter WHERE NAME LIKE 'global_names'
FALSEが返ってきた。
init.oraの編集
Oracle\ADMIN\ora1\pfile\init.oraの以下の行をtrueに変更し、Oracleを再起動する
# Global Naming -- enforce that a dblink has same name as the db it connects to global_names = true
再度、global_namesの確認をし、TRUEが返ってくる事を確認
テスト(成功)
SELECT * FROM COMPANIES@HOGE2_LINK;
正しく結果が返ってきた。
最後に
global_namesを使用したままで行う場合は、以下を参照
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31633&forum=7