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

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

### 環境
OS：Windows10home
DB：Oracle Database 21c Express Edition for Windows x64

### 経緯
OracleをWindowsのローカルにインストールした。
コマンドプロンプトでsqlplusを用いた接続はできた。
DBクライアントソフト（A5:SQL Mk-2）で以下の接続情報で接続しようと試みたところ、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/639188/1458157c-86ff-7192-2478-4c493c0592e6.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
稼働時間                  0 日 0 時間 0 分 12 秒
トレース・レベル          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
って記述があるけど、これ効いてないのか・・？

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