Oracle Netは、データベースとクライアントを繋ぐネットワークサービスで、リモート接続を実現する重要な仕組みです。本記事では、DBサーバーとクライアント双方の設定手順を具体例・図解・トラブルシューティング付きで解説します。
1. Oracle Netとは
Oracle Netは、データベースとクライアント間の通信を可能にするプロトコルです。以下の3つの要素で構成されています:
- リスナー (Listener)
サーバー側で接続要求を待ち受けるプロセスです。 - 接続識別子 (Service Name or SID)
接続先データベースを識別する名前です。 - クライアント構成 (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の構成を理解し、リモート接続を設定できるようになります。
- DBサーバー側: リスナーを設定・起動。
- クライアント側: 接続情報を定義。
- 動作確認:
tnsping
とsqlplus
で接続テスト。 - エラー対応: ログやコマンドで原因を特定。
ぜひ手順を追って試してみてください。設定が成功すれば、Oracle Databaseの可能性を広げる第一歩となるでしょう!
[参考]
Database Net Servicesリファレンス
コメント