Oracle DBLINKの基本と作成手順をやさしく解説!~2つのデータベース間を接続してデータを取得する方法~

DBLINK

Oracle DBLINK(データベースリンク)は、別のOracleデータベースに対してSQLを実行できる便利な機能です。
本記事では、2台のOracleデータベースを想定し、DBLINKの設定から接続確認、ユーザー作成、実行例まで丁寧に解説します。

↓DBLINKのイメージ↓

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


1. 🔰 DBLINKとは?

Oracle DBLINKは、別サーバーにあるOracleデータベースにSQLでアクセスできる仕組みです。
たとえば、ローカルのSCOTTユーザーが、リモートDBにあるHRユーザーのテーブルにアクセスできます。


2. 🖥️ システム構成とDBLINKの図解

┌──────────────────────────────┐
│ 接続元データベース(ローカル) │
│ ホスト名:dbhost01 │
│ SID:DBA01 │
│ ユーザー:SCOTT(DBLINK作成・利用) │
└────┬─────────────────────────┘
│ DBLINK (dbb01_link)

┌──────────────────────────────┐
│ 接続先データベース(リモート) │
│ ホスト名:dbhost02 │
│ SID:DBB01 │
│ ユーザー:HR(DBLINK接続先、表を持つ) │
│ 表:employees │
└──────────────────────────────┘

SCOTTユーザーから、employees@dbb01_link のようにアクセスします。


3. 🔧 TNS接続情報の設定と確認 –ローカル(接続元DB側)

📄 tnsnames.oraの設定

<接続識別子> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <ホスト名>)(PORT = <ポート番号>))
(CONNECT_DATA =
(SID = <サービス名>)
)
)


--作成例
DBB01 =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = dbhost02)(PORT = 1521))
(CONNECT_DATA =
(SID = DBB01)
)
)

HOSTPORTSIDは実際の接続先環境に合わせて適切に変更してください。

ファイル場所(デフォルト)
$ORACLE_HOME/network/admin/tnsnames.ora
(例):/u01/app/oracle/product/19.0.0/dbhome_1/network/admin/tnsnames.ora


✅ TNS接続の確認方法

TNSが正しく設定されているか、sqlplusで接続確認を行います。

sqlplus hr/hrpw@DBB01

成功例:

SQL*Plus: Release 19.0.0.0.0 - Production
に接続されました。

エラーになる場合は、tnsping DBB01 も併せて実行して、接続確認を行ってください。


4. 🏗 接続先DBにユーザーと表を作成(接続先:DBB01)

✅ ユーザー:HRの作成

CREATE USER hr IDENTIFIED BY hrpw;
GRANT CONNECT, RESOURCE TO hr;

✅ テーブル:employees の作成とデータ投入

CREATE TABLE hr.employees (
employee_id NUMBER PRIMARY KEY,
first_name VARCHAR2(50),
salary NUMBER
);

INSERT INTO hr.employees VALUES (1, '佐藤 太郎', 300000);
INSERT INTO hr.employees VALUES (2, '鈴木 花子', 320000);
COMMIT;

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


5. 🛠 DBLINKの作成(接続元:DBA01のSCOTTユーザー)

接続先にアクセスするためのDBLINKを作成します。

-- DBLINK作成構文
CREATE (PUBLIC) DATABASE LINK <DBLINK名>
CONNECT TO <ユーザー名> IDENTIFIED BY <パスワード>
USING '<接続識別子(tnsnames.ora)>';


※ユーザー名は接続先DB側に存在するユーザー

-- 実行例(SCOTTユーザーでログインして実行)
CREATE DATABASE LINK dbb01_link
CONNECT TO hr IDENTIFIED BY hrpw
USING 'DBB01';

USING に指定するのは tnsnames.ora に登録したTNS名です。

※SCOTTサンプルスキーマは以下を実行することでインストール可能です。

$ sqlplus / as sysdba
SQL> @?/rdbms/admin/utlsampl.sql
$ sqlplus scott/tiger

6. ✅ DBLINKの使用例

データの参照

SELECT * FROM employees@dbb01_link;

条件付きで参照

SELECT employee_id, first_name
FROM employees@dbb01_link
WHERE salary > 310000;

このクエリは、ローカルDBにいながら、接続先のhr.employees表を直接参照しています。


7. 🧱 DBLINKの種類と注意点

種類特徴
プライベート作成したユーザー(例:SCOTT)だけが使用可能
パブリック他のユーザーも使用可能(DBA権限が必要)

🚨 セキュリティ注意点

  • パスワードは平文でCREATE文に記述される
  • 接続先ユーザーには最小限の権限のみ付与する
  • DBLINK経由でDMLも可能なので、用途を限定した専用ユーザーが望ましい

8. ✅ まとめ

項目内容
目的別のOracle DBにSQLでアクセスできる
準備接続先ユーザー・TNS設定・DBLINK作成
使用方法SELECT ~ FROM 表@リンク名でリモート表を参照
接続確認sqlplus ユーザー/パスワード@TNS名でテスト可能
セキュリティパスワード管理・アクセス制限を必ず検討する


[参考]
SQL言語リファレンス – CREATE DATABASE LINK

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました