Oracleデータベースの運用で重要な役割を果たすのが「OracleNet」です。特にリスナーの設定を理解することで、データベースへの接続を柔軟かつ確実に管理できます。この記事では、OracleNetの基本的な仕組みから、特にリスナーの静的構成について詳しく解説していきます。
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?
OracleNetとは?
OracleNet(旧称SQLNet)は、クライアントとOracleデータベース間のネットワーク通信を可能にするプロトコルです。クライアントはOracleNetを介してデータベースにアクセスします。
テキスト図:
クライアント
(SQL*Plusなど)
│
│ OracleNet (TCP/IP)
▼
リスナー
│
▼
Oracleデータベース
リスナーとは?
リスナー(Listener)は、クライアントからの接続要求を監視し、データベースへの接続を仲介する役割を担います。リスナーは特定のポートで待機し、接続要求を受け取ると対応するデータベース・インスタンスに接続を割り当てます。
リスナーの動作概要
テキスト図:
クライアント
│ 接続要求
▼
リスナー(1521ポートなどで待機)
│ 接続の受付
▼
インスタンスに接続を割り当て
│ 接続確立
▼
クライアント ← 接続
リスナーの静的構成とは?
リスナーの構成方法には静的構成と動的構成があります。静的構成は、データベースが停止している状態でも、リスナーが接続要求を受け付けるように構成する方法です。特にデータベースをリモートから起動(リモート・スタートアップ)する際に必須の構成方法となります。
静的構成のメリット
- リモートからデータベースを起動できる。
- 管理性が向上する。
静的構成の設定手順
静的構成を行うには、listener.oraファイルを編集し、サービス名(SID)をリスナーに静的に登録します。
listener.oraの設定例
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
)
)
各項目の意味は以下の通りです。
GLOBAL_DBNAME: クライアントが接続に使用するデータベースのグローバル名。ORACLE_HOME: Oracleデータベースがインストールされているディレクトリ。SID_NAME: データベースのSID。
listener.oraで環境ごとに記載を変える部分
listener.oraは、環境ごとに以下の内容を適切に調整する必要があります。
HOST: 接続を受け付けるホスト名またはIPアドレス。開発環境、本番環境などで異なるため、各環境に合わせて設定します。PORT: リスナーが待機するポート番号。環境ごとに異なるポートを割り当てることでポート競合を避けられます。ORACLE_HOME: インストールパスは環境ごとに異なる場合があります。Oracleインストールのパスに合わせて設定します。GLOBAL_DBNAMEとSID_NAME: データベースごとに異なるため、それぞれの環境に対応するデータベース名を設定します。
GLOBAL_DBNAMEとSIDの確認方法
データベースのGLOBAL_DBNAMEおよびSIDを確認するには、以下のSQLを実行します。
SQL> SELECT INSTANCE_NAME, HOST_NAME FROM V$INSTANCE;
SQL> SELECT VALUE FROM V$PARAMETER WHERE NAME = 'db_name';
SQL> SELECT VALUE FROM V$PARAMETER WHERE NAME = 'db_unique_name';
INSTANCE_NAMEがデータベースのSIDに該当します。db_nameおよびdb_unique_nameがGLOBAL_DBNAMEに相当します。
静的構成の設定手順(実践)
① listener.oraファイルを編集する
$ vi $ORACLE_HOME/network/admin/listener.ora
上記の設定例を参考に、静的構成を追加します。
vi コマンドの使用方法はコチラ。
② リスナーの再起動またはリロード
$ lsnrctl stop
$ lsnrctl start
または
$ lsnrctl reload
設定が反映されたことを確認します。
$ lsnrctl status
以下のように表示されれば成功です。
Service "ORCL" has 1 instance(s).
Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service...
UNKNOWNという表示は、静的に登録されたインスタンスがデータベースの稼働状態をリスナーに通知できないために表示される正常な状態です。
コマンド実行例
[oracle@orcl19c ~]$ lsnrctl stop ★リスナー停止
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 04-AUG-2025 23:28:23
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=orcl19c)(PORT=1521)))
The command completed successfully
[oracle@orcl19c ~]$ vi $ORACLE_HOME/network/admin/listener.ora ★listener.ora 作成
[oracle@orcl19c ~]$ cat $ORACLE_HOME/network/admin/listener.ora
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = ORCL)
(ORACLE_HOME = /u01/app/oracle/product/19.0.0/dbhome_1)
(SID_NAME = ORCL)
)
)
LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = orcl19c)(PORT = 1521))
)
)
[oracle@orcl19c ~]$ lsnrctl start
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 04-AUG-2025 22:52:29
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Starting /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 19.0.0.0.0 - Production
System parameter file is /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
Log messages written to /u01/app/oracle/diag/tnslsnr/orcl19c/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=orcl19c)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=orcl19c)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 19.0.0.0.0 - Production
Start Date 04-AUG-2025 22:52:29
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
Listener Log File /u01/app/oracle/diag/tnslsnr/orcl19c/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=orcl19c)(PORT=1521)))
Services Summary...
Service "ORCL" has 1 instance(s).
Instance "ORCL", status UNKNOWN, has 1 handler(s) for this service... ★登録された
The command completed successfully
[oracle@orcl19c ~]$
動的構成と静的構成の違い
リスナーの構成方法には動的構成と静的構成の2種類があります。両者の違いを以下の表にまとめます。
| 構成方法 | データベース停止中の接続受付 | サービスの登録方法 | 用途 |
|---|---|---|---|
| 静的構成 | 〇 | 手動でlistener.oraに記述 | リモート起動など |
| 動的構成 | ✕ | データベース起動時に自動登録 | 通常の運用 |
動的構成はデータベース起動時にサービス情報を自動でリスナーに登録するため、設定の手間が少なく一般的な運用に適しています。一方で静的構成はデータベース停止中でもリモートからの接続を受け付けるため、リモート管理など特定の用途に適しています。
まとめ
リスナーの静的構成を理解することで、リモートからのデータベース管理が可能になり、運用の柔軟性が高まります。実環境において静的構成が必要なシーンを見極めて適切に活用しましょう。
[参考]
Oracle Database Database Net Services リファレンス 19c
💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?
Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?




コメント