OKLabのタイトルロゴ

<<戻る

データベース・リンクのテスト

はじめに

Oracle9iにはデータベース・リンクという機能を調べる。 といっても、何も分からないので「Oracle9i データベース管理者ガイド リリース2(9.2).pdf 第Ⅵ部 分散データベースの管理」 を参考にテストしてみる。

データベース・リンクとは?

データベース・リンクとは分散データベースの管理の1つでリモート・データベースのオブジェクトへの アクセスを可能にするローカル・データベース内のポインタです。簡単にいってしまうと、 今使っているデータベースをローカル・データベースとして、select文を発行すると、実際には リモート上のデータベースにアクセスしてるという事です。

手順

  1. tnsname.oraの設定
  2. データベース・リンクの作成・検索
  3. データベース・リンクの削除

tnsname.oraの設定

まず、ローカル・データベースのtnsname.oraにSERVICE_NAMEを指定します。

サービス名(SERVICE_NAME)の定義
データベースの論理表現。サービス名はグローバル・データベース名(global database 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;

まとめ

取り合えずデータベース・リンクがどのようなものか分かった。テーブルなどの オブジェクトごとにリンクを作るのではなく、リモート・サーバへの接続を作る というのが当初の考えていたのと違った。