OracleNet完全ガイド:リスナーの仕組みと静的構成を徹底解説!

Oracle Master Bronze

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_DBNAMESID_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専門のエージェントで非公開求人をチェックしてみませんか?

コメント

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