1. Documentación en Tahiti -> Masters Book List -> Net Services Administrator’s Guide -> 16 Troubleshooting Oracle Net Services -> Tracing Error Information for Oracle Net Services
2. Podemos habilitar trazas en el LISTENER pero también podemos generar trazas de clientes que usen los servicios de SQL*Net (Por ejemplo SQL*Plus). Empezamos habilitando trazas en el LISTENER. Para habilitar trazas en el LISTENER tenemos que modificar el fichero listener.ora. Repasamos los diferentes parámetros principales que podemos habilitar en el LISTENER:
- DIAG_ADR_ENABLED_listener_name => Habilita la jerarquía del repositorio de trazas y logs (Por defecto=ON)
- ADR_BASE_listener_name => Directorio base para ADR (Por defecto=$ORACLE_BASE)
- LOGGING_listener_name => Habilita logging del LISTENER, no confundir con trazas (Por defecto=ON)
- TRACE_LEVEL_listener_name => Nivel de trazas: OFF [0] / USER [4] / ADMIN [10] / SUPPORT [16] (Por defecto=OFF)
- TRACE_TIMESTAMP_listener_name => Introducir un TIMESTAMP en cada evento (Por defecto=ON)
Los siguientes parámetros sólo aplican cuando tenemos el parámetro DIAG_ADR_ENABLED=OFF
- TRACE_DIRECTORY_listener_name => Directorio destino del fichero de trazas (Por defecto=ORACLE_HOME/network/trace)
- TRACE_FILE_listener_name => Nombre del fichero de trazas (Por defecto=listener.trc)
- TRACE_FILELEN_listener_name => Tamaño máximo en KB del fichero (Por defecto=unlimited)
- TRACE_FILENO_listener_name => Número de ficheros de trazas (Por defecto=1)
Por defecto, tenemos el parámetro DIAG_ADR_ENABLED=ON (aunque no lo especifiquemos), luego para habilitar trazas basta con definir el parámetro TRACE_LEVEL. Si queremos que las trazas vayan a un fichero distinto al que se utilizado por defecto con ADR, debemos fijar el parámetro DIAG_ADR_ENABLED=OFF y luego especificar el directorio y nombre del fichero (parámetros TRACE_FILE y TRACE_DIRECTORY).
# Habilitemos trazas para el LISTENER # Añadimos las siguientes lineas al fichero $ORACLE_HOME/network/admin/listener.ora TRACE_LEVEL_LISTENER = USER # Cargamos la configuración del LISTENER para aplicar los cambios lsnrctl reload # Podemos obtener el nombre del fichero de trazas sacando el STATUS del LISTENER lsnrctl status | grep "Trace File" # Para deshabilitarlo, tan sólo tenemos que borrar el parámetro y volver a cargar la configuración del LISTENER lsnrctl reload
Podemos habilitar trazas sin necesidad de modificar el fichero listener.ora con la utilidad LSNRCTL.
# Iniciamos sesión con el comando lsnrctl lsnrctl # Activamos trazas del LISTENER nivel USER trace USER LISTENER # Este comando es equivalente a "set TRC_LEVEL USER" # Desactivamos la trazas trace OFF LISTENER
3. Ahora vamos a habilitar trazas para procesos cliente de SQL*Net y también para los procesos servidor.
# Creamos dos directorios para almacenar las trazas de SQL*Net mkdir -p /u01/app/oracle/trace/client mkdir -p /u01/app/oracle/trace/server # Añadimos las siguientes lineas al fichero $ORACLE_HOME/network/admin/sqlnet.ora DIAG_ADR_ENABLED = OFF TRACE_LEVEL_CLIENT = SUPPORT TRACE_LEVEL_SERVER = SUPPORT TRACE_DIRECTORY_CLIENT = /u01/app/oracle/trace/client TRACE_DIRECTORY_SERVER = /u01/app/oracle/trace/server # Abrimos una conexión via SQL*Net con SQL*Plus para revisar las trazas sqlplus system@ocm # Lanzamos cualquier consulta, Por ej.: -- SELECT SYSDATE FROM DUAL; # Podemos revisar las trazas en el directorio configurado # Primero vemos las trazas del proceso cliente (El proceso con PID 5859 se corresponde con mi proceso sqlplus) more /u01/app/oracle/trace/client/cli_5859.trc # Examinamos después el proceso servidor que se ha creado (El proceso con PID 5891 es el proceso servidor) more /u01/app/oracle/trace/server/svr_5891.trc # Podemos buscar el punto donde lanzamos la consulta grep -n date /u01/app/oracle/trace/server/svr_5891.trc # Borramos las lineas añadidas al fichero $ORACLE_HOME/network/admin/sqlnet.ora para deshabilitar las trazas DIAG_ADR_ENABLED = OFF TRACE_LEVEL_CLIENT = SUPPORT TRACE_LEVEL_SERVER = SUPPORT TRACE_DIRECTORY_CLIENT = /u01/app/oracle/trace/client TRACE_DIRECTORY_SERVER = /u01/app/oracle/trace/server # Borramos los directorios que hemos creado rm -Rf /u01/app/oracle/trace/client rm -Rf /u01/app/oracle/trace/server