

# Configurar e anular configuração de eventos de diagnóstico do sistema
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents"></a>

Para configurar e anular a configuração de eventos de diagnóstico no nível da sessão, você pode usar a instrução Oracle SQL `ALTER SESSION SET EVENTS`. No entanto, para definir eventos no nível do sistema, você não pode usar o Oracle SQL. Em vez disso, use os procedimentos de evento do sistema no pacote `rdsadmin.rdsadmin_util`. Os procedimentos de eventos do sistema estão disponíveis nas seguintes versões do mecanismo:
+ Todas as versões do Oracle Database 21c
+ 19.0.0.0.ru-2020-10.rur-2020-10.r1 e versões posteriores do Oracle Database 19c

  Consulte mais informações em [Version 19.0.0.0.ru-2020-10.rur-2020-10.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2020-10.rur-2020-10.r1) em *Notas de lançamento do Amazon RDS para Oracle*.

**Importante**  
Internamente, o pacote `rdsadmin.rdsadmin_util` define eventos usando a instrução `ALTER SYSTEM SET EVENTS`. Essa instrução `ALTER SYSTEM` não está incluída na documentação do Oracle Database. Alguns eventos de diagnóstico do sistema podem gerar grandes quantidades de informações de monitoramento, causar contenção ou afetar a disponibilidade do banco de dados. Recomendamos que você teste eventos de diagnóstico específicos em seu banco de dados de não produção e defina apenas eventos em seu banco de dados de produção sob orientação do Oracle Support.

## Listar eventos de diagnóstico do sistema permitidos
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.listing"></a>

Para listar os eventos do sistema que você pode definir, use o procedimento do Amazon RDS `rdsadmin.rdsadmin_util.list_allowed_system_events`. Este procedimento não aceita parâmetros.

O exemplo a seguir lista todos os eventos do sistema que você pode definir.

```
SET SERVEROUTPUT ON
EXEC rdsadmin.rdsadmin_util.list_allowed_system_events;
```

A saída de exemplo a seguir lista os números de eventos e suas descrições. Use os procedimentos `set_system_event` do Amazon RDS para definir esses eventos e `unset_system_event` para desconfigurá-los.

```
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**  
A lista dos eventos do sistema permitidos pode mudar ao longo do tempo. Para se certificar de que você tem a lista mais recente de eventos qualificados, use `rdsadmin.rdsadmin_util.list_allowed_system_events`.

## Definir eventos de diagnóstico do sistema
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.setting"></a>

Para definir um evento do sistema, use o procedimento do Amazon RDS `rdsadmin.rdsadmin_util.set_system_event`. Você só pode definir eventos listados na saída do `rdsadmin.rdsadmin_util.list_allowed_system_events`. O procedimento `set_system_event` tem os parâmetros a seguir.


****  

| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição | 
| --- | --- | --- | --- | --- | 
|  `p_event`  |  número  |  —  |  Sim  |  O número do evento do sistema. O valor deve ser um dos números de eventos relatados por `list_allowed_system_events`.  | 
|  `p_level`  |  número  |  —  |  Sim  |  O nível do evento. Consulte a documentação do Oracle Database ou o Oracle Support para obter descrições de diferentes valores de nível.  | 

O procedimento `set_system_event` constrói e executa as instruções `ALTER SYSTEM SET EVENTS` necessárias de acordo com os seguintes princípios:
+ O tipo de evento (`context` ou `errorstack`) é determinado automaticamente.
+ Uma instrução no formulário `ALTER SYSTEM SET EVENTS 'event LEVEL event_level'` define os eventos de contexto. Esta notação é equivalente a `ALTER SYSTEM SET EVENTS 'event TRACE NAME CONTEXT FOREVER, LEVEL event_level'`.
+ Uma instrução no formulário `ALTER SYSTEM SET EVENTS 'event ERRORSTACK (event_level)'` define os eventos de pilha de erros. Esta notação é equivalente a `ALTER SYSTEM SET EVENTS 'event TRACE NAME ERRORSTACK LEVEL event_level'`.

O exemplo a seguir define o evento 942 no nível 3 e o evento 10442 no nível 10. A amostra de saída está incluída.

```
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.
```

## Listar eventos de diagnóstico do sistema definidos
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.listing-set"></a>

Para listar os eventos do sistema que estão definidos no momento, use o procedimento do Amazon RDS `rdsadmin.rdsadmin_util.list_set_system_events`. Este procedimento relata apenas os eventos definidos no nível do sistema por `set_system_event`.

O exemplo a seguir lista os eventos ativos do sistema.

```
SET SERVEROUTPUT ON
EXEC rdsadmin.rdsadmin_util.list_set_system_events;
```

A saída de exemplo a seguir mostra a lista de eventos, o tipo de evento, o nível no qual os eventos estão definidos no momento e a hora em que o evento foi definido.

```
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.
```

## Desconfigurar eventos de diagnóstico do sistema
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.unsetting"></a>

Para desconfigurar um evento do sistema, use o procedimento do Amazon RDS `rdsadmin.rdsadmin_util.unset_system_event`. Você só pode desconfigurar eventos listados na saída do `rdsadmin.rdsadmin_util.list_allowed_system_events`. O procedimento `unset_system_event` aceita o seguinte parâmetro.


****  

| Nome do parâmetro | Tipo de dados | Padrão | Obrigatório | Descrição | 
| --- | --- | --- | --- | --- | 
|  `p_event`  |  número  |  —  |  Sim  |  O número do evento do sistema. O valor deve ser um dos números de eventos relatados por `list_allowed_system_events`.  | 

O exemplo a seguir desconfigura os eventos 942 e 10442. A amostra de saída está incluída.

```
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.
```