データベースリンクの設定方法、使用方法

DatabaseLinkというリモートDBをローカルDBと透過的に使用できる機能があることを先日初めて知りました。設定方法および使用方法について簡単にまとめたので紹介したいと思います。

ローカルDBがあるOracleのtnsnames.oraにリモートDBへの接続情報を記述します。

RMTDB =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = RMTSVR)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = RMTDB)
    )
  )

実際にデータベースリンクを作成するユーザーにデータベースリンクを作成する権限を与えます。

CONN system/manager@localdb

GRANT CREATE DATABASE LINK TO localusr;

データベースリンク名およびリモートDBの接続に使用するユーザー名、パスワードを指定します。

CONN localusr/localpwd@localdb

CREATE DATABASE LINK testlink CONNECT TO rmtusr IDENTIFIED BY rmtpwd USING 'RMTDB';


実際にリモートDBに接続しにいく場合はテーブル名の後に@{データベースリンク名}を付加します。

SELECT * FROM rmttbl@testlink;

ロールバックやコミットについてはローカルDBと同じようにできます。