Quantcast
Channel: database-blog
Viewing all articles
Browse latest Browse all 10

Workshop: Sybase ASE Errorlog rotieren – Teil 1

$
0
0

Das Errorlog des Sybase Adaptive Server Enterprise (ASE) enthält alle wichtigen Informationen des Datenbank-Servers. Dies beinhaltet alle Startup-Meldungen, Tuning-Hinweise und System-Warnungen, sowie Laufzeitfehler, Stacktraces und individuelle Ausgaben. Somit ist es nicht verwunderlich, dass die Logdatei mit der Zeit wächst und gerade bei eingeschalteten Trace-Levels schnell mehrere 100 MB oder sogar einige GB groß werden kann.
In diesem Workshop soll gezeigt werden, wie das ASE Errorlog im laufenden Betrieb rotiert werden kann.

Als Erstes muss ermittelt werden, wo sich das aktuelle ASE Errorlog befindet. Standardmäßig befindet sich unter: $SYBASE/ASE-15_0/install/SERVERNAME.log
Um sicher zu gehen kann man dies aber auch in einer isql-Session auslesen. Dafür sollte man sich mit dem Benutzer ‘sa’ an der Datenbank anmelden:

$ isql -U sa -w 1024 -S CORRINO
1>

“CORRINO” steht hier für den ASE-Servernamen und ist entsprechend anzupassen.
Danach kann man die Variable @@errorlog auslesen. Sie beinhaltet den kompletten Pfad zum ASE Errorlog.

1> select @@errorlog
2> go
   ------------------------------------------------------------------------------------------------------------------------
   /opt/sybase/ASE-15_0/install/CORRINO.log 
(1 row affected)

Der ASE bietet derzeit keinen direkten Befehl zum Rotieren des Errorlogs, dafür aber die Stored Procedure “sp_errorlog” zum dynamischen Ändern des Pfades. Die Syntax ist wie folgt:

sp_errorlog “change log“, “new_path“ [,{“jslog true“ | “jslog false“}]

– “new_path” gibt den neuen Pfad zum Errorlog an
– “jslog true“ | “jslog false“ gibt an, ob der Log des Jobscheduler ebenso angepasst werden soll.

Damit haben wir schon alles, was wir zum Rotieren des Errorlogs benötigen. Wir gehen nun wie folgt vor:

1. Das Errorlog auf ein temporäres Log umstellen. (Dabei ist zu beachten, dass der Betriebssystem-Benutzer, unter dem der ASE läuft, Schreibberechtigung in dem Verzeichnis hat.) Man führt nun im isql folgenden Befehl aus:

1> sp_errorlog "change log", "/opt/sybase/ASE-15_0/install/CORRINO-tmp.log" , "jslog false"
2> go
Change in errorlog path complete. New file: '/opt/sybase/ASE-15_0/install/CORRINO-tmp.log'.
Update the -e argument in the runserver file with the new ASE error log path to reflect the error log change.
(return status = 0)

2. Kontrolle des Dateisystems und der temporären ASE Errorlog Datei:

$ ls -la /opt/sybase/ASE-15_0/install/
total 13072
...
-rw-r-- 1 sybase sybase 258007 Oct 6 22:51 CORRINO.log
-rw-r-- 1 sybase sybase    269 Oct 6 22:51 CORRINO-tmp.log
...

$ cat /opt/sybase/ASE-15_0/install/CORRINO-tmp.log
00:0002:00000:00027:2012/10/06 22:51:18.33 kernel  Engine writing test message to ASE error log.
00:0002:00000:00027:2012/10/06 22:51:18.33 kernel  Changed errorlog file from '/opt/sybase/ASE-15_0/install/CORRINO.log' to '/opt/sybase/ASE-15_0/install/CORRINO-tmp.log'.

3. Umbenennen und zippen der alten Errorlog Datei:

$ cd /opt/sybase/ASE-15_0/install/
$ mv CORRINO.log CORRINO.1.log
$ gzip CORRINO.1.log

4. Ändern des Errorlog-Pfades auf den ursprünglichen Wert:

1> sp_errorlog "change log", "/opt/sybase/ASE-15_0/install/CORRINO.log" , "jslog false"
2> go
Change in errorlog path complete. New file: '/opt/sybase/ASE-15_0/install/CORRINO.log'.
Update the -e argument in the runserver file with the new ASE error log path to reflect the error log change.
(return status = 0)

5. Kontrollieren des Dateisystems und der neuen Errorlog-Datei:

$ ls -la /opt/sybase/ASE-15_0/install/
...
-rw-r-----   1 sybase sybase    24043 Oct  6 22:51 CORRINO.1.log.gz
-rw-r-----   1 sybase sybase      269 Oct  6 23:09 CORRINO.log
-rw-r-----   1 sybase sybase      442 Oct  6 23:09 CORRINO-tmp.log
...

$ cat CORRINO.log 
00:0002:00000:00027:2012/10/06 23:09:50.21 kernel  Engine writing test message to ASE error log.
00:0002:00000:00027:2012/10/06 23:09:50.21 kernel  Changed errorlog file from '/opt/sybase/ASE-15_0/install/CORRINO-tmp.log' to '/opt/sybase/ASE-15_0/install/CORRINO.log'.

6. Löschen der temporären Errorlog-Datei:

$ rm /opt/sybase/ASE-15_0/install/CORRINO-tmp.log

Fazit: Das ASE Errorlog wurde nun rotiert und gezippt ohne den ASE neu zu starten. Das ganze lässt sich sicher auch gut skripten und mit Betriebssystem-Mitteln wie logrote oder cron kombinieren.

Mehr Informationen zur Stored Procedure “sp_errorlog” findet man im Sybase Infocenter.

Nachtrag: Verwendet man die Stored Procedure sp_errorlog um den Pfad der Errorlog Datei generell umzustellen, muss man anschließend die RUNSERVER Datei anpassen, in der Pfad zum ASE Errorlog vermerkt ist. Ansonsten wird der ASE nicht wieder starten! In diesem POST wurde diese Anpassung nicht vorgenommen, da wir nur temporär auf ein neues Errorlog umgestellt und anschließend wieder den originalen Pfad verwendet haben.


Viewing all articles
Browse latest Browse all 10