19c新機能：リスナーログのローテーション

# やったこと
19c新機能で、リスナー・ログがデフォルトで自動ローテーションされるようになったと聞き、試してみた。

# 結果
* 19cでは、リスナー・ログが自動でローテートされる(デフォルトで300MB)。だが、削除はされないので、LOG_FILE_NUM_xxxは設定したほうが良い。

* LOG_FILE_SIZE_<LISTENER名>で指定するサイズは、trace/listener.logではなくalert/log.xmlのサイズを基準にローテーションされている。( ドキュメントに記載はないが、検証の結果そうなった )

* この動作を無効 ( 従来の方式 ) にする方法は不明 ( ドキュメント上見当たらない ) 。極端に大きい値を指定すれば実質的に無効にできるが、log.xmlもローテートされなくなる。そして、19cでは、リスナーのDIAG_HOMEにポリシーが設定されていない。。

* listener.oraに指定するパラメータ
 - LOG_FILE_SIZE_<LISTENER名> (デフォルト：300MB)
 - LOG_FILE_NUM_<LISTENER名>  (デフォルトなし：無制限)

* この動作を念頭に、従来は独自実装していたログ・ローテーション実装を見直す必要がありそう。だが、謎が多い。

# 参考ドキュメント

[Database New Features Guide](https://docs.oracle.com/en/database/oracle/oracle-database/19/newft/new-features.html#GUID-751E407F-B871-4ADB-8800-6D71BA78FC15)
[Net Services Administrator's Guide](https://docs.oracle.com/en/database/oracle/oracle-database/19/netag/troubleshooting-oracle-net-services.html#GUID-6F554CD1-84EC-42F4-B968-1E6657452956)
[Database Net Servicesリファレンス](https://docs.oracle.com/cd/F19136_01/netrf/oracle-net-listener-parameters-in-listener-ora.html#GUID-0C4DEBE8-5F79-4E43-A6CB-49E63167543B)

# 検証内容
デフォルト
→ 300MBでローテート

```
# while :; do  date; find . -type f -name "*log*" -ls; sleep 30; done
Tue Oct  8 16:06:44 UTC 2019
9044635 90552 -rw-r-----   1 grid     oinstall 92713096 Oct  8 16:06 ./trace/listener.log
9044634 305724 -rw-r-----   1 grid     oinstall 313050724 Oct  8 16:06 ./alert/log.xml
Tue Oct  8 16:07:14 UTC 2019
9044635 91224 -rw-r-----   1 grid     oinstall 93403952 Oct  8 16:06 ./trace/listener_1.log
9047715  752 -rw-r-----   1 grid     oinstall   767914 Oct  8 16:07 ./trace/listener.log
9044634 307212 -rw-r-----   1 grid     oinstall 314573018 Oct  8 16:06 ./alert/log_1.xml ★ log.xmlが300MBを超過したタイミングでローテート
9047705 1656 -rw-r-----   1 grid     oinstall  1693285 Oct  8 16:07 ./alert/log.xml
```

サイズ10MB、個数3個に設定。
→ 10MBでローテート。アーカイブを3つまで保持する。

```
$ tail listener.ora
・・・
LOG_FILE_SIZE_LISTENER = 10
LOG_FILE_NUM_LISTENER  = 3

# while :; do date;  find . -type f -name "*log*" |xargs ls -ltr ; sleep 30; done
Tue Oct  8 16:16:21 UTC 2019
-rw-r----- 1 grid oinstall 314573018 Oct  8 16:06 ./alert/log_1.xml
-rw-r----- 1 grid oinstall  93403952 Oct  8 16:06 ./trace/listener_1.log
-rw-r----- 1 grid oinstall   7160188 Oct  8 16:14 ./trace/listener_2.log
-rw-r----- 1 grid oinstall  18221485 Oct  8 16:14 ./alert/log_2.xml
-rw-r----- 1 grid oinstall   4483958 Oct  8 16:16 ./trace/listener.log
-rw-r----- 1 grid oinstall   9877915 Oct  8 16:16 ./alert/log.xml
Tue Oct  8 16:16:51 UTC 2019
-rw-r----- 1 grid oinstall 314573018 Oct  8 16:06 ./alert/log_1.xml
-rw-r----- 1 grid oinstall  93403952 Oct  8 16:06 ./trace/listener_1.log
-rw-r----- 1 grid oinstall   7160188 Oct  8 16:14 ./trace/listener_2.log
-rw-r----- 1 grid oinstall  18221485 Oct  8 16:14 ./alert/log_2.xml
-rw-r----- 1 grid oinstall   4760371 Oct  8 16:16 ./trace/listener_3.log
-rw-r----- 1 grid oinstall  10485952 Oct  8 16:16 ./alert/log_3.xml ★ log.xmlが10MBになったタイミングで切り替え
-rw-r----- 1 grid oinstall   1192174 Oct  8 16:16 ./trace/listener.log
-rw-r----- 1 grid oinstall   2627008 Oct  8 16:16 ./alert/log.xml
・・・
Tue Oct  8 16:18:51 UTC 2019
-rw-r----- 1 grid oinstall  7160188 Oct  8 16:14 ./trace/listener_2.log ★archiveを3つまで保存。古いのは削除
-rw-r----- 1 grid oinstall 18221485 Oct  8 16:14 ./alert/log_2.xml
-rw-r----- 1 grid oinstall  4760371 Oct  8 16:16 ./trace/listener_3.log ★
-rw-r----- 1 grid oinstall 10485952 Oct  8 16:16 ./alert/log_3.xml
-rw-r----- 1 grid oinstall 10485930 Oct  8 16:18 ./alert/log_4.xml
-rw-r----- 1 grid oinstall  4693659 Oct  8 16:18 ./trace/listener_4.log ★
-rw-r----- 1 grid oinstall   561487 Oct  8 16:18 ./trace/listener.log
-rw-r----- 1 grid oinstall  1381423 Oct  8 16:18 ./alert/log.xml
```

あれ、log.xmlを基準にするってことは、ADRのポリシーどうなってるの？
→ ポリシーが設定されていない！

```
＄adrci
adrci> set home diag/tnslsnr/xxxx/listener
adrci> show control

ADR Home = /u01/app/grid/diag/tnslsnr/xxxx/listener:
*************************************************************************
0 rows fetched

```

このブログ ([New Size Based ADR Purge Policy in 12.2](https://dbamarco.wordpress.com/2019/04/05/new-size-based-adr-purge-policy-in-12-2/)) を見て、12.2からサイズベースのポリシーができたのか！と思ってみてみてもやっぱり設定されていない。



```

＄adrci
adrci> set home diag/tnslsnr/xxxx/listener
adrci> select * from adr_control_aux;

ADR Home = /u01/app/grid/diag/tnslsnr/xxxx/listener:
*************************************************************************
0 rows fetched
```

18cまでは？設定されている。。

```
＄adrci
adrci> set home diag/tnslsnr/xxxx/listener
adrci> show control

ADR Home = /u01/app/18.0.0.0/grid_base/diag/tnslsnr/xxxx/listener:
*************************************************************************
ADRID                SHORTP_POLICY        LONGP_POLICY         LAST_MOD_TIME                            LAST_AUTOPRG_TIME                        LAST_MANUPRG_TIME                        ADRDIR_VERSION       ADRSCHM_VERSION      ADRSCHMV_SUMMARY     ADRALERT_VERSION     CREATE_TIME
-------------------- -------------------- -------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- -------------------- -------------------- -------------------- -------------------- ----------------------------------------
1914059842           720                  8760                 2019-07-03 13:02:32.425031 +09:00                                                                                          1                    2                    110                  1                    2019-07-03 13:02:32.425031 +09:00
1 row fetched
```

19cからリスナーのADRのポリシーが設定されなくなった？？？
そもそも、diag/tnslsn配下のメンテナンスって、従来どのプロセスが行っていたのだろう。。