【Oracle】listener.ora の場所はどこ?|デフォルトパス・TNS_ADMIN・検索コマンド完全ガイド

Oracle の接続設定でよく迷うのが listener.ora ファイルの場所です。バージョン・OS・インストール構成によってパスが異なるうえ、TNS_ADMIN 環境変数で上書きされていることもあります。本記事では listener.ora のデフォルトパス、検索コマンド、TNS_ADMIN による場所変更、複数 ORACLE_HOME 環境での取り扱いまでを体系的に解説します。

この記事で解決できること

  • Linux・Windows それぞれの listener.ora デフォルトパス
  • find・locate コマンドで listener.ora を探す方法
  • TNS_ADMIN 環境変数と listener.ora の優先順位
  • 複数の ORACLE_HOME がある環境での listener.ora の特定
  • listener.ora が存在しない場合のデフォルト動作
  • lsnrctl が実際に読み込んでいる listener.ora を確認する方法

listener.ora の書き方・設定内容については リスナー設定完全解説(listener.ora・lsnrctl・tnsnames.ora) で詳しく解説しています。設定ファイルを見つけた後はこちらを参照してください。

スポンサーリンク

listener.ora のデフォルトパス

Oracle は TNS_ADMIN 環境変数が設定されていない場合、$ORACLE_HOME/network/admin/ 配下の listener.ora を読み込みます。

Linux / Unix の場合

# デフォルトパス
$ORACLE_HOME/network/admin/listener.ora

# 具体例(Oracle 19c, 典型的なインストール先)
/u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora

# Oracle 12c の例
/u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora

# Oracle 11g の例
/u01/app/oracle/product/11.2.0/dbhome_1/network/admin/listener.ora

Windows の場合

rem デフォルトパス(%ORACLE_HOME%\network\admin\listener.ora)

rem 具体例(Oracle 19c, 典型的なインストール先)
C:\app\oracle\product\19.0.0\dbhome_1\network\admin\listener.ora

rem Oracle が app\ユーザー名 配下に入っている場合
C:\app\%USERNAME%\product\19.0.0\dbhome_1\network\admin\listener.ora

rem Oracle Database 21c Express Edition の場合
C:\app\%USERNAME%\product\21.0.0\dbhomeXE\network\admin\listener.ora
ORACLE_HOME の確認方法
listener.ora のパスは ORACLE_HOME に依存します。まず ORACLE_HOME を確認してから探しましょう。

# Linux
echo $ORACLE_HOME

# Windows(コマンドプロンプト)
echo %ORACLE_HOME%

# Windows(PowerShell)
$env:ORACLE_HOME

lsnrctl が実際に読み込んでいる listener.ora を確認する

設定ファイルが複数ある環境では、どのファイルが実際に使われているかを lsnrctl status で確認するのが最も確実です。

$ lsnrctl status

LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 14-MAR-2026 09:00:00
...
Listener Parameter File   /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
Listener Log File         /u01/app/oracle/diag/tnslsnr/db01/listener/alert/log.xml
...

Listener Parameter File 行に実際に読み込まれている listener.ora のフルパスが表示されます。

リスナーが停止中の場合
リスナーが停止中は lsnrctl status でパスを確認できません。下記の検索コマンドで場所を特定してから起動してください。リスナーの起動方法は リスナーの起動方法(lsnrctl start・自動起動設定) を参照してください。

listener.ora をシステムから検索する

Linux: find コマンドで検索

# ORACLE_HOME 配下を検索(最も速い)
find $ORACLE_HOME -name listener.ora 2>/dev/null

# oracle ユーザーのホーム以下を検索
find /home/oracle -name listener.ora 2>/dev/null

# /u01 以下を広く検索(複数 ORACLE_HOME がある場合)
find /u01 -name listener.ora 2>/dev/null

# システム全体を検索(時間がかかる)
find / -name listener.ora 2>/dev/null

Linux: locate コマンドで高速検索

# locate コマンドが使える場合
locate listener.ora

# updatedb でデータベースを更新してから検索
sudo updatedb
locate listener.ora

Windows: コマンドプロンプトで検索

rem %ORACLE_HOME% 配下を検索
dir /s /b "%ORACLE_HOME%\listener.ora"

rem C:\app 以下を検索
dir /s /b "C:\app\listener.ora"

Windows: PowerShell で検索

# %ORACLE_HOME% 配下を検索
Get-ChildItem -Path $env:ORACLE_HOME -Filter "listener.ora" -Recurse -ErrorAction SilentlyContinue

# C:\app 以下を再帰検索
Get-ChildItem -Path "C:\app" -Filter "listener.ora" -Recurse -ErrorAction SilentlyContinue | Select-Object FullName

TNS_ADMIN 環境変数と listener.ora の優先順位

Oracle は listener.ora を以下の優先順位で探します。

優先順位 場所 条件
1 $TNS_ADMIN/listener.ora TNS_ADMIN 環境変数が設定されている場合
2 /etc/listener.ora(Linux) TNS_ADMIN 未設定かつ /etc に存在する場合(一部バージョン)
3 $ORACLE_HOME/network/admin/listener.ora デフォルト(上記が存在しない場合)

TNS_ADMIN の確認方法

# Linux
echo $TNS_ADMIN
# 例: /etc/oracle/network/admin  (空の場合は未設定)

# Windows(コマンドプロンプト)
echo %TNS_ADMIN%

# TNS_ADMIN が設定されている場合はそこの listener.ora が使われる
ls -la $TNS_ADMIN/listener.ora
TNS_ADMIN はレジストリ・環境変数の両方で設定できる(Windows)
Windows では環境変数だけでなく、レジストリにも TNS_ADMIN を設定できます。

rem レジストリで確認
reg query HKLM\SOFTWARE\ORACLE /v TNS_ADMIN
reg query HKCU\SOFTWARE\ORACLE /v TNS_ADMIN

rem 複数の Oracle Home がある場合は各 Home のキーを確認
reg query HKLM\SOFTWARE\ORACLE\KEY_OraDB19Home1 /v TNS_ADMIN

複数の ORACLE_HOME がある環境での listener.ora

開発環境など複数バージョンの Oracle をインストールしている場合、listener.ora が複数存在することがあります。

# 実行中のリスナープロセスと ORACLE_HOME を確認
ps -ef | grep tnslsnr | grep -v grep
# 例: oracle 12345 1 0 09:00 ? 00:00:00 /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr LISTENER -inherit

# プロセスが起動している ORACLE_HOME のパスから listener.ora の場所が分かる
# /u01/app/oracle/product/19.0.0/dbhome_1/bin/tnslsnr
# → listener.ora は /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora

# または lsnrctl status で確認(最も確実)
ORACLE_HOME=/u01/app/oracle/product/19.0.0/dbhome_1
$ORACLE_HOME/bin/lsnrctl status | grep "Parameter File"

oraenv で ORACLE_HOME を切り替えて確認

# /etc/oratab に登録されているインスタンスを確認
cat /etc/oratab
# ORCL:/u01/app/oracle/product/19.0.0/dbhome_1:Y
# ORCL12:/u01/app/oracle/product/12.2.0/dbhome_1:N

. oraenv
ORACLE_SID = [ORCL] ? ORCL12

# 切り替え後の listener.ora を確認
ls $ORACLE_HOME/network/admin/listener.ora

listener.ora が存在しない場合

listener.ora が存在しなくても、Oracle はデフォルト設定でリスナーを起動できます。

# listener.ora なしでリスナーを起動(デフォルト設定が使われる)
lsnrctl start
# → TCP/1521 でホスト名を使ってリスニング開始

# 起動後に有効な設定を確認
lsnrctl status
# Listener Parameter File の行が空欄になる
デフォルト設定の内容
listener.ora が存在しない場合のデフォルト設定は以下の通りです。

  • リスナー名: LISTENER
  • プロトコル: TCP
  • ホスト: hostname コマンドの出力値
  • ポート: 1521

本番環境では必ず listener.ora を明示的に作成し、設定を固定することを推奨します。

listener.ora を新規作成する場合

# ディレクトリが存在するか確認
ls -la $ORACLE_HOME/network/admin/

# ディレクトリがない場合は作成
mkdir -p $ORACLE_HOME/network/admin/

# 最小構成の listener.ora を作成
cat > $ORACLE_HOME/network/admin/listener.ora << 'EOF'
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = db01.example.com)(PORT = 1521))
    )
  )
EOF

よくある質問(FAQ)

Q listener.ora と tnsnames.ora は同じ場所にありますか?
A

通常は同じディレクトリ($ORACLE_HOME/network/admin/)にあります。Oracle Net の設定ファイルはすべてこのディレクトリに集約されています。

# network/admin ディレクトリの内容を確認
ls -la $ORACLE_HOME/network/admin/
# listener.ora   ← リスナー設定
# tnsnames.ora   ← 接続記述子
# sqlnet.ora     ← SQL*Net 全般設定

TNS_ADMIN で別ディレクトリを指定している場合は、listener.ora・tnsnames.ora・sqlnet.ora のすべてがそのディレクトリに配置されます。

Q listener.ora を編集した後、リスナーの再起動は必要ですか?
A

はい。listener.ora を編集しただけではリスナーは設定変更を認識しません。変更を反映するにはリスナーの再起動か reload が必要です。

# 設定のみ再読み込み(接続を切断しない)
lsnrctl reload

# または再起動
lsnrctl stop
lsnrctl start

# 設定変更が反映されたか確認
lsnrctl status
Q TNS_ADMIN を使う利点は何ですか?
A

複数のアプリケーション・ユーザーが共通の Oracle Net 設定を参照したい場合に便利です。特に以下のケースで使われます。

  • 複数の ORACLE_HOME がある環境で設定を一元管理したい
  • アプリケーションサーバーで Oracle クライアントのみインストールし、設定をまとめて管理したい
  • CI/CD 環境で設定ファイルを ORACLE_HOME から分離してバージョン管理したい
# 共有ディレクトリを TNS_ADMIN に設定
export TNS_ADMIN=/etc/oracle/network/admin

# または /etc/profile.d に追加して全ユーザーに適用
echo 'export TNS_ADMIN=/etc/oracle/network/admin' > /etc/profile.d/oracle_tns.sh
Q Oracle Instant Client を使っている場合、listener.ora はどこ?
A

Oracle Instant Client にはデフォルトの network/admin ディレクトリがありません。TNS_ADMIN 環境変数で明示的に設定ファイルの場所を指定する必要があります。

# Instant Client で TNS_ADMIN を設定する例
export TNS_ADMIN=/opt/oracle/network/admin
mkdir -p $TNS_ADMIN

# 設定ファイルを作成
vi $TNS_ADMIN/tnsnames.ora
vi $TNS_ADMIN/sqlnet.ora

Instant Client はクライアント接続専用のため、listener.ora は通常不要です。サーバー側のリスナー設定にのみ listener.ora が必要です。

Q listener.ora の変更が反映されない・読み込まれていない場合は?
A

lsnrctl status の Listener Parameter File を確認し、意図したパスが表示されているか確認してください。

# 読み込まれている設定ファイルの確認
lsnrctl status | grep "Parameter File"

# TNS_ADMIN が設定されている場合はそちらが優先される
echo $TNS_ADMIN

# 想定と違うファイルが読まれている場合は TNS_ADMIN を修正してから再起動
lsnrctl stop
unset TNS_ADMIN  # TNS_ADMIN をクリアして ORACLE_HOME 配下を使う場合
lsnrctl start

それでも解決しない場合は ORA-12560: TNS プロトコル・アダプタ・エラーの解決方法 の記事も参照してください。環境変数の問題が原因の場合があります。

まとめ

OS デフォルトパス
Linux 19c /u01/app/oracle/product/19.0.0/dbhome_1/network/admin/listener.ora
Linux 12c /u01/app/oracle/product/12.2.0/dbhome_1/network/admin/listener.ora
Windows 19c C:\app\oracle\product\19.0.0\dbhome_1\network\admin\listener.ora
XE(Express) C:\app\%USERNAME%\product\21.0.0\dbhomeXE\network\admin\listener.ora
TNS_ADMIN 設定時 $TNS_ADMIN/listener.ora(最優先)
操作 コマンド
実際に読まれている listener.ora を確認 lsnrctl status | grep "Parameter File"
Linux で検索 find $ORACLE_HOME -name listener.ora
Windows で検索 dir /s /b "%ORACLE_HOME%\listener.ora"
TNS_ADMIN 確認(Linux) echo $TNS_ADMIN
TNS_ADMIN 確認(Windows) reg query HKLM\SOFTWARE\ORACLE /v TNS_ADMIN
設定変更後の反映 lsnrctl reload または再起動

listener.ora の場所が確認できたら、リスナー設定完全解説(listener.ora・lsnrctl・tnsnames.ora) で設定内容を確認し、リスナーの起動方法(lsnrctl start・自動起動設定) でリスナーを起動してください。起動後は リスナーの確認方法完全ガイド(lsnrctl status・tnsping) で正常に動作しているかを確認することを推奨します。