Oracle Net 構成ガイド

オラクルデータベースの基本

Oracle Netは、データベースとクライアントを繋ぐネットワークサービスで、リモート接続を実現する重要な仕組みです。本記事では、DBサーバーとクライアント双方の設定手順を具体例・図解・トラブルシューティング付きで解説します。

1. Oracle Netとは

Oracle Netは、データベースとクライアント間の通信を可能にするプロトコルです。以下の3つの要素で構成されています:

  1. リスナー (Listener)
    サーバー側で接続要求を待ち受けるプロセスです。
  2. 接続識別子 (Service Name or SID)
    接続先データベースを識別する名前です。
  3. クライアント構成 (Client Configuration)
    クライアントでtnsnames.oraに接続情報を定義します。

2. 構成の全体像(図解)

以下の図は、サーバーとクライアントの構成関係を示しています。

+-------------------+         +--------------------+
| DB Server | | Client Machine |
|-------------------| |--------------------|
| listener.ora | <=====> | tnsnames.ora |
| Database Instance | | Application (SQL*Plus, etc.) |
+-------------------+ +--------------------+
  • 矢印はネットワーク通信(デフォルトでTCP:1521)を示します。
  • 両端の設定が一致していれば接続が確立します。

3. DBサーバー側の設定

DBサーバー側で行うべき作業は以下の通りです。

ステップ1: listener.oraの確認・編集

listener.oraはリスナーの動作を制御する設定ファイルです。以下は基本的な構成例です。

サンプル: listener.ora

LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
)
)
  • HOST: サーバーのIPアドレスまたはホスト名
  • PORT: 使用するポート番号(デフォルト: 1521)

Tip: localhostはローカル接続専用です。リモート接続には必ずIPアドレスを記載してください。

ステップ2: リスナーの起動

以下のコマンドを順に実行してリスナーを起動します。

lsnrctl start

状態確認

lsnrctl status

ステップ3: 動的サービス登録の確認

動的サービス登録を有効化するには、データベースの初期化パラメータを設定します。

ALTER SYSTEM SET LOCAL_LISTENER='(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100)(PORT=1521))';

確認:

SHOW PARAMETER SERVICE_NAMES;

4. クライアント側の設定

クライアントはtnsnames.oraを使って接続情報を定義します。

ステップ1: tnsnames.oraの編集

サンプル: tnsnames.ora

DB_CONN =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = orcl)
)
)
  • DB_CONN: 任意の接続識別子
  • HOST: サーバーのIPアドレス
  • SERVICE_NAME: サーバーのサービス名(orclなど)

Tip: クライアント環境で$ORACLE_HOME/network/admin/tnsnames.oraを配置します。


ステップ2: 環境変数の確認

クライアント端末で環境変数を確認します。

echo $ORACLE_HOME
echo $TNS_ADMIN

必要に応じて.bash_profileを編集して設定を行います。


5. 接続確認の方法

以下のコマンドで接続を確認します。

TNSPINGコマンド

tnsping DB_CONN

期待される出力:

OK (10 msec)

SQL*Plusでの接続

sqlplus ユーザー名/パスワード@DB_CONN

6. よくあるエラーと解決方法

TNS-12541: TNS:no listener

  • 原因: リスナーが起動していない
  • 解決方法: サーバーで以下を実行:bashコードをコピーするlsnrctl start

ORA-12514: TNS:listener does not currently know of service requested

  • 原因: サーバー側でサービス登録が不完全
  • 解決方法: サーバーで以下を確認:bashコードをコピーするlsnrctl services

7. 上級者向けの補足情報

1. 複数リスナーの設定

1つのサーバーで複数のリスナーを動作させる場合は、listener.oraに追加設定を行います。


2. ロードバランシングの設定

複数のデータベースに分散接続を行うには、以下の設定をtnsnames.oraに追加します。

plaintextコードをコピーするLOAD_BALANCE =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.101)(PORT = 1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.102)(PORT = 1521))
    )
    (CONNECT_DATA =
      (SERVICE_NAME = orcl)
    )
  )

まとめ

この記事を参考にして以下の手順を実践すれば、初心者でもOracle Netの構成を理解し、リモート接続を設定できるようになります。

  1. DBサーバー側: リスナーを設定・起動。
  2. クライアント側: 接続情報を定義。
  3. 動作確認: tnspingsqlplusで接続テスト。
  4. エラー対応: ログやコマンドで原因を特定。

ぜひ手順を追って試してみてください。設定が成功すれば、Oracle Databaseの可能性を広げる第一歩となるでしょう!

[参考]
Database Net Servicesリファレンス

コメント

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