

# Oracle DB 인스턴스에 대한 공통 시스템 작업 수행
<a name="Appendix.Oracle.CommonDBATasks.System"></a>

그 다음에는 Oracle을 실행하는 Amazon RDS DB 인스턴스에서 시스템과 관련된 특정 공통 DBA 작업을 수행하는 방법을 알아봅니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않으며, 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

**Topics**
+ [세션 분리](Appendix.Oracle.CommonDBATasks.DisconnectingSession.md)
+ [세션 종료](Appendix.Oracle.CommonDBATasks.KillingSession.md)
+ [세션에서 SQL 문 취소](Appendix.Oracle.CommonDBATasks.CancellingSQL.md)
+ [제한 세션 활성화 및 비활성화](Appendix.Oracle.CommonDBATasks.RestrictedSession.md)
+ [공유 풀 플러시](Appendix.Oracle.CommonDBATasks.FlushingSharedPool.md)
+ [SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여](Appendix.Oracle.CommonDBATasks.TransferPrivileges.md)
+ [SYS 객체에 대한 SELECT 또는 EXECUTE 권한 취소](Appendix.Oracle.CommonDBATasks.RevokePrivileges.md)
+ [Oracle DB 인스턴스의 RDS\$1X\$1 뷰 관리](Appendix.Oracle.CommonDBATasks.X-dollar.md)
+ [마스터가 아닌 사용자에게 권한 부여](Appendix.Oracle.CommonDBATasks.PermissionsNonMasters.md)
+ [사용자 지정 암호 확인 함수 생성](Appendix.Oracle.CommonDBATasks.CustomPassword.md)
+ [사용자 지정 DNS 서버 설정](#Appendix.Oracle.CommonDBATasks.CustomDNS)
+ [시스템 진단 이벤트 설정 및 설정 해제](Appendix.Oracle.CommonDBATasks.SystemEvents.md)

# 세션 분리
<a name="Appendix.Oracle.CommonDBATasks.DisconnectingSession"></a>

전용 서버 프로세스를 종료하여 현재 세션을 분리하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.disconnect`를 사용합니다. `disconnect` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  숫자  |  —  |  예  |  세션 식별자입니다.  | 
|  `serial`  |  숫자  |  —  |  예  |  세션 일련번호입니다.  | 
|  `method`  |  varchar  |  'IMMEDIATE'  |  아니요  |  유효한 값은 `'IMMEDIATE'` 또는 `'POST_TRANSACTION'`입니다.  | 

다음 예제에서는 세션을 분리합니다.

```
begin
    rdsadmin.rdsadmin_util.disconnect(
        sid    => sid, 
        serial => serial_number);
end;
/
```

세션 식별자와 세션 일련번호를 얻으려면, `V$SESSION` 뷰를 쿼리하세요. 다음 예제에서는 사용자 `AWSUSER`의 모든 세션을 확보합니다.

```
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';
```

이 메서드를 사용하려면 데이터베이스가 열려 있어야 합니다. 세션 분리에 대한 자세한 내용은 Oracle 문서에서 [ALTER SYSTEM](http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_2014.htm#SQLRF53166) 단원을 참조하세요.

# 세션 종료
<a name="Appendix.Oracle.CommonDBATasks.KillingSession"></a>

세션을 종료하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.kill`을 사용합니다. `kill` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  숫자  |  —  |  예  |  세션 식별자입니다.  | 
|  `serial`  |  숫자  |  —  |  예  |  세션 일련번호입니다.  | 
|  `method`  |  varchar  |  null  |  아니요  |  유효한 값은 `'IMMEDIATE'` 또는 `'PROCESS'`입니다. `IMMEDIATE`를 지정하면 다음 문을 실행하는 것과 같은 효과가 있습니다. <pre>ALTER SYSTEM KILL SESSION 'sid,serial#' IMMEDIATE</pre> `PROCESS`를 지정하면 세션과 연결된 프로세스를 종료합니다. `IMMEDIATE`를 사용하여 세션이 종료되지 못한 경우에만 `PROCESS`를 지정하세요.  | 

세션 식별자와 세션 일련번호를 얻으려면, `V$SESSION` 뷰를 쿼리하세요. 다음 예제에서는 사용자 *AWSUSER*의 모든 세션을 확보합니다.

```
SELECT SID, SERIAL#, STATUS FROM V$SESSION WHERE USERNAME = 'AWSUSER';
```

다음 예제에서는 세션을 종료합니다.

```
BEGIN
    rdsadmin.rdsadmin_util.kill(
        sid    => sid, 
        serial => serial_number,
        method => 'IMMEDIATE');
END;
/
```

다음 예제에서는 세션과 연결된 프로세스를 종료합니다.

```
BEGIN
    rdsadmin.rdsadmin_util.kill(
        sid    => sid, 
        serial => serial_number,
        method => 'PROCESS');
END;
/
```

# 세션에서 SQL 문 취소
<a name="Appendix.Oracle.CommonDBATasks.CancellingSQL"></a>

세션에서 SQL 문을 취소하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.cancel`을 사용합니다.

**참고**  
이 절차는 Oracle Database 19c(19.0.0)와 RDS for Oracle의 모든 상위 메이저 및 마이너 버전에서 지원됩니다.

`cancel` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `sid`  |  숫자  |  —  |  예  |  세션 식별자입니다.  | 
|  `serial`  |  숫자  |  —  |  예  |  세션 일련번호입니다.  | 
|  `sql_id`  |  varchar2  |  null  |  아니요  |  SQL 문의 SQL 식별자입니다.  | 

다음 예제는 세션에서 SQL 문을 취소합니다.

```
begin
    rdsadmin.rdsadmin_util.cancel(
        sid    => sid, 
        serial => serial_number,
        sql_id => sql_id);
end;
/
```

세션 식별자, 세션 일련 번호 및 SQL의 SQL 식별자를 가져오려면 `V$SESSION` 보기를 쿼리합니다. 다음 예제에서는 사용자 `AWSUSER`의 모든 세션 및 SQL 식별자를 가져옵니다.

```
select SID, SERIAL#, SQL_ID, STATUS from V$SESSION where USERNAME = 'AWSUSER';
```

# 제한 세션 활성화 및 비활성화
<a name="Appendix.Oracle.CommonDBATasks.RestrictedSession"></a>

제한 세션을 활성화 또는 비활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.restricted_session`을 사용합니다. `restricted_session` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 예 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_enable`  |  부울  |  true  |  아니요  |  `true`는 제한 세션을 활성화하고, `false`는 제한 세션을 비활성화하도록 설정됩니다.  | 

다음은 제한 세션을 활성화 및 비활성화하는 방법을 나타낸 예제입니다.

```
/* Verify that the database is currently unrestricted. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
-------
ALLOWED

/* Enable restricted sessions */

EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => true);
 

/* Verify that the database is now restricted. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
----------
RESTRICTED
 

/* Disable restricted sessions */

EXEC rdsadmin.rdsadmin_util.restricted_session(p_enable => false);
 

/* Verify that the database is now unrestricted again. */

SELECT LOGINS FROM V$INSTANCE;
 
LOGINS
-------
ALLOWED
```

# 공유 풀 플러시
<a name="Appendix.Oracle.CommonDBATasks.FlushingSharedPool"></a>

공유 풀을 플러시하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.flush_shared_pool`을 사용합니다. `flush_shared_pool` 프로시저에는 파라미터가 없습니다.

다음 예제는 공유 풀을 플러시합니다.

```
EXEC rdsadmin.rdsadmin_util.flush_shared_pool;
```

## 버퍼 캐시 플러시
<a name="Appendix.Oracle.CommonDBATasks.FlushingBufferCache"></a>

버퍼 캐시를 플러시하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.flush_buffer_cache`를 사용합니다. `flush_buffer_cache` 프로시저에는 파라미터가 없습니다.

다음 예제는 버퍼 캐시를 플러시합니다.

```
EXEC rdsadmin.rdsadmin_util.flush_buffer_cache;
```

## 데이터베이스 스마트 플래시 캐시 플러시
<a name="Appendix.Oracle.CommonDBATasks.flushing-shared-pool"></a>

데이터베이스 스마트 캐시를 플러시하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.flush_flash_cache`를 사용합니다. `flush_flash_cache` 프로시저에는 파라미터가 없습니다. 다음 예는 데이터베이스 스마트 플래시 캐시를 플러시합니다.

```
EXEC rdsadmin.rdsadmin_util.flush_flash_cache;
```

RDS for Oracle로 데이터베이스 스마트 플래시 캐시를 사용하는 방법에 대한 자세한 내용은 [RDS for Oracle 인스턴스 스토어에 임시 데이터 저장](CHAP_Oracle.advanced-features.instance-store.md) 섹션을 참조하세요.

# SYS 객체에 대한 SELECT 또는 EXECUTE 권한 부여
<a name="Appendix.Oracle.CommonDBATasks.TransferPrivileges"></a>

일반적으로 여러 객체가 포함되어 있을 수 있는 역할을 사용하여 권한을 이전합니다. 단일 객체에 권한을 부여하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.grant_sys_object`를 사용합니다. 이 프로시저는 마스터 사용자가 역할이나 직접 부여를 통해 이미 부여받은 권한만 부여합니다.

`grant_sys_object` 프로시저에는 다음과 같은 파라미터가 있습니다.

**중요**  
대소문자를 구분하는 식별자로 사용자를 생성하지 않는 한 모든 파라미터 값에 대문자를 사용합니다. 예를 들어 `CREATE USER myuser` 또는 `CREATE USER MYUSER`를 실행하는 경우 데이터 딕셔너리에 `MYUSER`가 저장됩니다. 그러나 `CREATE USER "MyUser"`에서 큰 따옴표를 사용하는 경우 데이터 딕셔너리를 `MyUser`에 저장합니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_obj_name`  |  varchar2  |  —  |  예  |  권한을 부여할 객체의 이름입니다. 디렉터리, 기능, 패키지, 프로시저, 시퀀스, 테이블, 뷰가 객체가 될 수 있습니다. 객체 이름은 `DBA_OBJECTS`에 표시된 대로 정확하게 입력해야 합니다. 대부분의 시스템 객체는 대문자로 정의되므로 먼저 대문자로 시도하는 것이 좋습니다.  | 
|  `p_grantee`  |  varchar2  |  —  |  예  |  권한을 부여할 객체의 이름입니다. 스키마나 역할이 객체가 될 수 있습니다.  | 
|  `p_privilege`  |  varchar2  |  null  |  예  |  —  | 
|  `p_grant_option`  |  boolean  |  false  |  아니요  |  `true`는 부여 옵션과 함께 사용하도록 설정됩니다.  | 

다음 예에서는 `V_$SESSION`이라는 객체에 대한 선택 권한을 `USER1`이라는 사용자에게 부여합니다.

```
begin
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name  => 'V_$SESSION',
        p_grantee   => 'USER1',
        p_privilege => 'SELECT');
end;
/
```

다음 예에서는 `V_$SESSION` 이라는 객체에 대한 선택 권한을 `USER1`이라는 사용자에게 부여 옵션과 함께 부여합니다.

```
begin
    rdsadmin.rdsadmin_util.grant_sys_object(
        p_obj_name     => 'V_$SESSION',
        p_grantee      => 'USER1',
        p_privilege    => 'SELECT',
        p_grant_option => true);
end;
/
```

객체에 권한을 부여할 수 있으려면 해당 권한을 부여 옵션을 통해 계정에 직접 부여하거나 `with admin option`을 사용해 부여된 역할을 통해 계정에 부여해야 합니다. 대부분 이미 `SELECT` 역할에 부여된 DBA 뷰에 `SELECT_CATALOG_ROLE` 권한을 부여하는 경우가 많습니다. 해당 역할이 아직 `with admin option`을 통해 사용자에게 직접 부여되지 않았다면 권한을 양도할 수 없습니다. DBA 권한이 있다면 역할을 직접 다른 사용자에게 부여할 수 있습니다.

다음은 `SELECT_CATALOG_ROLE`과 `EXECUTE_CATALOG_ROLE`을 `USER1`에게 부여하는 예제입니다. `with admin option`을 사용했기 때문에, `USER1`은 이제 `SELECT_CATALOG_ROLE`에 부여된 SYS 객체 액세스 권한을 부여할 수 있습니다.

```
GRANT SELECT_CATALOG_ROLE TO USER1 WITH ADMIN OPTION; 
GRANT EXECUTE_CATALOG_ROLE to USER1 WITH ADMIN OPTION;
```

`PUBLIC`에 이미 부여된 객체는 다시 부여할 필요가 없습니다. `grant_sys_object` 프로시저를 사용하여 액세스 권한을 다시 부여한다면, 프로시저는 성공을 호출합니다.

# SYS 객체에 대한 SELECT 또는 EXECUTE 권한 취소
<a name="Appendix.Oracle.CommonDBATasks.RevokePrivileges"></a>

단일 객체에 대한 권한을 취소하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.revoke_sys_object`를 사용합니다. 이 프로시저는 마스터 계정이 역할 또는 직접 부여를 통해 이미 부여받은 권한만 취소합니다.

`revoke_sys_object` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_obj_name`  |  varchar2  |  —  |  예  |  권한을 취소할 객체의 이름입니다. 디렉터리, 기능, 패키지, 프로시저, 시퀀스, 테이블, 뷰가 객체가 될 수 있습니다. 객체 이름은 `DBA_OBJECTS`에 표시된 대로 정확하게 입력해야 합니다. 대부분의 시스템 객체는 대문자로 정의되므로 먼저 대문자로 시도해보는 것이 좋습니다.  | 
|  `p_revokee`  |  varchar2  |  —  |  예  |  권한을 취소할 객체의 이름입니다. 스키마나 역할이 객체가 될 수 있습니다.  | 
|  `p_privilege`  |  varchar2  |  null  |  예  |  —  | 

다음 예에서는 `V_$SESSION`이라는 객체에 대한 선택 권한을 `USER1`이라는 사용자에게서 취소합니다.

```
begin
    rdsadmin.rdsadmin_util.revoke_sys_object(
        p_obj_name  => 'V_$SESSION',
        p_revokee   => 'USER1',
        p_privilege => 'SELECT');
end;
/
```

# Oracle DB 인스턴스의 RDS\$1X\$1 뷰 관리
<a name="Appendix.Oracle.CommonDBATasks.X-dollar"></a>

`SYS`를 통해서만 액세스할 수 있는 `SYS.X$` 고정 테이블에 액세스해야 할 수도 있습니다. 대상이 되는 `X$` 표에 `SYS.RDS_X$` 뷰를 만들려면 `rdsadmin.rdsadmin_util` 패키지의 프로시저를 사용합니다. 마스터 사용자에게 `RDS_X$` 뷰에 대한 `SELECT … WITH GRANT OPTION` 권한이 자동으로 부여됩니다.

`rdsadmin.rdsadmin_util` 절차는 다음과 같은 경우에 사용할 수 있습니다.
+ 업그레이드된 적이 없고 다음 릴리스를 사용하는 기존 DB 인스턴스:
  + `21.0.0.0.ru-2023-10.rur-2023-10.r1` 이상의 21c 릴리스
  + `19.0.0.0.ru-2023-10.rur-2023-10.r1` 이상의 19c 릴리스
+ 사용자가 만드는 모든 새 DB 인스턴스
+ 사용자가 업그레이드하는 모든 기존 DB 인스턴스

**중요**  
`rdsadmin.rdsadmin_util` 패키지는 내부적으로 `X$` 표에 뷰를 생성합니다. `X$` 표는 Oracle Database 설명서에 설명되어 있지 않은 내부 시스템 객체입니다. 비 프로덕션 데이터베이스에서 특정 뷰를 테스트하고 Oracle Support의 안내에 따라 프로덕션 데이터베이스에서만 뷰를 생성하는 것이 좋습니다.

## RDS\$1X\$1 뷰에서 사용할 수 있는 X\$1 고정 표 나열
<a name="Appendix.Oracle.CommonDBATasks.list-allowed-X-dollar"></a>

`RDS_X$` 뷰에 사용할 수 있는 X\$1 표를 나열하려면 RDS 프로시저 `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`를 사용합니다. 이 프로시저는 파라미터를 받지 않습니다. 다음 문에는 해당하는 모든 `X$` 표가 나열되어 있습니다(샘플 출력 포함).

```
SQL> SET SERVEROUTPUT ON
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_allowed_sys_x$_views);

'X$BH'
'X$K2GTE'
'X$KCBWBPD'
'X$KCBWDS'
'X$KGLLK'
'X$KGLOB'
'X$KGLPN'
'X$KSLHOT'
'X$KSMSP'
'X$KSPPCV'
'X$KSPPI'
'X$KSPPSV'
'X$KSQEQ'
'X$KSQRS'
'X$KTUXE'
'X$KQRFP'
```

대상 `X$` 표 목록은 시간이 지남에 따라 변경될 수 있습니다. 대상 `X$` 고정 표 목록을 최신으로 유지하려면 주기적으로 `list_allowed_sys_x$_views`를 다시 실행하세요.

## SYS.RDS\$1X\$1 뷰 생성
<a name="Appendix.Oracle.CommonDBATasks.create-X-dollar"></a>

대상이 되는 `X$` 표에 `RDS_X$` 뷰를 만들려면 RDS 프로시저 `rdsadmin.rdsadmin_util.create_sys_x$_view`를 사용합니다. `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`의 출력에 나열된 표에 대한 뷰만 생성할 수 있습니다. `create_sys_x$_view` 프로시저는 다음 파라미터를 수용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_x$_tbl`  |  varchar2  |  Null  |  예  |  유효한 `X$` 표 이름입니다. 이 값은 `list_allowed_sys_x$_views`에서 보고한 `X$` 표 중 하나여야 합니다.  | 
|  `p_force_creation`  |  부울  | FALSE |  아니요  |  `X$` 표에 이미 존재하는 `RDS_X$` 뷰를 강제로 생성할지 여부를 나타내는 값입니다. 기본적으로 RDS는 뷰가 이미 있는 경우 뷰를 만들지 않습니다. 강제로 생성하려면 이 파라미터를 `TRUE`로 설정합니다.  | 

다음 예제에서는 `X$KGLOB` 표에 `SYS.RDS_X$KGLOB` 뷰를 생성합니다. 뷰 이름 형식은 `RDS_X$tablename`입니다.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.create_sys_x$_view('X$KGLOB');

PL/SQL procedure successfully completed.
```

다음 데이터 사전 쿼리는 `SYS.RDS_X$KGLOB` 뷰를 나열하고 상태를 보여줍니다. 마스터 사용자에게 이 뷰에 대한 `SELECT ... WITH GRANT OPTION` 권한이 자동으로 부여됩니다.

```
SQL> SET SERVEROUTPUT ON
SQL> COL OWNER FORMAT A30 
SQL> COL OBJECT_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT OWNER, OBJECT_NAME, STATUS 
FROM DBA_OBJECTS 
WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB';

OWNER                          OBJECT_NAME                    STATUS
------------------------------ ------------------------------ ------------------------------
SYS                            RDS_X$KGLOB                    VALID
```

**중요**  
업그레이드 전과 후에 `X$` 표가 동일하게 유지된다고 보장할 수는 없습니다. RDS for Oracle은 엔진 업그레이드 중에 `X$` 표에서 `RDS_X$` 뷰를 삭제하고 다시 생성합니다. 그런 다음 마스터 사용자에게 `SELECT ... WITH GRANT OPTION` 권한을 부여합니다. 업그레이드 후에는 해당 `RDS_X$` 뷰에서 필요에 따라 데이터베이스 사용자에게 권한을 부여합니다.

## SYS.RDS\$1X\$1 뷰 목록
<a name="Appendix.Oracle.CommonDBATasks.list-created-X-dollar"></a>

기존 `RDS_X$` 뷰를 나열하려면 RDS 프로시저 `rdsadmin.rdsadmin_util.list_created_sys_x$_views`를 사용합니다. 프로시저에는 `create_sys_x$_view` 프로시저로 만든 뷰만 나열됩니다. 다음 예제에서는 해당하는 `RDS_X$` 뷰(샘플 출력 포함)가 있는 `X$` 표를 나열합니다.

```
SQL> SET SERVEROUTPUT ON
SQL> COL XD_TBL_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_util.list_created_sys_x$_views);

XD_TBL_NAME                    STATUS
------------------------------ ------------------------------
X$BH                           VALID
X$K2GTE                        VALID
X$KCBWBPD                      VALID

3 rows selected.
```

## RDS\$1X\$1 뷰 삭제
<a name="Appendix.Oracle.CommonDBATasks.drop-X-dollar"></a>

`SYS.RDS_X$` 뷰를 삭제하려면 RDS 프로시저 `rdsadmin.rdsadmin_util.drop_sys_x$_view`를 사용합니다. `rdsadmin.rdsadmin_util.list_allowed_sys_x$_views`의 출력에 나열된 뷰만 삭제할 수 있습니다. `drop_sys_x$_view` 프로시저는 다음 파라미터를 받습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_x$_tbl`  |  varchar2  |  Null  |  예  |  유효한 `X$` 고정 표 이름입니다. 이 값은 `list_created_sys_x$_views`에서 보고한 `X$` 고정 표 중 하나여야 합니다.  | 

다음 예제에서는 `X$KGLOB` 표에 만든 `RDS_X$KGLOB` 뷰를 삭제합니다.

```
SQL> SET SERVEROUTPUT ON
SQL> EXEC rdsadmin.rdsadmin_util.drop_sys_x$_view('X$KGLOB');

PL/SQL procedure successfully completed.
```

다음 예제에서는 `SYS.RDS_X$KGLOB` 뷰가 삭제되었음을 보여줍니다(샘플 출력 포함).

```
SQL> SET SERVEROUTPUT ON
SQL> COL OWNER FORMAT A30 
SQL> COL OBJECT_NAME FORMAT A30
SQL> COL STATUS FORMAT A30
SQL> SET LINESIZE 200
SQL> SELECT OWNER, OBJECT_NAME, STATUS 
FROM DBA_OBJECTS 
WHERE OWNER = 'SYS' AND OBJECT_NAME = 'RDS_X$KGLOB';

no rows selected
```

# 마스터가 아닌 사용자에게 권한 부여
<a name="Appendix.Oracle.CommonDBATasks.PermissionsNonMasters"></a>

`SYS` 역할을 사용하여 `SELECT_CATALOG_ROLE` 스키마에 있는 여러 객체에 선택 권한을 부여할 수 있습니다. `SELECT_CATALOG_ROLE` 역할은 사용자에게 데이터 딕셔너리 뷰에 대한 `SELECT` 권한을 부여합니다. 다음은 역할 `SELECT_CATALOG_ROLE`을 사용자 `user1`에 부여하는 예제입니다.

```
GRANT SELECT_CATALOG_ROLE TO user1;
```

`EXECUTE` 역할을 사용하여 `SYS` 스키마에 있는 여러 객체에 `EXECUTE_CATALOG_ROLE` 권한을 부여할 수 있습니다. `EXECUTE_CATALOG_ROLE` 역할은 사용자에게 데이터 딕셔너리의 패키지와 프로시저에 대한 `EXECUTE` 권한을 부여합니다. 다음 예에서는 `EXECUTE_CATALOG_ROLE`이라는 역할을 *user1*이라는 사용자에게 부여합니다.

```
GRANT EXECUTE_CATALOG_ROLE TO user1;
```

다음 예에서는 `SELECT_CATALOG_ROLE` 및 `EXECUTE_CATALOG_ROLE`이라는 역할에서 허용하는 권한을 얻습니다.

```
  SELECT * 
    FROM ROLE_TAB_PRIVS  
   WHERE ROLE IN ('SELECT_CATALOG_ROLE','EXECUTE_CATALOG_ROLE') 
ORDER BY ROLE, TABLE_NAME ASC;
```

다음 예에서는 *sh.sales*라는 데이터베이스에서 마스터 사용자가 아닌 `user1`이라는 사용자를 생성한 후 `CREATE SESSION` 권한과 `SELECT` 권한을 부여합니다.

```
CREATE USER user1 IDENTIFIED BY PASSWORD;
GRANT CREATE SESSION TO user1;
GRANT SELECT ON sh.sales TO user1;
```

# 사용자 지정 암호 확인 함수 생성
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword"></a>

사용자 지정 암호 확인 함수는 다음과 같은 방법으로 생성할 수 있습니다.
+ 표준 확인 로직을 사용하고 `SYS` 스키마에 함수를 저장하려면, `create_verify_function` 프로시저를 사용합니다.
+ 사용자 지정 확인 로직을 사용하거나 `SYS` 스키마에 함수를 저장하지 않으려면, `create_passthrough_verify_fcn` 프로시저를 사용합니다.

# create\$1verify\$1function 프로시저
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword.Standard"></a>

Amazon RDS 프로시저 `rdsadmin.rdsadmin_password_verify.create_verify_function`을 사용하여 사용자 지정 암호 확인 함수를 만들 수 있습니다. 이 `create_verify_function` 프로시저는 RDS for Oracle의 모든 버전에 대해 지원됩니다.

`create_verify_function` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_verify_function_name`  |  varchar2  |  —  |  예  |  사용자 정의 함수 이름입니다. 이 함수는 SYS 스키마에서 자동으로 만들어집니다. 이 함수를 사용자 프로필에 할당합니다.  | 
|  `p_min_length`  |  숫자  |  8  |  아니요  |  필요한 최소 문자 수입니다.  | 
|  `p_max_length`  |  숫자  |  256  |  아니요  |  허용되는 최대 문자 수입니다.  | 
|  `p_min_letters`  |  숫자  |  1  |  아니요  |  필요한 최소 글자 수입니다.  | 
|  `p_min_uppercase`  |  숫자  |  0  |  아니요  |  필요한 최소 대문자 수입니다.  | 
|  `p_min_lowercase`  |  숫자  |  0  |  아니요  |  필요한 최소 소문자 수입니다.  | 
|  `p_min_digits`  |  숫자  |  1  |  아니요  |  필요한 최소 자릿수 숫자입니다.  | 
|  `p_min_special`  |  숫자  |  0  |  아니요  |  필요한 최소 특수문자 수입니다.  | 
|  `p_min_different_chars`  |  숫자  |  3  |  아니요  |  이전 암호와 새 암호 간에 필요한 서로 다른 문자의 최소 개수입니다.  | 
|  `p_disallow_username`  |  부울  |  true  |  아니요  |  `true`로 설정되어 암호에 사용자 이름을 사용할 수 없습니다.  | 
|  `p_disallow_reverse`  |  부울  |  true  |  아니요  |  `true`로 설정되어 암호에 사용자 이름 반전을 사용할 수 없습니다.  | 
|  `p_disallow_db_name`  |  부울  |  true  |  아니요  |  `true`로 설정되어 암호에 데이터베이스나 서버 이름을 사용할 수 없습니다.  | 
|  `p_disallow_simple_strings`  |  부울  |  true  |  아니요  |  `true`로 설정되어 단순 문자열을 암호로 사용할 수 없습니다.  | 
|  `p_disallow_whitespace`  |  boolean  |  false  |  아니요  |  `true`로 설정되어 암호에 공백 문자를 사용할 수 없습니다.  | 
|  `p_disallow_at_sign`  |  boolean  |  false  |  아니요  |  `true`로 설정되어 암호에 @ 문자를 사용할 수 없습니다.  | 

암호 확인 기능을 여러 개 만들 수 있습니다.

사용자 지정 기능의 이름에 대한 제한 사항이 있습니다. 사용자 지정 함수는 기존 시스템 객체와 이름이 같을 수 없고, 30자를 넘어서는 안 됩니다. 또한 `PASSWORD`, `VERIFY`, `COMPLEXITY`, `ENFORCE`, `STRENGTH` 중 한 가지 문자열을 포함해야 합니다.

다음 예시에서는 `CUSTOM_PASSWORD_FUNCTION`이라는 기능을 생성합니다. 이 함수에는 최소한 문자 12개, 대문자 2개, 자릿수 1개, 특수 문자 1개가 필요하며 암호에는 @ 문자를 사용할 수 없습니다.

```
begin
    rdsadmin.rdsadmin_password_verify.create_verify_function(
        p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', 
        p_min_length           => 12, 
        p_min_uppercase        => 2, 
        p_min_digits           => 1, 
        p_min_special          => 1,
        p_disallow_at_sign     => true);
end;
/
```

확인 함수의 텍스트를 보려면 `DBA_SOURCE`를 쿼리하세요. 다음은 `CUSTOM_PASSWORD_FUNCTION`이라는 이름의 사용자 지정 암호 기능의 텍스트를 얻는 예제입니다.

```
COL TEXT FORMAT a150

  SELECT TEXT 
    FROM DBA_SOURCE 
   WHERE OWNER = 'SYS' 
     AND NAME = 'CUSTOM_PASSWORD_FUNCTION' 
ORDER BY LINE;
```

확인 함수를 사용자 프로파일과 연결하려면 `ALTER PROFILE`을 사용하세요. 다음 예제에서는 이름이 `CUSTOM_PASSWORD_FUNCTION`인 확인 PL/SQL 함수를 `DEFAULT` 사용자 프로필과 연결합니다. `PASSWORD_VERIFY_FUNCTION`은 Oracle 프로필 리소스 이름입니다.

```
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;
```

어떤 사용자 프로파일이 어떤 확인 기능과 연결되어 있는지 보려면 `DBA_PROFILES`를 쿼리하세요. 다음은 `CUSTOM_PASSWORD_FUNCTION`이라는 이름의 사용자 지정 확인 기능과 연결된 프로필을 얻는 예제입니다.

```
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION' AND LIMIT = 'CUSTOM_PASSWORD_FUNCTION';


PROFILE                    RESOURCE_NAME                     RESOURCE  LIMIT
-------------------------  --------------------------------  --------  ------------------------
DEFAULT                    PASSWORD_VERIFY_FUNCTION          PASSWORD  CUSTOM_PASSWORD_FUNCTION
```

다음은 모든 프로필과 프로필에 연결된 암호 확인 기능을 얻는 예제입니다.

```
SELECT * FROM DBA_PROFILES WHERE RESOURCE_NAME = 'PASSWORD_VERIFY_FUNCTION';

PROFILE                    RESOURCE_NAME                     RESOURCE  LIMIT
-------------------------  --------------------------------  --------  ------------------------
DEFAULT                    PASSWORD_VERIFY_FUNCTION          PASSWORD  CUSTOM_PASSWORD_FUNCTION
RDSADMIN                   PASSWORD_VERIFY_FUNCTION          PASSWORD  NULL
```

# create\$1passthrough\$1verify\$1fcn 프로시저
<a name="Appendix.Oracle.CommonDBATasks.CustomPassword.Custom"></a>

이 `create_passthrough_verify_fcn` 프로시저는 RDS for Oracle의 모든 버전에 대해 지원됩니다.

Amazon RDS 프로시저 `rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn`을 사용하여 사용자 지정 암호 확인 함수를 만들 수 있습니다. `create_passthrough_verify_fcn` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_verify_function_name`  |  varchar2  |  —  |  예  |  사용자 정의 확인 함수의 이름입니다. SYS 스키마에서 자동으로 생성되는 래퍼 함수로서 확인 로직을 포함하지 않습니다. 이 함수를 사용자 프로필에 할당합니다.  | 
|  `p_target_owner`  |  varchar2  |  —  |  예  |  사용자 지정 확인 함수의 스키마 소유자입니다.  | 
|  `p_target_function_name`  |  varchar2  |  —  |  예  |  확인 로직을 포함하는 기존 사용자 지정 함수의 이름입니다. 사용자 정의 함수는 부울 값을 반환합니다. 사용자의 함수는 암호가 유효할 경우 `true`를 반환하고 암호가 유효하지 않을 경우 `false`를 반환해야 합니다.  | 

다음은 `PASSWORD_LOGIC_EXTRA_STRONG`이라는 함수 로직을 사용하는 암호 확인 함수를 생성하는 예제입니다.

```
begin
    rdsadmin.rdsadmin_password_verify.create_passthrough_verify_fcn(
        p_verify_function_name => 'CUSTOM_PASSWORD_FUNCTION', 
        p_target_owner         => 'TEST_USER',
        p_target_function_name => 'PASSWORD_LOGIC_EXTRA_STRONG');
end;
/
```

확인 기능을 사용자 프로파일과 연결하려면 `alter profile`를 사용하세요. 다음은 확인 함수를 `DEFAULT` 사용자 프로파일과 연결하는 예제입니다.

```
ALTER PROFILE DEFAULT LIMIT PASSWORD_VERIFY_FUNCTION CUSTOM_PASSWORD_FUNCTION;
```

## 사용자 지정 DNS 서버 설정
<a name="Appendix.Oracle.CommonDBATasks.CustomDNS"></a>

Amazon RDS는 Oracle을 실행하는 DB 인스턴스에서 아웃바운드 네트워크 액세스를 지원합니다. 사전 요구 사항을 포함한 아웃바운드 네트워크 액세스에 대한 자세한 내용은 [인증서 및 Oracle Wallet을 사용하여 UTL\$1HTTP 액세스 구성](Oracle.Concepts.ONA.md) 섹션을 참조하세요.

Amazon RDS Oracle에서는 고객이 소유한 사용자 지정 DNS 서버에서의 DNS(Domain Name Service) 확인이 가능합니다. 사용자 지정 DNS 서버를 통해 Amazon RDS DB 인스턴스에서 전체 주소 도메인 이름만을 확인할 수 있습니다.

사용자 지정 DNS 이름 서버를 설정한 후 변경 사항이 DB 인스턴스에 전파되는 데 최대 30분이 걸립니다. 변경 사항이 DB 인스턴스에 전파된 후 DNS 조회를 필요로 하는 모든 아웃바운드 네트워크 트래픽은 포트 53을 통해 DNS 서버를 쿼리합니다.

Amazon RDS for Oracle DB 인스턴스의 사용자 지정 DNS 서버를 설정하려면 다음과 같이 하세요.
+ Virtual Private Cloud(VPC)에 연결된 DHCP 옵션 세트에서 DNS 이름 서버의 IP 주소에 대해 `domain-name-servers` 옵션을 설정합니다. 자세한 내용은 [DHCP 옵션 세트](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_DHCP_Options.html) 단원을 참조하세요.
**참고**  
`domain-name-servers` 옵션은 최대 4개의 값을 받아들이지만 Amazon RDS DB 인스턴스는 첫 번째 값만을 사용합니다.
+ DNS 서버가 DNS 이름, Amazon EC2 프라이빗 DNS 이름, 고객별 DNS 이름을 비롯한 모든 조회 쿼리를 확인할 수 있는지 확인합니다. 아웃바운드 네트워크 트래픽에 DNS 서버가 처리할 수 없는 DNS 조회가 포함된 경우, DNS 서버에 적절한 업스트림 DNS 공급자가 구성되어 있어야 합니다.
+ 512바이트 이하의 UDP(User Datagram Protocol) 응답을 생성하도록 DNS 서버를 구성하세요.
+ 1,024바이트 이하의 TCP(Transmission Control Protocol) 응답을 생성하도록 DNS 서버를 구성하세요.
+ 포트 53을 통한 Amazon RDS DB 인스턴스로부터의 인바운드 트래픽을 허용하도록 DNS 서버를 구성하세요. DNS 서버가 Amazon VPC에 있는 경우, VPC에는 포트 53에서 UDP 및 TCP 트래픽을 허용하는 인바운드 규칙이 포함된 보안 그룹이 있어야 합니다. DNS 서버가 Amazon VPC에 없는 경우, 포트 53에서 UDP 및 TCP 인바운드 트래픽을 허용하는 적절한 방화벽 허용 목록이 있어야 합니다.

  자세한 내용은 [VPC의 보안 그룹](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) 및 [규칙 추가 및 제거](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#AddRemoveRules) 단원을 참조하세요.
+ 포트 53을 통한 아웃바운드 트래픽을 허용하도록 Amazon RDS DB 인스턴스의 VPC를 구성하세요. VPC에는 포트 53에서 UDP 및 TCP 트래픽을 허용하는 아웃바운드 규칙이 포함된 보안 그룹이 있어야 합니다.

  자세한 내용은 [VPC의 보안 그룹](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html) 및 [규칙 추가 및 제거](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_SecurityGroups.html#AddRemoveRules) 단원을 참조하세요.
+ Amazon RDS DB 인스턴스와 DNS 서버 간 라우팅 경로가 DNS 트래픽을 허용하도록 올바로 구성되어야 합니다.
  + Amazon RDS DB 인스턴스와 DNS 서버가 같은 VPC에 있지 않은 경우, 그 사이에 피어링 연결을 구축해야 합니다. 자세한 내용은 [VPC 피어링이란?](https://docs.aws.amazon.com/vpc/latest/peering/Welcome.html)을 참조하세요.

# 시스템 진단 이벤트 설정 및 설정 해제
<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.
```