Cambiar logfile del Listener sin tener que detenerlo

Hay veces que el log del listener crece sin parar y puede llegar a pesar varios GB . Una solucion para esto es detener el listener, truncar el archivo y volver a levantarlo, pero hay veces que las base de datos son 24/7 y esta solucion no sirve .

La solucion que voy a postear es una de las muchas que encontre en este link : http://msutic.blogspot.com/2009/06/truncating-rotating-flushing.html

La solución que implemente fue en un Oracle 10.2.0.5 y consistia en crear un nuevo log para el listener por cada mes del año con el siguiente formato :listener_yyyymm.log , asi cada mes del año iba a tener su propio log.

Estos son los pasos :

1) Conectarse con el utilitario LSNRCTL y setear el listener actual (Por lo general el nombre default es LISTENER)

C:UsersJCAJ>lsnrctl

LSNRCTL> set current_listener LISTENER

Current Listener is LISTENER

2) Luego setear el logfile por le nombre que deseamos , en este caso listener_201309.log

LSNRCTL> set log_file listener_201309.log

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

LISTENER parameter «log_file» set to listener_201309.log

The command completed successfully

3 ) Con lo anterior el log que habia antes «listener.log» ha dejado de ser utilizado, y ahora es listener_201309.log el que esta funcionado como log para el listener, para esto confirmamos con un lsnrctl status y vemos la fila que tiene el parametro Listener Log File :

Listener Log File         C:appJCAJproduct11.2.0dbhome_1networkloglistener_201309.log

4) Como paso final se van a grabar los cambios realizados al listener.ora, por que en caso que el servidor se apage de forma abrupta o se reinicie el listener este va a comenzar a grabar nuevamente en el log default, y no es lo que queremos. Estos cambios los podemos grabar desde la misma herramienta lsnrctl, la que al grabar los cambios va a dejar un respaldo en la carpeta donde este el log con la configuracion del listener.ora anterior.

LSNRCTL> save_config

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))

Saved LISTENER configuration parameters.

Listener Parameter File   C:appJCAJproduct11.2.0dbhome_1networkadminlistener.ora

Old Parameter File   C:appJCAJproduct11.2.0dbhome_1networkadminlistener.bak

The command completed successfully

5) Ahora si vamos a revisar el archivo listener.ora al final de este va a aparecer la hora de cambio y el parametro para que en caso que se reinicie siga escribiendo en el log correcto :

#—-ADDED BY TNSLSNR 06-SEP-2013 11:32:48—

LOG_FILE_LISTENER = listener_201309.log

#——————————————–

Bueno , despues de todo esto el log original podria ser borrado o archivado.

En el link que comente en el principio, hay mas soluciones en caso de que estemos en un escenario en que el listener no se puede bajar.

Esto sirve para las base de datos Oracle 10g en adelante, pero hay que recordar que 11g viene con un sistema que es el Automatic Diagnostic Repository (ADR).