Establecer y anular eventos de diagnóstico del sistema
Para establecer y anular eventos de diagnóstico a nivel de sesión, puede utilizar la instrucción de Oracle SQL ALTER
SESSION SET EVENTS
. Sin embargo, para establecer eventos a nivel del sistema no puede utilizar Oracle SQL. En vez de eso, utilice los procedimientos de evento de sistema que hay en el paquete rdsadmin.rdsadmin_util
. Los procedimientos de evento de sistema están disponibles en las siguientes versiones del motor:
-
Todas las versiones de Oracle Database 21c
-
19.0.0.0.ru-2020-10.rur-2020-10.r1 Oracle Database 19c y versiones posteriores
Para obtener más información, consulte la sección sobre la versión 19.0.0.0.ru-2020-10.rur-2020-10.r1 en las notas de la versión de Amazon RDS para Oracle.
importante
Internamente, con el paquete rdsadmin.rdsadmin_util
se establecen eventos mediante el uso de la instrucción ALTER SYSTEM SET EVENTS
. Esta instrucción ALTER
SYSTEM
no figura en la Documentación de la base de datos de Oracle. Algunos eventos de diagnóstico del sistema pueden generar grandes cantidades de información de seguimiento, provocar contención o afectar la disponibilidad de la base de datos. Se recomienda probar eventos de diagnóstico concretos en la base de datos que no utilice para producir y que solo establezca eventos en la base de datos de producción sirviéndose de la orientación de Oracle Support.
Hacer una lista de los eventos de diagnóstico del sistema permitidos
Para hacer una lista de los eventos de sistema que puede establecer, utilice el procedimiento de Amazon RDS rdsadmin.rdsadmin_util.list_allowed_system_events
. Este procedimiento no acepta parámetros.
En el ejemplo siguiente se hace una lista de todos los eventos de sistema que puede establecer.
SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;
En la siguiente salida de ejemplo se muestran los números de eventos y sus descripciones. Utilice el procedimiento set_system_event
de Amazon RDS para establecer estos eventos y el procedimiento unset_system_event
de Amazon RDS para anularlos.
604 - error occurred at recursive SQL level 942 - table or view does not exist 1401 - inserted value too large for column 1403 - no data found 1410 - invalid ROWID 1422 - exact fetch returns more than requested number of rows 1426 - numeric overflow 1427 - single-row subquery returns more than one row 1476 - divisor is equal to zero 1483 - invalid length for DATE or NUMBER bind variable 1489 - result of string concatenation is too long 1652 - unable to extend temp segment by in tablespace 1858 - a non-numeric character was found where a numeric was expected 4031 - unable to allocate bytes of shared memory ("","","","") 6502 - PL/SQL: numeric or value error 10027 - Specify Deadlock Trace Information to be Dumped 10046 - enable SQL statement timing 10053 - CBO Enable optimizer trace 10173 - Dynamic Sampling time-out error 10442 - enable trace of kst for ORA-01555 diagnostics 12008 - error in materialized view refresh path 12012 - error on auto execute of job 12504 - TNS:listener was not given the SERVICE_NAME in CONNECT_DATA 14400 - inserted partition key does not map to any partition 31693 - Table data object failed to load/unload and is being skipped due to error:
nota
La lista de eventos de sistema permitidos puede cambiar con el tiempo. Para confirmar que tiene la lista más reciente de eventos aptos, use rdsadmin.rdsadmin_util.list_allowed_system_events
.
Establecimiento de eventos de diagnóstico del sistema
Para establecer un evento de sistema, utilice el procedimiento de Amazon RDS rdsadmin.rdsadmin_util.set_system_event
. Solo puede establecer eventos que figuren en la salida de rdsadmin.rdsadmin_util.list_allowed_system_events
. El procedimiento set_system_event
acepta los siguientes parámetros.
Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción |
---|---|---|---|---|
|
número |
— |
Sí |
El número de evento de sistema. El valor debe ser uno de los números de evento que se informaron mediante |
|
número |
— |
Sí |
El nivel del evento. Consulte la Documentación de la base de datos de Oracle u Oracle Support para obtener las descripciones de diferentes valores de niveles. |
Con el procedimiento set_system_event
se construyen y se ejecutan las instrucciones ALTER SYSTEM SET EVENTS
requeridas de acuerdo con los siguientes principios:
-
El tipo de evento (
context
oerrorstack
) se determina automáticamente. -
Con una instrucción
ALTER SYSTEM SET EVENTS '
se establecen los eventos de contexto. Esta notación es equivalente aevent
LEVELevent_level
'ALTER SYSTEM SET EVENTS '
.event
TRACE NAME CONTEXT FOREVER, LEVELevent_level
' -
Con una instrucción
ALTER SYSTEM SET EVENTS '
se establecen los eventos de pila de errores. Esta notación es equivalente aevent
ERRORSTACK (event_level
)'ALTER SYSTEM SET EVENTS '
.event
TRACE NAME ERRORSTACK LEVELevent_level
'
En el ejemplo siguiente se establece el evento 942 a nivel 3 y el evento 10442 a nivel 10. Se incluye la salida de muestra.
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(942,3); Setting system event 942 with: alter system set events '942 errorstack (3)' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.set_system_event(10442,10); Setting system event 10442 with: alter system set events '10442 level 10' PL/SQL procedure successfully completed.
Hacer una lista de los eventos de diagnóstico del sistema establecidos
Para hacer una lista de los eventos del sistema establecidos, utilice el procedimiento rdsadmin.rdsadmin_util.list_set_system_events
de Amazon RDS. Con este procedimiento se informan solo los eventos establecidos a nivel del sistema por set_system_event
.
En el ejemplo siguiente se hace una lista de los eventos de sistema activos.
SET SERVEROUTPUT ON EXEC rdsadmin.rdsadmin_util.list_set_system_events;
En la siguiente salida de ejemplo se muestran la lista de eventos, el tipo de evento, el nivel a que los eventos están configurados actualmente y la hora a que se estableció el evento.
942 errorstack (3) - set at 2020-11-03 11:42:27 10442 level 10 - set at 2020-11-03 11:42:41 PL/SQL procedure successfully completed.
Anular eventos de diagnóstico del sistema
Para anular un evento de sistema, utilice el procedimiento rdsadmin.rdsadmin_util.unset_system_event
de Amazon RDS. Solo puede anular eventos que figuren en la salida de rdsadmin.rdsadmin_util.list_allowed_system_events
. El procedimiento unset_system_event
acepta el siguiente parámetro.
Nombre del parámetro | Tipo de datos | Valor predeterminado | Obligatorio | Descripción |
---|---|---|---|---|
|
número |
— |
Sí |
El número de evento de sistema. El valor debe ser uno de los números de evento que se informaron mediante |
En el ejemplo siguiente se anulan los eventos 942 y 10442. Se incluye la salida de muestra.
SQL> SET SERVEROUTPUT ON SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(942); Unsetting system event 942 with: alter system set events '942 off' PL/SQL procedure successfully completed. SQL> EXEC rdsadmin.rdsadmin_util.unset_system_event(10442); Unsetting system event 10442 with: alter system set events '10442 off' PL/SQL procedure successfully completed.