To set and unset diagnostic events at the session level, you can use the Oracle SQL statement ALTER
SESSION SET EVENTS
. However, to set events at the system level you can't use Oracle SQL. Instead,
use the system event procedures in the rdsadmin.rdsadmin_util
package. The system event
procedures are available in the following engine versions:
-
All Oracle Database 21c versions
-
19.0.0.0.ru-2020-10.rur-2020-10.r1 and higher Oracle Database 19c versions
For more information, see Version 19.0.0.0.ru-2020-10.rur-2020-10.r1 in the Amazon RDS for Oracle Release Notes
Important
Internally, the rdsadmin.rdsadmin_util
package sets events by
using the ALTER SYSTEM SET EVENTS
statement. This ALTER
SYSTEM
statement isn't documented in the Oracle Database
documentation. Some system diagnostic events can generate large amounts of
tracing information, cause contention, or affect database availability. We
recommend that you test specific diagnostic events in your nonproduction
database, and only set events in your production database under guidance of
Oracle Support.
Listing
allowed system diagnostic events
To list the system events that you can set, use the Amazon RDS procedure
rdsadmin.rdsadmin_util.list_allowed_system_events
. This
procedure accepts no parameters.
The following example lists all system events that you can set.
SET SERVEROUTPUT ON
EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;
The following sample output lists event numbers and their descriptions. Use
the Amazon RDS procedures set_system_event
to set these events and
unset_system_event
to unset them.
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:
Note
The list of the allowed system events can change over time. To make sure
that you have the most recent list of eligible events, use
rdsadmin.rdsadmin_util.list_allowed_system_events
.
Setting
system diagnostic events
To set a system event, use the Amazon RDS procedure
rdsadmin.rdsadmin_util.set_system_event
. You can only set
events listed in the output of
rdsadmin.rdsadmin_util.list_allowed_system_events
. The
set_system_event
procedure accepts the following
parameters.
Parameter name | Data type | Default | Required | Description |
---|---|---|---|---|
|
number |
— |
Yes |
The system event number. The value must be one of the
event numbers reported by
|
|
number |
— |
Yes |
The event level. See the Oracle Database documentation or Oracle Support for descriptions of different level values. |
The procedure set_system_event
constructs and runs the required
ALTER SYSTEM SET EVENTS
statements according to the following
principles:
-
The event type (
context
orerrorstack
) is determined automatically. -
A statement in the form
ALTER SYSTEM SET EVENTS '
sets the context events. This notation is equivalent toevent
LEVELevent_level
'ALTER SYSTEM SET EVENTS '
.event
TRACE NAME CONTEXT FOREVER, LEVELevent_level
' -
A statement in the form
ALTER SYSTEM SET EVENTS '
sets the error stack events. This notation is equivalent toevent
ERRORSTACK (event_level
)'ALTER SYSTEM SET EVENTS '
.event
TRACE NAME ERRORSTACK LEVELevent_level
'
The following example sets event 942 at level 3, and event 10442 at level 10. Sample output is included.
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.
Listing system diagnostic events that are set
To list the system events that are currently set, use the Amazon RDS procedure
rdsadmin.rdsadmin_util.list_set_system_events
. This procedure
reports only events set at system level by set_system_event
.
The following example lists the active system events.
SET SERVEROUTPUT ON
EXEC rdsadmin.rdsadmin_util.list_set_system_events;
The following sample output shows the list of events, the event type, the level at which the events are currently set, and the time when the event was set.
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.
Unsetting system diagnostic events
To unset a system event, use the Amazon RDS procedure
rdsadmin.rdsadmin_util.unset_system_event
. You can only unset
events listed in the output of
rdsadmin.rdsadmin_util.list_allowed_system_events
. The
unset_system_event
procedure accepts the following
parameter.
Parameter name | Data type | Default | Required | Description |
---|---|---|---|---|
|
number |
— |
Yes |
The system event number. The value must be one of the
event numbers reported by
|
The following example unsets events 942 and 10442. Sample output is included.
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.