Oracle9iにはデータベース・リンクという機能を調べる。 といっても、何も分からないので「Oracle9i データベース管理者ガイド リリース2(9.2).pdf 第Ⅵ部 分散データベースの管理」 を参考にテストしてみる。
データベース・リンクとは分散データベースの管理の1つでリモート・データベースのオブジェクトへの アクセスを可能にするローカル・データベース内のポインタです。簡単にいってしまうと、 今使っているデータベースをローカル・データベースとして、select文を発行すると、実際には リモート上のデータベースにアクセスしてるという事です。
まず、ローカル・データベースのtnsname.oraにSERVICE_NAMEを指定します。
定義よりinitXXX.oraを確認すると、db_domain,db_name初期化パラメータが存在する。つまり
SERVICE_NAME=db_name.db_domain
ということである。(参考資料 Oracle9i Net Services管理者ガイド リリース2(9.2).pdfより)
データベース・リンクを作成するためには権限が必要なので確認
select distinct privilage from role_sys_privs
where privilege in ('CREATE SESSION','CREATE DATABASE LINK' ,'CREATE
PUBLIC DATABASE LINK');
create database link testlink_01 connect to current user using
'SERVICE_NAME'
select col1 from schema.table_name@SERVICE_NAME;
サンプル ユーザ(schame)がstocでサービス名が(stocdb.stoc.co.jp)の時
create table test_link_tbl(id_link number, remarks varchar2(10));
insert into test_link_tbl values (1, 'hoge');
insert into test_link_tbl values (2, 'fuga');
select id_link from stoc.test_link_tbl@stocdb.stoc.co.jp
desc user_db_links;
drop [public] database link testlink_01;
取り合えずデータベース・リンクがどのようなものか分かった。テーブルなどの オブジェクトごとにリンクを作るのではなく、リモート・サーバへの接続を作る というのが当初の考えていたのと違った。