やったこと
19c新機能で、リスナー・ログがデフォルトで自動ローテーションされるようになったと聞き、試してみた。
結果
- 
19cでは、リスナー・ログが自動でローテートされる(デフォルトで300MB)。だが、削除はされないので、LOG_FILE_NUM_xxxは設定したほうが良い。 
- 
LOG_FILE_SIZE_で指定するサイズは、trace/listener.logではなくalert/log.xmlのサイズを基準にローテーションされている。( ドキュメントに記載はないが、検証の結果そうなった ) 
- 
この動作を無効 ( 従来の方式 ) にする方法は不明 ( ドキュメント上見当たらない ) 。極端に大きい値を指定すれば実質的に無効にできるが、log.xmlもローテートされなくなる。そして、19cでは、リスナーのDIAG_HOMEにポリシーが設定されていない。。 
- 
listener.oraに指定するパラメータ 
- LOG_FILE_SIZE_ (デフォルト:300MB)
- LOG_FILE_NUM_ (デフォルトなし:無制限)
- この動作を念頭に、従来は独自実装していたログ・ローテーション実装を見直す必要がありそう。だが、謎が多い。
参考ドキュメント
Database New Features Guide
Net Services Administrator's Guide
Database Net Servicesリファレンス
検証内容
デフォルト
→ 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) を見て、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配下のメンテナンスって、従来どのプロセスが行っていたのだろう。。
