LoginSignup
0
0

More than 1 year has passed since last update.

【Oracle】listener.oraを手動で書き換えないと接続できなかった

Last updated at Posted at 2022-10-31

Oracleのlistener.oraが手動で書き換えないと接続できなかったのでメモ
何か間違ってたら教えてください。

環境

OS:Windows10home
DB:Oracle Database 21c Express Edition for Windows x64

経緯

OracleをWindowsのローカルにインストールした。
コマンドプロンプトでsqlplusを用いた接続はできた。
DBクライアントソフト(A5:SQL Mk-2)で以下の接続情報で接続しようと試みたところ、
image.png

ORA-12541: TNS: リスナーがありません。
のポップアップエラーが出たので、
色々調べたらリスナーが起動できていないっぽい。
コマンドプロンプトでリスナーを起動しようとしたらエラー

.cmd
C:\WINDOWS\system32>lsnrctl start XE

LSNRCTL for 64-bit Windows: Version 21.0.0.0.0 - Production on 31-10-2022 09:00:42

Copyright (c) 1991, 2021, Oracle.  All rights reserved.

tnslsnrを起動しています。お待ちください...

TNSLSNR for 64-bit Windows: Version 21.0.0.0.0 - Production
システム・パラメータ・ファイルはC:\app\yota\product\21c\homes\OraDB21Home1\network\admin\listener.oraです。
ログ・メッセージをC:\app\yota\product\21c\diag\tnslsnr\DESKTOP-L0H7E1R\xe\alert\log.xmlに書き込みました。
TNS-01151: LISTENER.ORAにリスナー名XEはありません。

リスナーが起動に失敗しました。前述のエラー・メッセージを参照してください...

色々調べてみると、tnsnames.oraにはデフォルトで、XEという接続文字列が用意されているが、listener.oraにはXEというリスナーが用意されていなかった。

tnsnames.ora
# tnsnames.ora Network Configuration File: C:\app\yota\product\21c\homes\OraDB21Home1\NETWORK\ADMIN\tnsnames.ora
# Generated by Oracle configuration tools.

XE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-L0H7E1R.elecom)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = XE)
    )
  )

LISTENER_XE =
  (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-L0H7E1R.elecom)(PORT = 1521))


ORACLR_CONNECTION_DATA =
  (DESCRIPTION =
    (ADDRESS_LIST =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (CONNECT_DATA =
      (SID = CLRExtProc)
      (PRESENTATION = RO)
    )
  )
listener.ora
# listener.ora Network Configuration File: C:\app\yota\product\21c\homes\OraDB21Home1\NETWORK\ADMIN\listener.ora
# Generated by Oracle configuration tools.

DEFAULT_SERVICE_LISTENER = XE

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = C:\app\yota\product\21c\dbhomeXE)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:C:\app\yota\product\21c\dbhomeXE\bin\oraclr.dll")
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-L0H7E1R.elecom)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
  )

自分で試したこと

listner.oraの LISTENER の部分を XE という文字列に変更して、コマンドプロンプトでXEというリスナーを以下の通り起動した。

.cmd
C:\WINDOWS\system32>lsnrctl start XE

LSNRCTL for 64-bit Windows: Version 21.0.0.0.0 - Production on 31-10-2022 09:06:59

Copyright (c) 1991, 2021, Oracle.  All rights reserved.

tnslsnrを起動しています。お待ちください...

TNSLSNR for 64-bit Windows: Version 21.0.0.0.0 - Production
システム・パラメータ・ファイルはC:\app\yota\product\21c\homes\OraDB21Home1\network\admin\listener.oraです。
ログ・メッセージをC:\app\yota\product\21c\diag\tnslsnr\DESKTOP-L0H7E1R\xe\alert\log.xmlに書き込みました。
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DESKTOP-L0H7E1R)(PORT=1521)))
リスニングしています: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))

(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=DESKTOP-L0H7E1R.elecom)(PORT=1521)))に接続中
リスナーのステータス
------------------------
別名                      XE
バージョン                TNSLSNR for 64-bit Windows: Version 21.0.0.0.0 - Production
開始日                    31-10-2022 09:07:06
稼働時間                  00 時間 012 秒
トレース・レベル          off
セキュリティ              ON: Local OS Authentication
SNMP                      OFF
パラメータ・ファイル      C:\app\yota\product\21c\homes\OraDB21Home1\network\admin\listener.ora
ログ・ファイル            C:\app\yota\product\21c\diag\tnslsnr\DESKTOP-L0H7E1R\xe\alert\log.xml
リスニング・エンドポイントのサマリー...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=DESKTOP-L0H7E1R)(PORT=1521)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(PIPENAME=\\.\pipe\EXTPROC1521ipc)))
リスナーはサービスをサポートしていません。
コマンドは正常に終了しました。

C:\WINDOWS\system32>

A5SQLのソフトでも接続できるようになった。

listner.oraに明らかにそれっぽい
DEFAULT_SERVICE_LISTENER = XE
って記述があるけど、これ効いてないのか・・?

必ず手動で書き換えないといけないとしらたクソすぎるし、そんなわけないと思うので自分が何か間違っているんだと思う。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0