Oracle hat mit der Version Oracle 19 zwei neue Parameter für die Konfiguration seiner Listener (incl. SCAN, ASM usw.) eingeführt und damit das Standardverhalten der Listener Logdateien geändert. Analog zum XML-File werden jetzt auch die normalen Text-Dateien rotiert, wenn sie eine bestimmte Größe erreichen.
Mit dem ersten Parameter lässt sich die Anzahl der Listener Logdateien bestimmen, durch die rolliert werden soll. Mit dem zweiten Parameter bestimmt man die Größe, bei der ein rotate stattfinden soll
Siehe auch hier:
Mit dem Parameter LOG_FILE_NUM_listener_name kann die Anzahl der listener.ora Dateien angegeben werden, zwischen denen rotiert wird. Bei einem Wert n>=1 gibt es eine aktuelle Listener Logdatei listener_name.ora und n ältere Versionen. Die Nummerierung der Dateien erfolgt fortlaufend und richtet sich nach der Nummerierung der XML Version der Listener Logdateien.
Die älteste Datei wird beim Rotate gelöscht, wenn der Parameter gesetzt ist.
Default | Kein Default Wert. Wenn kein Wert angegeben oder der Wert auf 0 gesetzt wird, wächst die Listener Logdatei laut Oracle Dokumentation ohne Begrenzung und es findet theoretisch kein rotate statt |
Achtung | Dem widerspricht jedoch der zweite Parameteter LOG_FILE_SIZE_listener_name mit dessen Default Wert. |
Werte | integer Zahl |
Beispiel | LOG_FILE_NUM_listener=3 |
Über den Parameter LOG_FILE_SIZE_listener_name kann die Größe in MB der Listener Logdateien angegeben werden, ab der rotiert wird.
Default | 300 MB |
Achtung | Die maximale Größe wirkt sich nicht nur auf die Plaintext- sondern auch auf die XML- Listener-Logdateien aus. Sprich wächst eine der beiden Dateien über die angegebene Größe an, so werden beide Dateien rotiert |
Werte | integer Zahl |
Beispiel | LOG_FILE_NUM_listener=3 |
Setzen nur des Parameters LOG_FILE_SIZE_listener auf 10 MB. Vor der Änderung des Parameters und dem Restart des Listeners waren die Dateien 14 bzw. 24 MB groß. Nach dem Restart wurden diese rotiert zu log_1.xml bzw. listener_1.log da eine der Dateien größer 10 MB war:
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 28M Feb 8 16:04 alert/log.xml
-rw-r----- 1 grid oinstall 14M Feb 8 16:04 trace/listener.log
$ tail -2 listener.ora
# LOG_FILE_NUM_listener=5
LOG_FILE_SIZE_listener=10
$
$ lsnrctl stop listener
$ lsnrctl start listener
$
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 28M Feb 8 16:05 alert/log_1.xml
-rw-r----- 1 grid oinstall 1012K Feb 8 17:51 alert/log.xml
-rw-r----- 1 grid oinstall 14M Feb 8 16:05 trace/listener_1.log
-rw-r----- 1 grid oinstall 593K Feb 8 17:51 trace/listener.log
Nach einer weiteren Verkleinerung des Parameters auf 1 MB und dem Restart des Listeners wurde sofort ein rotate durchgeführt. Nach einigem Warten sieht man, dass wenn die log.xml Datei die Grenze von 1 MB erreicht hat, sowohl diese als auch die listener.log Datei rotiert wird:
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 28M Feb 8 16:05 alert/log_1.xml
-rw-r----- 1 grid oinstall 2.1M Feb 8 17:41 alert/log.xml
-rw-r----- 1 grid oinstall 14M Feb 8 16:05 trace/listener_1.log
-rw-r----- 1 grid oinstall 1.2M Feb 8 17:41 trace/listener.log
$
$ tail -2 listener.ora
# LOG_FILE_NUM_listener=5
LOG_FILE_SIZE_listener=1
$
$ lsnrctl stop listener
$ lsnrctl start listener
$
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 28M Feb 8 16:05 alert/log_1.xml
-rw-r----- 1 grid oinstall 2.1M Feb 8 17:42 alert/log_2.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:45 alert/log_3.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:47 alert/log_4.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:49 alert/log_5.xml
-rw-r----- 1 grid oinstall 1012K Feb 8 17:51 alert/log.xml
-rw-r----- 1 grid oinstall 14M Feb 8 16:05 trace/listener_1.log
-rw-r----- 1 grid oinstall 1.2M Feb 8 17:42 trace/listener_2.log
-rw-r----- 1 grid oinstall 599K Feb 8 17:45 trace/listener_3.log
-rw-r----- 1 grid oinstall 600K Feb 8 17:47 trace/listener_4.log
-rw-r----- 1 grid oinstall 600K Feb 8 17:49 trace/listener_5.log
-rw-r----- 1 grid oinstall 593K Feb 8 17:51 trace/listener.log
Wird der Parameter kleiner 1 gesetzt, interpretiert Oracle den Wert als 10. Nach dem Restart des Listeners werden die Logfiles rotiert, sobald die XML Datei die Grenze von 10 MB erreicht::
$ tail -2 listener.ora
# LOG_FILE_NUM_listener=5
LOG_FILE_SIZE_listener=0
$
$ lsnrctl stop listener
$ lsnrctl start listener
$
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 28M Feb 8 16:05 alert/log_1.xml
-rw-r----- 1 grid oinstall 2.1M Feb 8 17:42 alert/log_2.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:45 alert/log_3.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:47 alert/log_4.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:49 alert/log_5.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:04 alert/log_6.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:11 alert/log_7.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:18 alert/log_8.xml
-rw-r----- 1 grid oinstall 4.1M Feb 8 18:21 alert/log.xml
-rw-r----- 1 grid oinstall 14M Feb 8 16:05 trace/listener_1.log
-rw-r----- 1 grid oinstall 1.2M Feb 8 17:42 trace/listener_2.log
-rw-r----- 1 grid oinstall 599K Feb 8 17:45 trace/listener_3.log
-rw-r----- 1 grid oinstall 600K Feb 8 17:47 trace/listener_4.log
-rw-r----- 1 grid oinstall 600K Feb 8 17:49 trace/listener_5.log
-rw-r----- 1 grid oinstall 5.9M Feb 8 18:04 trace/listener_6.log
-rw-r----- 1 grid oinstall 5.9M Feb 8 18:11 trace/listener_7.log
-rw-r----- 1 grid oinstall 5.9M Feb 8 18:18 trace/listener_8.log
-rw-r----- 1 grid oinstall 2.4M Feb 8 18:21 trace/listener.log
Wird der Parameter entfernt, interpretiert Oracle den Wert als 300. Nach dem Restart des Listeners werden die Logfiles rotiert, sobald die XML Datei die Grenze von 300 MB erreicht::
$ tail -2 listener.ora
# LOG_FILE_NUM_listener=5
# LOG_FILE_SIZE_listener=1
$
$ lsnrctl stop listener
$ lsnrctl start listener
$
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 28M Feb 8 16:05 alert/log_1.xml
-rw-r----- 1 grid oinstall 2.1M Feb 8 17:42 alert/log_2.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:45 alert/log_3.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:47 alert/log_4.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:49 alert/log_5.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:04 alert/log_6.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:11 alert/log_7.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:18 alert/log_8.xml
-rw-r----- 1 grid oinstall 301M Feb 9 19:19 alert/log_9.xml
-rw-r----- 1 grid oinstall 1.7M Feb 9 19:20 alert/log.xml
-rw-r----- 1 grid oinstall 14M Feb 8 16:05 trace/listener_1.log
-rw-r----- 1 grid oinstall 1.2M Feb 8 17:42 trace/listener_2.log
-rw-r----- 1 grid oinstall 599K Feb 8 17:45 trace/listener_3.log
-rw-r----- 1 grid oinstall 600K Feb 8 17:47 trace/listener_4.log
-rw-r----- 1 grid oinstall 600K Feb 8 17:49 trace/listener_5.log
-rw-r----- 1 grid oinstall 5.9M Feb 8 18:04 trace/listener_6.log
-rw-r----- 1 grid oinstall 5.9M Feb 8 18:11 trace/listener_7.log
-rw-r----- 1 grid oinstall 5.9M Feb 8 18:18 trace/listener_8.log
-rw-r----- 1 grid oinstall 176M Feb 9 19:19 trace/listener_9.log
-rw-r----- 1 grid oinstall 1003K Feb 9 19:20 trace/listener.log
Der Einfachheit halber wurde in dem Testsystem der Parameter LOG_FILE_SIZE_listener wieder auf 1 MB gesetzt und die listener_4.log bis listener_9.log gelöscht. Beim nächsten Logwechsel werden aufgrund der höchsten Nummer der XML Dateien log_9.xml die Dateien log_9.xml und listener_10.log angelegt:
$ rm trace/listener_[4-9].log
$
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 28M Feb 8 16:05 alert/log_1.xml
-rw-r----- 1 grid oinstall 2.1M Feb 8 17:42 alert/log_2.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:45 alert/log_3.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:47 alert/log_4.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:49 alert/log_5.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:04 alert/log_6.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:11 alert/log_7.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:18 alert/log_8.xml
-rw-r----- 1 grid oinstall 301M Feb 9 19:19 alert/log_9.xml
-rw-r----- 1 grid oinstall 225K Feb 9 19:26 alert/log.xml
-rw-r----- 1 grid oinstall 14M Feb 8 16:05 trace/listener_1.log
-rw-r----- 1 grid oinstall 1.2M Feb 8 17:42 trace/listener_2.log
-rw-r----- 1 grid oinstall 599K Feb 8 17:45 trace/listener_3.log
-rw-r----- 1 grid oinstall 130K Feb 9 19:26 trace/listener.log
$
$ tail -2 listener.ora
# LOG_FILE_NUM_listener=5
LOG_FILE_SIZE_listener=1
$
$ lsnrctl stop listener
$ lsnrctl start listener
$
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 1.1M Feb 9 19:27 alert/log_10.xml
-rw-r----- 1 grid oinstall 28M Feb 8 16:05 alert/log_1.xml
-rw-r----- 1 grid oinstall 2.1M Feb 8 17:42 alert/log_2.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:45 alert/log_3.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:47 alert/log_4.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:49 alert/log_5.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:04 alert/log_6.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:11 alert/log_7.xml
-rw-r----- 1 grid oinstall 11M Feb 8 18:18 alert/log_8.xml
-rw-r----- 1 grid oinstall 301M Feb 9 19:19 alert/log_9.xml
-rw-r----- 1 grid oinstall 66K Feb 9 19:27 alert/log.xml
-rw-r----- 1 grid oinstall 599K Feb 9 19:27 trace/listener_10.log
-rw-r----- 1 grid oinstall 14M Feb 8 16:05 trace/listener_1.log
-rw-r----- 1 grid oinstall 1.2M Feb 8 17:42 trace/listener_2.log
-rw-r----- 1 grid oinstall 599K Feb 8 17:45 trace/listener_3.log
-rw-r----- 1 grid oinstall 38K Feb 9 19:27 trace/listener.log
Erst wenn man die XML und die Plaintext Dateien (hier 3 bis 10) löscht, wird die Nummerierung der folgenden Dateien beim nächsten rotate zurückgesetzt:
$ rm alert/log_[4-9].xml
$ rm alert/log_10.xml trace/listener_10.log
$
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 28M Feb 8 16:05 alert/log_1.xml
-rw-r----- 1 grid oinstall 2.1M Feb 8 17:42 alert/log_2.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:45 alert/log_3.xml
-rw-r----- 1 grid oinstall 448K Feb 9 19:36 alert/log.xml
-rw-r----- 1 grid oinstall 14M Feb 8 16:05 trace/listener_1.log
-rw-r----- 1 grid oinstall 1.2M Feb 8 17:42 trace/listener_2.log
-rw-r----- 1 grid oinstall 599K Feb 8 17:45 trace/listener_3.log
-rw-r----- 1 grid oinstall 262K Feb 9 19:36 trace/listener.log
$
$
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 28M Feb 8 16:05 alert/log_1.xml
-rw-r----- 1 grid oinstall 2.1M Feb 8 17:42 alert/log_2.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:45 alert/log_3.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 19:38 alert/log_4.xml
-rw-r----- 1 grid oinstall 18K Feb 9 19:38 alert/log.xml
-rw-r----- 1 grid oinstall 14M Feb 8 16:05 trace/listener_1.log
-rw-r----- 1 grid oinstall 1.2M Feb 8 17:42 trace/listener_2.log
-rw-r----- 1 grid oinstall 599K Feb 8 17:45 trace/listener_3.log
-rw-r----- 1 grid oinstall 600K Feb 9 19:38 trace/listener_4.log
-rw-r----- 1 grid oinstall 11K Feb 9 19:38 trace/listener.log
Testen wir jetzt den zweiten Parameter LOG_FILE_NUM_* . Im Gegensatz zu Änderungen des LOG_FILE_SIZE_* findet hier kein switch des Logfiles statt, wenn der Listener restartet wird, sondern erst wenn die log,xml die Grenze von 1.1 MB erreicht und nach log_7.xml verschoben wird:
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 28M Feb 8 16:05 alert/log_1.xml
-rw-r----- 1 grid oinstall 2.1M Feb 8 17:42 alert/log_2.xml
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:45 alert/log_3.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 19:38 alert/log_4.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 19:57 alert/log_5.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 19:59 alert/log_6.xml
-rw-r----- 1 grid oinstall 254K Feb 9 19:59 alert/log.xml
-rw-r----- 1 grid oinstall 14M Feb 8 16:05 trace/listener_1.log
-rw-r----- 1 grid oinstall 1.2M Feb 8 17:42 trace/listener_2.log
-rw-r----- 1 grid oinstall 599K Feb 8 17:45 trace/listener_3.log
-rw-r----- 1 grid oinstall 600K Feb 9 19:38 trace/listener_4.log
-rw-r----- 1 grid oinstall 599K Feb 9 19:57 trace/listener_5.log
-rw-r----- 1 grid oinstall 600K Feb 9 19:59 trace/listener_6.log
-rw-r----- 1 grid oinstall 149K Feb 9 19:59 trace/listener.log
$
$ tail -2 listener.ora
LOG_FILE_NUM_listener=5
LOG_FILE_SIZE_listener=1
$
$ lsnrctl stop listener
$ lsnrctl start listener
$
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 1.1M Feb 8 17:45 alert/log_3.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 19:38 alert/log_4.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 19:57 alert/log_5.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 19:59 alert/log_6.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 20:05 alert/log_7.xml
-rw-r----- 1 grid oinstall 895K Feb 9 20:07 alert/log.xml
-rw-r----- 1 grid oinstall 599K Feb 8 17:45 trace/listener_3.log
-rw-r----- 1 grid oinstall 600K Feb 9 19:38 trace/listener_4.log
-rw-r----- 1 grid oinstall 599K Feb 9 19:57 trace/listener_5.log
-rw-r----- 1 grid oinstall 600K Feb 9 19:59 trace/listener_6.log
-rw-r----- 1 grid oinstall 598K Feb 9 20:05 trace/listener_7.log
-rw-r----- 1 grid oinstall 524K Feb 9 20:07 trace/listener.log
Nach einigem Warten werden die 7er Dateien durchgeschoben:
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 1.1M Feb 9 19:57 alert/log_5.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 19:59 alert/log_6.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 20:05 alert/log_7.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 20:07 alert/log_8.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 20:09 alert/log_9.xml
-rw-r----- 1 grid oinstall 152K Feb 9 20:09 alert/log.xml
-rw-r----- 1 grid oinstall 599K Feb 9 19:57 trace/listener_5.log
-rw-r----- 1 grid oinstall 600K Feb 9 19:59 trace/listener_6.log
-rw-r----- 1 grid oinstall 598K Feb 9 20:05 trace/listener_7.log
-rw-r----- 1 grid oinstall 600K Feb 9 20:07 trace/listener_8.log
-rw-r----- 1 grid oinstall 600K Feb 9 20:09 trace/listener_9.log
-rw-r----- 1 grid oinstall 89K Feb 9 20:09 trace/listener.log
Nach weiteren Warten sieht man, dass die 7er Dateien gelöscht werden:
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 1.1M Feb 9 20:11 alert/log_10.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 20:13 alert/log_11.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 20:15 alert/log_12.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 20:07 alert/log_8.xml
-rw-r----- 1 grid oinstall 1.1M Feb 9 20:09 alert/log_9.xml
-rw-r----- 1 grid oinstall 163K Feb 9 20:15 alert/log.xml
-rw-r----- 1 grid oinstall 600K Feb 9 20:11 trace/listener_10.log
-rw-r----- 1 grid oinstall 600K Feb 9 20:13 trace/listener_11.log
-rw-r----- 1 grid oinstall 600K Feb 9 20:15 trace/listener_12.log
-rw-r----- 1 grid oinstall 600K Feb 9 20:07 trace/listener_8.log
-rw-r----- 1 grid oinstall 600K Feb 9 20:09 trace/listener_9.log
-rw-r----- 1 grid oinstall 95K Feb 9 20:15 trace/listener.log
Damit kein rotate stattfindet und pro Tag nur eine listener.ora Datei erzeugt wird, muss der Parameter log_file_size_* auf einen Wert gestellt werden, der größer ist, als die Menge an XML-Dateien pro Tag anfallen (mehrere GB, hier 5.000 MB):
$ tail -2 listener.ora
# LOG_FILE_NUM_listener=5
LOG_FILE_SIZE_listener=5000
Daneben benötigt man ein Skript, dass die listener.ora Datei verschiebt und komprimiert. Zusätzlich muss im Anschluss noch ein Löschen bzw. Purgen der XML Datei erfolgen, damit diese Datei keinen rotate anstößt.
Hier ein kleines Beispiel zum Purgen aller Einträge mit einem adrci Aufruf aus dem/den XML-File(s) die älter als fünf Minuten sind.
Achtung: beim SET HOME muss der Name des Listeners dem des Verzeichnis im DIAG-Home entsprechen (Casse Senstiv) und die Variable ORACLE_BASE muss richtig gesetzt sein:
[grid@tl19hawe03:~]$ echo $ORACLE_BASE
/u01/app/grid
[grid@tl19hawe03:~]$ ls -lh /u01/app/grid/diag/tnslsnr/tl19hawe03/
total 0
drwxr-xr-x 14 grid oinstall 179 Dec 29 12:24 asmnet1lsnr_asm
drwxr-xr-x 14 grid oinstall 179 Dec 29 12:25 listener
drwxr-xr-x 14 grid oinstall 179 Dec 29 12:24 listener_scan1
drwxr-xr-x 14 grid oinstall 179 Dec 29 12:25 listener_scan2
drwxr-xr-x 14 grid oinstall 179 Dec 29 12:25 listener_scan3
$ date ; adrci exec="SET HOME listener;SHOW HOME; purge -age 5"
Wed Feb 9 20:30:30 CET 2022
ADR Homes:
diag/tnslsnr/tl19hawe03/listener
Die Plaintext Listenerlog Dateien werden einmalig gelöscht:
$ rm alert/log_[1-9]*.xml trace/listener_[1-9]*.log
$ ls -lh alert/* trace/*
-rw-r----- 1 grid oinstall 162K Feb 9 20:30 alert/log.xml
-rw-r----- 1 grid oinstall 94K Feb 9 20:30 trace/listener.log
Mit folgenden drei Befehlen könnte dann ein rudimentäres Archivieren der Listener.log Datei und ein Leeren der log.xml Datei stattfinden:
$ mv listener.log listener.log.$(date '+%Y%m%d')
$ gzip listener.log.$(date '+%Y%m%d')
$ adrci exec="SET HOME listener; purge -age 5"
Das vor 19c Verhalten beim Listener.log lässt sich nach dem Update zwar nicht 100%ig nachbilden, der Parameter LOG_FILE_SIZE_* muss vermutlich für jeden Listener gesetzt werden. Je nachdem welche Vorgaben die Umgebung erfüllen muss, kann es z .B. bei kleinen Testsystemen sinnvoll sein, zusätzlich mit LOG_FILE_NUM_* automatisch nur eine kleine Anzahl kleiner Dateien vorzuhalten.
In unserer Know-How Datenbank finden Sie mehr als 300 ausführliche Beiträge zu den
Oracle-Themen wie DBA, SQL, PL/SQL, APEX und vielem mehr.
Hier erhalten Sie Antworten auf Ihre Fragen.