

# 시스템 진단 이벤트 설정 및 설정 해제
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents"></a>

세션 수준에서 진단 이벤트를 설정하고 설정 해제하려면 `ALTER SESSION SET EVENTS`라는 Oracle SQL 문을 사용하면 됩니다. 하지만 시스템 수준에서 이벤트를 설정하는 데에는 Oracle SQL을 사용할 수 없습니다. 대신 `rdsadmin.rdsadmin_util` 패키지의 시스템 이벤트 프로시저를 사용합니다. 시스템 이벤트 프로시저는 다음 엔진 버전에서 사용할 수 있습니다.
+ 모든 Oracle Database 21c 버전
+ 19.0.0.0.ru-2020-10.rur-2020-10.r1 이상의 Oracle Database 19c 버전

  자세한 내용은 **Amazon RDS for Oracle 릴리스 정보의 [버전 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)을 참조하세요.

**중요**  
내부적으로, `rdsadmin.rdsadmin_util` 패키지는 `ALTER SYSTEM SET EVENTS` 문을 사용하여 이벤트를 설정합니다. 이 `ALTER SYSTEM` 문은 Oracle 데이터베이스 설명서에 설명되어 있지 않습니다. 일부 시스템 진단 이벤트는 많은 양의 추적 정보를 생성하거나 경합을 일으키거나 데이터베이스 가용성에 영향을 줄 수 있습니다. Oracle Support의 지침에 따라 비 프로덕션 데이터베이스에서 특정 진단 이벤트를 테스트하고 프로덕션 데이터베이스에서만 이벤트를 설정하는 것이 좋습니다.

## 허용되는 시스템 진단 이벤트 나열
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.listing"></a>

설정 가능한 시스템 이벤트를 나열하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.list_allowed_system_events`를 사용합니다. 이 프로시저는 파라미터를 받지 않습니다.

다음 예에서는 설정 가능한 모든 시스템 이벤트를 나열합니다.

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

다음 샘플 출력에는 이벤트 번호와 해당 설명이 나열됩니다. Amazon RDS 프로시저 `set_system_event`를 사용하여 이러한 이벤트를 설정하고 `unset_system_event`를 사용하여 설정 해제합니다.

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

**참고**  
허용되는 시스템 이벤트 목록은 시간이 지남에 따라 변경될 수 있습니다. 적격 이벤트의 최신 목록이 있는지 확인하려면 `rdsadmin.rdsadmin_util.list_allowed_system_events`를 사용합니다.

## 시스템 진단 이벤트 설정
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.setting"></a>

시스템 이벤트를 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.set_system_event`를 사용합니다. `rdsadmin.rdsadmin_util.list_allowed_system_events`의 출력에 나열된 이벤트만 설정할 수 있습니다. `set_system_event` 프로시저는 다음 파라미터를 수용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_event`  |  숫자  |  —  |  예  |  시스템 이벤트 번호입니다. 이 값은 `list_allowed_system_events`에 의해 보고된 이벤트 번호 중 하나여야 합니다.  | 
|  `p_level`  |  숫자  |  —  |  예  |  이벤트 수준입니다. 다양한 수준 값에 대한 설명은 Oracle 데이터베이스 설명서를 참조하거나 Oracle Support에 문의하세요.  | 

`set_system_event` 프로시저는 다음 원칙에 따라 필요한 `ALTER SYSTEM SET EVENTS` 문을 구성하고 실행합니다.
+ 이벤트 유형(`context` 또는 `errorstack`)은 자동으로 결정됩니다.
+ `ALTER SYSTEM SET EVENTS 'event LEVEL event_level'` 형식의 문이 컨텍스트 이벤트를 설정합니다. 이 표기법은 `ALTER SYSTEM SET EVENTS 'event TRACE NAME CONTEXT FOREVER, LEVEL event_level'`과 동일합니다.
+ `ALTER SYSTEM SET EVENTS 'event ERRORSTACK (event_level)'` 형식의 문이 오류 스택 이벤트를 설정합니다. 이 표기법은 `ALTER SYSTEM SET EVENTS 'event TRACE NAME ERRORSTACK LEVEL event_level'`과 동일합니다.

다음 예에서는 이벤트 942를 수준 3에 설정하고 이벤트 10442를 수준 10에 설정합니다. 샘플 출력이 포함되어 있습니다.

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

## 설정된 시스템 진단 이벤트 나열
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.listing-set"></a>

현재 설정된 시스템 이벤트를 나열하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.list_set_system_events`를 사용합니다. 이 프로시저는 `set_system_event`에 의해 시스템 수준에 설정된 이벤트만 보고합니다.

다음 예에서는 활성 시스템 이벤트를 나열합니다.

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

다음 샘플 출력에서는 이벤트 목록, 이벤트 유형, 이벤트가 현재 설정된 레벨 및 이벤트가 설정된 시간을 보여 줍니다.

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

## 시스템 진단 이벤트 설정 해제
<a name="Appendix.Oracle.CommonDBATasks.SystemEvents.unsetting"></a>

시스템 이벤트를 설정 해제하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.unset_system_event`를 사용합니다. `rdsadmin.rdsadmin_util.list_allowed_system_events`의 출력에 나열된 이벤트만 설정 해제할 수 있습니다. `unset_system_event` 프로시저는 다음 파라미터를 받습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_event`  |  숫자  |  —  |  예  |  시스템 이벤트 번호입니다. 이 값은 `list_allowed_system_events`에 의해 보고된 이벤트 번호 중 하나여야 합니다.  | 

다음 예에서는 이벤트 942 및 10442를 설정 해제합니다. 샘플 출력이 포함되어 있습니다.

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