- 追加された行はこの色です。
- 削除された行はこの色です。
//Oracle/データベースリンクの設定方法・使用方法
OracleにはDatabaseLinkというリモートDBをローカルDBと透過的に使用できる機能があります。
OracleにはDatabaseLinkという、別DBサーバのDB(リモートDB)を自分のDBサーバのDB(ローカルDB)からそのまま操作できる機能があります。
設定方法および使用方法について簡単にまとめました。
ローカルDBがあるOracleのtnsnames.oraにリモートDBへの接続情報を記述します。
*目次
#contents()
*「tnsnames.ora」の編集
まず、自分のDBサーバ内の「tnsnames.ora」に「リモートDBへの接続情報」を追記します。
以下の前提で設定しています。
-別DBサーバのホスト名:RMTSVR (IPアドレスでも可)
-別DBサーバのOracleポート:1521
-別DBサーバの今回接続SID名:RMTDB(他とかぶらない範囲で自由に命名)
-サービス名:RMTDBSERV (他とかぶらない範囲で自由に命名)
***↓自分のDBサーバ内の「tnsnames.ora」に以下を追記
RMTDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = RMTSVR)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = RMTDBSERV)
)
)
実際にデータベースリンクを作成するユーザーにデータベースリンクを作成する権限を与えます。
*データベースリンク作成権限の付与
次に、別DBサーバのほうにログインし、ユーザーにデータベースリンクを作成する権限を与えます。
以下の前提で設定しています。
-別DBサーバのDB名:localdb
-別DBサーバのsystemユーザーパスワード:manager
-別DBサーバのOracle通常ユーザー名:localusr
CONN system/manager@localdb
GRANT CREATE DATABASE LINK TO localusr;
***↓以下、SQL*PLUSなどから実行
SQL> CONN system/manager@localdb
SQL> GRANT CREATE DATABASE LINK TO localusr;
データベースリンク名およびリモートDBの接続に使用するユーザー名、パスワードを指定します。
*データベースリンクの作成
次に、データベースリンクの作成を行います。
リンク名、および、リモートDBの接続に使用するユーザー名、パスワードを指定します。
以下の前提で設定しています。
-別DBサーバのDB名:localdb
-別DBサーバのOracle通常ユーザー名:localusr
-別DBサーバのOracle通常ユーザーパスワード:localpwd
-自DBサーバのOracle通常ユーザー名:rmtusr
-別DBサーバの今回接続SID名:RMTDB(上記で設定)
CONN localusr/localpwd@localdb
CREATE DATABASE LINK testlink CONNECT TO rmtusr IDENTIFIED BY rmtpwd USING 'RMTDB';
***↓以下、SQL*PLUSなどから実行
SQL> CONN localusr/localpwd@localdb
SQL> CREATE DATABASE LINK testlink CONNECT TO rmtusr IDENTIFIED BY rmtpwd USING 'RMTDB';
これで「testlink 」という名前のデータベースリンクが張られました。
*データベースリンクの利用方法
実際にリモートDBに接続しにいく場合はテーブル名の後に@{データベースリンク名}を付加します。
自DBサーバから見に行く場合の例です。
SELECT * FROM rmttbl@testlink;
***↓以下、SQL*PLUSなどから実行
SQL> SELECT * FROM rmttbl@testlink;
ロールバックやコミットについてはローカルDBと同じようにできます。
なお、ロールバックやコミットについてもローカルDBと同じようにできます。
*「tnsnames.ora」を編集しない方法
また、tnsnames.oraを編集しないで済む方法もあります。
CREATE DATABASE LINK testlink CONNECT TO rmtusr IDENTIFIED BY rmtpwd USING 'RMTSVR/RMTDBSERV';
***↓以下、SQL*PLUSなどから実行
SQL> CREATE DATABASE LINK testlink CONNECT TO rmtusr IDENTIFIED BY rmtpwd
USING 'RMTSVR/RMTDBSERV';