Hoy veremos una entrada sobre diagnósticos de la base de datos.
Supongamos que tenemos algún tipo de error entre cliente y servidor en la capa OCI, la accion lógica en estos casos es activar una traza del sqlnet para detectar donde se encuentra el problema.
Si seguimos la nota de Oracle SQL*Net & Oracle Net Services – Tracing and Logging at a Glance (Doc ID 219968.1) veremos como , con las siguientes líneas deberíamos de tener en el directorio /home/oracle/trazas_problema_sqlnet una traza por cada uno de los procesos de conexion a la base de datos.
trace_level_server = 6 trace_file_server = svr trace_directory_server = /home/oracle/trazas_problema_sqlnet trace_unique_server = on trace_timestamp_server = on log_file_server = svr log_directory_server = /home/oracle/trazas_problema_sqlnet
Sin embargo, cuando añadimos nuestros parámetros de traza vemos que en el directorio que hemos marcado para las trazas no aparece ningún fichero.
¿Que ocurre?
¿por que ocurre esto?
Si miramos la documentacion del sqlnet en https://docs.oracle.com/cd/B28359_01/network.111/b28317/sqlnet.htm#NETRF419
vemos como desde la version 11 en adelante tenemos los parámetros que funcionan con el ADDR-DIAG habilitado y los que funcionan cuando esta deshabilitado.
En nuestro caso, el problema es que al estar habilitado por defecto el diagnistico unificado de Oracle, no está haciendo caso a nuestras directrices.
¿Como lo solucionamos
La solución no puede ser mas sencilla, simplemente deberemos de decirle en el mismo sqlnet.ora que no use el diagnostico unificado de Oracle, esto lo haremos añadiendo la línea
DIAG_ADR_ENABLED = OFF
Con esto comenzará a trazar en la ubicación designada.
NOTA:
Debemos de recordar eliminar esta línea cuando acabemos de trazar ya que, ademas de poder llenar el filesystem por la traza, estamos indicando al servidor que no use el DIAG_ADR algo que no es conveniente .
Como siempre mas información en :
- SQL*Net & Oracle Net Services – Tracing and Logging at a Glance (Doc ID 219968.1)
- documentacion de Sqlnet
