同一サーバ上にインスタンスAとインスタンBを作成する。その後クライアントで、インスタンBからインスタンスAのテーブルにアクセスする。
oracle10gでのみ確認済み。
まずは、インスタンスAにアクセスするためにtnsnames.oraを作成する。
すでにインスタンスAに接続できているなら必要なし。
insA =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)
(HOST = host1)
(PORT = 1521)
)
(CONNECT_DATE =
(SERVICE_NAME = insA)
)
)
データベースリンクをはる。
1.インスタンスAのグローバル名を調べる。(念のため)
SELECT * FROM global_name
みたいな感じで帰ってくる。
2.インスタンス名が確認できたら、データベースリンクを作成する。
CREATE DATABASE LINK insA
CONNECT TO user_insA IDENTIFIED BY passwd
USING 'insA'
最後にUSING句でtnsnames.oraの接続記述子を指定する。
3.データベースリンクの確認
SELECT * FROM dba_db_links
インスタンスBに接続し、インスタンスAに存在する
test_tableに接続してみる。
SELECT * FROM test_table@insA
5.データベースリンクの削除。(間違った場合)
DROP DATABASE LINK insA
以降は、毎回「テーブル名@リンク名」を書くのが面倒な方用、
但しデータベースリンクがわからなくなるのでお勧めしない。
6.シノニムを作成。
CREATE SYNONYM test_table
FOR test_table@insA
7.シノニムの確認
SELECT * FROM user_synonyms
8.実際に接続してみる。
インスタンスBに接続してから実行する。
SELECT * FROM test_table
9.シノニムの削除(間違ったときに)
DROP SYNONYM test_table
以上でデータベースリンクが張られていることさえ気づかずに
アクセスができるようになっているはずです。
当然のことながら、update、delete、insertもできます。
またインスタンスAとインスタンスBのテーブル結合もできます。
0 コメント:
コメントを投稿