今回はOracleNet設定において,データベース接続との懸け橋となるリスナー設定について紹介します。
サーバ内でのローカル接続を除き,クライアント(他のPC)から接続するには設定必須です。
Oracleを扱う方はぜひとも参考にしていただければ幸甚です。
前提知識
リスナー

クライアントとOracleデータベース本体との接続を担う機能です。
クライアントからの接続要求を受けて,要求に応じた適切な接続を確立してくれます。
リスナーとデータベースは全くの別物です。
Oracleへ接続するためにはリスナーの設定が必須であり,リスナー無しでは接続できないと考えておきましょう。

例えるなら,インターネット回線へ繋ぐプロバイダの役割を担っているよ!
設定方法
listener.ora
リスナーの設定には「listener.ora」を使用します。
「tnsnames.ora」同様,「${ORACLE_HOME}/network/admin」直下に格納します。
設定方法は以下の通りです。
- データベース作成時にDBCAで設定する。
- NetCAで設定する。
- 手動で作成する(BATやシェルを利用した自動作成含む)
「tnsnames.ora」同様,慣れない内はDBCAもしくはNetCAでの作成が無難かと思います。
要領や構文規則が分かってきたら,BATやシェルを利用した自動生成をしてみるのも良いでしょう。
「listener.ora」の基本的な構文は以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[リスナー名] = (DESCRIPTION = (ADDRESS = (PROTOCOL = [プロトコル名])(HOST = [ホスト名])(PORT = [リスニングポート番号])) ) SID_LIST_[リスナー名] = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = [グローバル・データベース名]) (ORACLE_HOME = [Oracleホームディレクトリ]) (SID_NAME = [データベース名≒インスタンス名]) ) ) |
1行目と6行目にある「[リスナー名]」は同じにする必要がある点に注意しましょう。
他にもいろいろと定義要素はありますが,最低限まずは上記を把握していれば問題ありません。
クライアント用
最初の「[リスナー名] =」の部分はクライアント向けのリスナー設定で,設定必須です。
一般的には以下のような記述が多いかと思います。
1 2 3 4 |
LISTENER = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ORCLSRV01)(PORT = 1521)) ) |
上記の場合,リスナーは「ORCLSRV01」にて「1521」番ポートを開けて待機しており,要求が来た際は「TCP1」プロトコルで通信することを意味しています。
サーバ内部用
「SID_LIST_[リスナー名] =」の部分はサーバ内部向けのリスナー設定です。
接続要求が来た際に,実際に接続するデータベース情報を定義します。
なお,本設定は静的登録(手動によるリスナーへの登録設定)をする際に定義します。
動的登録(インスタンスによるリスナーへの登録設定)をする際は設定不要です。(基本的には設定しなくて良いと考えていただいて問題ありません。)
一般的には以下のような記述が多いかと思います。
1 2 3 4 5 6 7 8 |
SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (GLOBAL_DBNAME = ORCL) (ORACLE_HOME = /opt_orcl/oracle/app/ora193) (SID_NAME = ORCL) ) ) |
上記を設定することで,「ORCL」という名前のデータベース情報を定義することができます。
リスナー制御
リスナーはリスナー制御ユーティリティ(lsnrctl)にて制御できます。
制御にあたり,事前に環境変数の$PATHへ「$ORACLE_HOME/bin」を設定しておきましょう。
構文は以下の通りです。
1 |
lsnrctl [コマンド] [リスナー名] |
いくつかあるコマンドの中で,最低限以下を抑えておけば問題ないと思います。
- start
-
リスナーを起動する。
- stop
-
リスナーを停止する。
- status
-
リスナーの状態を表示する。
- services
-
リスナーの状態を詳細に表示する。



「[リスナー名]」は,標準名の「LISTENER」であれば省略可能だよ!
まとめ
今回はOracleNet設定において,データベース接続との懸け橋となるリスナー設定について説明しました。
本設定を実施することで,クライアントから初めてOracleへ接続することができるようになります。
役割や設定方法を理解して,いろいろと応用できるようにしてみてください!
- 「Transmission Control Protocol」の略。通信する際の決まり事の一種で,信頼性は高いが転送速度がやや遅い特徴がある。 ↩︎