

# RDS for Oracle DB 인스턴스 관리
<a name="Appendix.Oracle.CommonDBATasks"></a>

다음은 RDS for Oracle DB 인스턴스와 관련하여 수행하는 일반적인 관리 작업입니다. 일부 작업은 모든 RDS DB 인스턴스에서 동일합니다. 다른 작업은 RDS for Oracle에만 해당됩니다.

다음 작업은 모든 RDS 데이터베이스에 공통적으로 적용되지만 Oracle 데이터베이스의 경우 특별한 고려 사항이 있습니다. 예를 들어, Oracle 클라이언트 SQL\$1Plus 및 SQL Developer를 사용하여 Oracle 데이터베이스에 연결합니다.


****  

| 작업 영역 | 관련 설명서 | 
| --- | --- | 
|  **인스턴스 클래스, 스토리지 및 PIOPS** 프로덕션 인스턴스를 생성하는 경우 Amazon RDS에서 인스턴스 클래스, 스토리지 유형 및 프로비저닝된 IOPS가 작동하는 방식을 알아봅니다.  |  [RDS for Oracle DB 인스턴스 클래스](Oracle.Concepts.InstanceClasses.md) [Amazon RDS 스토리지 유형](CHAP_Storage.md#Concepts.Storage)  | 
|  **다중 AZ 배포** 프로덕션 DB 인스턴스에서는 다중 AZ 배포를 사용해야 합니다. 다중 AZ 배포는 DB 인스턴스를 위해 향상된 가용성, 데이터 내구성 및 내결함성을 제공합니다.  |  [Amazon RDS에 대한 다중 AZ 배포 구성 및 관리](Concepts.MultiAZ.md)  | 
|  ** Amazon VPC** AWS 계정에 기본 Virtual Private Cloud(VPC)가 있는 경우에는 DB 인스턴스가 기본 VPC 내부에 자동으로 생성됩니다. 계정에 기본 VPC가 없는데 VPC에 DB 인스턴스를 생성하려면 VPC와 서브넷 그룹을 생성한 후 인스턴스를 생성합니다.  |  [VPC에서 DB 인스턴스를 사용한 작업](USER_VPC.WorkingWithRDSInstanceinaVPC.md)  | 
|  **보안 그룹** 기본적으로 DB 인스턴스는 액세스를 막는 방화벽을 사용합니다. 따라서 DB 인스턴스에 액세스하기 위한 알맞은 IP 주소와 네트워크 구성으로 보안 그룹을 생성해야 합니다.  |  [보안 그룹을 통한 액세스 제어](Overview.RDSSecurityGroups.md)  | 
|  **파라미터 그룹** DB 인스턴스에 특정 데이터베이스 파라미터가 필요할 경우, 파라미터 그룹을 만든 후 DB 인스턴스를 만듭니다.  |  [Amazon RDS의 파라미터 그룹](USER_WorkingWithParamGroups.md)  | 
|  **옵션 그룹 수** DB 인스턴스에 특정 데이터베이스 옵션이 필요할 경우, 옵션 그룹을 생성한 후 DB 인스턴스를 생성합니다.  |  [Oracle DB 인스턴스에 옵션 추가](Appendix.Oracle.Options.md)  | 
|  **DB 인스턴스에 연결** 보안 그룹을 생성하고 이를 DB 인스턴스에 연결한 후, Oracle SQL\$1Plus와 같은 표준 SQL 클라이언트 애플리케이션을 사용하여 DB 인스턴스에 연결할 수 있습니다.  |  [Oracle DB 인스턴스에 연결](USER_ConnectToOracleInstance.md)  | 
|  **백업 및 복원** DB 인스턴스를 구성하여 자동 백업을 생성하거나 수동 스냅샷을 생성한 다음 백업 또는 스냅샷에서 인스턴스를 복원할 수 있습니다.  |  [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md)  | 
|  **모니터링** CloudWatch Amazon RDS 측정치, 이벤트 및 향상된 모니터링 기능을 통해 Oracle DB 인스턴스를 모니터링할 수 있습니다.  |  [Amazon RDS 콘솔에서 지표 보기](USER_Monitoring.md) [Amazon RDS 이벤트 보기](USER_ListEvents.md)  | 
|  **로그 파일** Oracle DB 인스턴스의 로그 파일에 액세스할 수 있습니다.  |  [Amazon RDS 로그 파일 모니터링](USER_LogAccess.md)  | 

다음에는 RDS Oracle에 대한 일반적인 DBA 태스크의 Amazon RDS 특정 구현에 대한 설명을 확인할 수 있습니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않습니다. 또한 RDS는 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다. 많은 태스크에서는 Amazon RDS 전용 도구인 `rdsadmin` 패키지를 실행하여 데이터베이스를 관리할 수 있습니다.

다음은 Oracle을 실행 중인 DB 인스턴스에 대한 공통 DBA 작업입니다.
+ [시스템 작업](Appendix.Oracle.CommonDBATasks.System.md)  
****    
<a name="dba-tasks-oracle-system-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [데이터베이스 작업](Appendix.Oracle.CommonDBATasks.Database.md)  
****    
<a name="dba-tasks-oracle-database-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [로그 작업](Appendix.Oracle.CommonDBATasks.Log.md)  
****    
<a name="dba-tasks-oracle-log-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [RMAN 작업](Appendix.Oracle.CommonDBATasks.RMAN.md)  
****    
<a name="dba-tasks-oracle-rman-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [Oracle Scheduler 작업](Appendix.Oracle.CommonDBATasks.Scheduler.md)  
****    
<a name="dba-tasks-oracle-scheduler-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [문제 진단](Appendix.Oracle.CommonDBATasks.Diagnostics.md)  
****    
<a name="dba-tasks-oracle-diagnostic-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 
+ [기타 작업](Appendix.Oracle.CommonDBATasks.Misc.md)  
****    
<a name="dba-tasks-oracle-misc-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.html)

 

Amazon S3과 Oracle의 통합 및 OEM 관리 에이전트 데이터베이스 작업 실행에 Amazon RDS 프로시저를 사용할 수도 있습니다. 자세한 내용은 [Amazon S3 통합](oracle-s3-integration.md) 및 [Management Agent를 사용하여 데이터베이스 작업 수행](Oracle.Options.OEMAgent.md#Oracle.Options.OEMAgent.DBTasks)(을)를 참조하세요.

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

# Oracle DB 인스턴스에 대한 공통 데이터베이스 작업 수행
<a name="Appendix.Oracle.CommonDBATasks.Database"></a>

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

**Topics**
+ [

# 데이터베이스의 전역 이름 변경
](Appendix.Oracle.CommonDBATasks.RenamingGlobalName.md)
+ [

# RDS for Oracle에서 테이블스페이스 작업
](Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles.md)
+ [

# RDS for Oracle에서 tempfiles 작업
](Appendix.Oracle.CommonDBATasks.using-tempfiles.md)
+ [

# RDS for Oracle의 테이블스페이스, 데이터 파일 및 임시 파일 크기 조정
](Appendix.Oracle.CommonDBATasks.ResizeTempSpaceReadReplica.md)
+ [

# RDS for Oracle의 스토리지 볼륨 간에 데이터 이동
](Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes.md)
+ [

# RDS for Oracle의 외부 테이블 작업
](Appendix.Oracle.CommonDBATasks.External_Tables.md)

# 데이터베이스의 전역 이름 변경
<a name="Appendix.Oracle.CommonDBATasks.RenamingGlobalName"></a>

데이터베이스의 전역 이름을 변경하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.rename_global_name`을 사용합니다. `rename_global_name` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_new_global_name`  |  varchar2  |  —  |  예  |  데이터베이스의 새로운 전역 이름입니다.  | 

이름 변경이 적용될 수 있도록 데이터베이스가 열려 있어야 합니다. 데이터베이스의 전역 이름 변경에 대한 자세한 내용은 Oracle 문서의 [ALTER DATABASE](http://docs.oracle.com/cd/E11882_01/server.112/e41084/statements_1004.htm#SQLRF52547)를 참조하세요.

다음은 데이터베이스의 전역 이름을 `new_global_name`으로 변경하는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.rename_global_name(p_new_global_name => 'new_global_name');
```

# RDS for Oracle에서 테이블스페이스 작업
<a name="Appendix.Oracle.CommonDBATasks.TablespacesAndDatafiles"></a>

RDS for Oracle에서 테이블스페이스를 사용할 수 있습니다. 이 테이블스페이스는 데이터베이스의 데이터를 저장하는 논리적 스토리지 단위입니다.

**중요**  
DB 인스턴스에 복제본이 있는 경우 세션 수준 변경 대신 파라미터 그룹 설정을 사용하여 기본 파일 위치를 관리하는 것이 좋습니다. 기본 인스턴스의 기본 파일 위치에 대한 세션 수준 변경 사항은 복제본에 자동으로 반영되지 않습니다. 파라미터 그룹 설정을 사용하면 기본 인스턴스와 복제본 인스턴스에서 일관된 파일 위치가 보장됩니다.

**Topics**
+ [

## RDS for Oracle에서 데이터베이스 파일 위치 지정
](#Appendix.Oracle.CommonDBATasks.DatabaseFileLocations)
+ [

## RDS for Oracle에서 테이블스페이스 생성 및 크기 조정
](#Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles)
+ [

## RDS for Oracle에서 추가 스토리지 볼륨에 테이블스페이스 생성
](#Appendix.Oracle.CommonDBATasks.CreatingTablespacesWithFileLocations)
+ [

## RDS for Oracle에서 기본 테이블스페이스 설정
](#Appendix.Oracle.CommonDBATasks.SettingDefaultTablespace)
+ [

## RDS for Oracle에서 기본 임시 테이블스페이스 설정
](#Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace)
+ [

## 인스턴스 스토어에 임시 테이블스페이스 생성
](#Appendix.Oracle.CommonDBATasks.creating-tts-instance-store)

## RDS for Oracle에서 데이터베이스 파일 위치 지정
<a name="Appendix.Oracle.CommonDBATasks.DatabaseFileLocations"></a>

RDS for Oracle은 Oracle Managed Files(OMF)를 사용하여 데이터베이스 파일의 이름을 지정합니다. 데이터베이스 파일을 생성할 때 데이터베이스는 `DB_CREATE_FILE_DEST` 초기화 파라미터의 현재 설정을 기반으로 설정을 파생시킵니다.

`DB_CREATE_FILE_DEST` 초기화 파라미터의 기본값은 독립 실행형 데이터베이스의 경우 `/rdsdbdata/db`, 컨테이너화된(CDB/MT) 아키텍처의 경우 `/rdsdbdata/db/pdb`입니다. DB 인스턴스에 추가 스토리지 볼륨이 있는 경우 `DB_CREATE_FILE_DEST`를 볼륨 위치로 설정할 수 있습니다. 예를 들어 인스턴스에 `/rdsdbdata/db`에 탑재된 볼륨이 있는 경우 `DB_CREATE_FILE_DEST`를 이 값으로 설정할 수 있습니다.

세션 수준 또는 Oracle 데이터베이스 인스턴스 수준에서 `DB_CREATE_FILE_DEST` 파라미터를 수정할 수 있습니다.

### 인스턴스 수준에서 DB\$1CREATE\$1FILE\$1SET 수정
<a name="Appendix.Oracle.CommonDBATasks.InstanceLevelModification"></a>

인스턴스 수준에서 파라미터를 수정하려면 DB 인스턴스에 할당된 파라미터 그룹의 파라미터를 업데이트하고 적용합니다. 자세한 내용은 [RDS for Oracle 초기화 파라미터](Oracle.Concepts.FeatureSupport.Parameters.md) 및 [Amazon RDS에서 DB 파라미터 그룹의 파라미터 수정](USER_WorkingWithParamGroups.Modifying.md)(을)를 참조하세요.

### 세션 수준에서 DB\$1CREATE\$1FILE\$1DEST 수정
<a name="Appendix.Oracle.CommonDBATasks.SessionLevelModification"></a>

`ALTER SESSION` 문을 실행하여 세션 수준에서 파라미터를 수정할 수 있습니다. 이 접근 방식은 전체 인스턴스에 영향을 주지 않고 특정 세션의 특정 위치에 데이터베이스 파일을 생성하려는 경우에 유용합니다.

다음 예제에서는 현재 파라미터 값을 확인하고 세션에 맞게 수정하는 방법을 보여 줍니다.

```
SHOW PARAMETER db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /rdsdbdata/db

ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.

SHOW PARAMETER db_create_file_dest

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_create_file_dest                  string      /rdsdbdata2/db
```

## RDS for Oracle에서 테이블스페이스 생성 및 크기 조정
<a name="Appendix.Oracle.CommonDBATasks.CreatingTablespacesAndDatafiles"></a>

테이블스페이스를 생성하면 데이터베이스는 생성 시 `DB_CREATE_FILE_DEST` 초기화 파라미터로 지정된 스토리지 볼륨에 데이터 파일을 생성합니다. 기본적으로 데이터 파일 크기를 지정하지 않으면 테이블스페이스는 기본값이 `AUTOEXTEND ON`으로 생성되며, 최대 크기가 없습니다. 다음 예제에서 테이블스페이스 *users1*은 자동 확장이 가능합니다.

```
CREATE TABLESPACE users1;
```

이러한 기본 설정 때문에, 테이블스페이스가 할당된 모든 스토리지를 차지할 때까지 확장되기도 합니다. 되도록 영구 및 임시 테이블스페이스에 적절한 최대 크기를 지정하고, 공간 사용량을 자세히 살펴보십시오.

다음은 시작 크기가 1GB인 *users2*라는 이름의 테이블스페이스를 생성하는 예제입니다. 데이터 파일 크기가 지정되었지만 `AUTOEXTEND ON`이 지정되지 않았으므로 테이블스페이스를 자동 확장할 수 없습니다.

```
CREATE TABLESPACE users2 DATAFILE SIZE 1G;
```

다음은 시작 크기가 1GB이고 최대 크기가 10GB인 *users3*라는 이름의 테이블스페이스를 생성하는 예제입니다.

```
CREATE TABLESPACE users3 DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 10G;
```

다음은 *temp01*이라는 이름의 임시 테이블스페이스를 생성하는 예제입니다.

```
CREATE TEMPORARY TABLESPACE temp01;
```

`ALTER TABLESPACE`를 사용하여 빅파일 테이블스페이스 크기를 조정할 수 있습니다. 크기는 킬로바이트(K), 메가바이트(M), 기가바이트(G)나 테라바이트(T)로 설정할 수 있습니다. 다음 예제에서는 *users\$1bf*라는 빅파일 테이블스페이스의 크기를 200MB로 조정합니다.

```
ALTER TABLESPACE users_bf RESIZE 200M;
```

다음 예에서는 *users\$1sf*라는 스몰파일 테이블스페이스에 데이터 파일을 추가합니다.

```
ALTER TABLESPACE users_sf ADD DATAFILE SIZE 100000M AUTOEXTEND ON NEXT 250m MAXSIZE UNLIMITED;
```

## RDS for Oracle에서 추가 스토리지 볼륨에 테이블스페이스 생성
<a name="Appendix.Oracle.CommonDBATasks.CreatingTablespacesWithFileLocations"></a>

추가 스토리지 볼륨에 테이블스페이스를 생성하려면 `DB_CREATE_FILE_DEST` 파라미터를 볼륨 위치로 수정합니다. 다음 예제에서는 파일 위치를 `/rdsdbdata2/db`로 설정합니다.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.
```

다음 예제에서는 추가 볼륨 `/rdsdbdata2/db`에 테이블스페이스를 생성합니다.

```
CREATE TABLESPACE new_tablespace DATAFILE SIZE 10G;

Tablespace created.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'NEW_TABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
NEW_TABLESPACE                     7 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_newtable_a123b4c5_.dbf
```

smallfile 테이블스페이스를 생성하고 데이터 파일을 여러 스토리지 볼륨에 분산하려면 테이블스페이스를 생성한 후 테이블스페이스에 데이터 파일을 추가합니다. 다음 예제에서는 데이터 파일이의 기본 위치인 `/rdsdbdata/db`에 있는 테이블스페이스를 생성합니다. 그런 다음 기본 대상을 `/rdsdbdata/db2`로 설정합니다. 새로 생성된 테이블스페이스에 데이터 파일을 추가하면 데이터베이스가 파일을 `/rdsdbdata/db2`에 저장합니다.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata/db';

Session altered.

CREATE SMALLFILE TABLESPACE smalltbs DATAFILE SIZE 10G;

Tablespace created.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'SMALLTBS';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
SMALLTBS                           8 /rdsdbdata/db/ORCL_A/datafile/o1_mf_smalltbs_n563yryk_.dbf

ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';

Session altered.

ALTER TABLESPACE smalltbs ADD DATAFILE SIZE 10G;

Tablespace altered.

SELECT tablespace_name,file_id,file_name FROM dba_data_files
WHERE tablespace_name = 'SMALLTBS';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
SMALLTBS                           8 /rdsdbdata/db/ORCL_A/datafile/o1_mf_smalltbs_n563yryk_.dbf
SMALLTBS                           9 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_smalltbs_n564004g_.dbf
```

## RDS for Oracle에서 기본 테이블스페이스 설정
<a name="Appendix.Oracle.CommonDBATasks.SettingDefaultTablespace"></a>

기본 테이블스페이스를 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.alter_default_tablespace`를 사용합니다. `alter_default_tablespace` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `tablespace_name`  |  varchar  |  —  |  예  |  기본 테이블스페이스의 이름입니다.  | 

다음은 기본 테이블스페이스를 *users2*로 설정하는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.alter_default_tablespace(tablespace_name => 'users2');
```

## RDS for Oracle에서 기본 임시 테이블스페이스 설정
<a name="Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace"></a>

기본 임시 테이블스페이스를 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.alter_default_temp_tablespace`를 사용합니다. `alter_default_temp_tablespace` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `tablespace_name`  |  varchar  |  —  |  예  |  기본 임시 테이블스페이스의 이름입니다.  | 

다음 예에서는 기본 임시 테이블스페이스를 *temp01*으로 설정합니다.

```
EXEC rdsadmin.rdsadmin_util.alter_default_temp_tablespace(tablespace_name => 'temp01');
```

## 인스턴스 스토어에 임시 테이블스페이스 생성
<a name="Appendix.Oracle.CommonDBATasks.creating-tts-instance-store"></a>

인스턴스 스토어에 임시 테이블스페이스를 생성하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace`를 사용합니다. `create_inst_store_tmp_tblspace` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar  |  —  |  예  |  기본 임시 테이블스페이스의 이름입니다.  | 

다음 예에서는 인스턴스 스토어에 임시 테이블스페이스 *temp01*을 생성합니다.

```
EXEC rdsadmin.rdsadmin_util.create_inst_store_tmp_tblspace(p_tablespace_name => 'temp01');
```

**중요**  
`rdsadmin_util.create_inst_store_tmp_tblspace`를 실행할 때 새로 생성된 임시 테이블스페이스는 자동으로 기본 임시 테이블스페이스로 설정되지 않습니다. 기본값으로 설정하려면 [RDS for Oracle에서 기본 임시 테이블스페이스 설정](#Appendix.Oracle.CommonDBATasks.SettingDefTempTablespace)를 참조하세요.

자세한 내용은 [RDS for Oracle 인스턴스 스토어에 임시 데이터 저장](CHAP_Oracle.advanced-features.instance-store.md) 섹션을 참조하세요.

# RDS for Oracle에서 tempfiles 작업
<a name="Appendix.Oracle.CommonDBATasks.using-tempfiles"></a>

## 읽기 전용 복제본의 인스턴스 스토어에 임시 파일 추가
<a name="Appendix.Oracle.CommonDBATasks.adding-tempfile-replica"></a>

기본 DB 인스턴스에서 임시 테이블스페이스를 생성하면 읽기 전용 복제본으로 임시 파일이 생성되지 않습니다. 다음 이유 중 하나로 인해 읽기 전용 복제본에 빈 임시 테이블스페이스가 있다고 가정해 보겠습니다.
+ 읽기 전용 복제본의 테이블스페이스에서 임시 파일을 삭제했습니다. 자세한 내용은 [읽기 전용 복제본에서 임시 파일 삭제](Appendix.Oracle.CommonDBATasks.dropping-tempfiles-replica.md) 섹션을 참조하세요.
+ 기본 DB 인스턴스에 새 임시 테이블스페이스를 생성했습니다. 이 경우 RDS for Oracle은 읽기 전용 복제본에 메타데이터를 동기화합니다.

빈 임시 테이블스페이스에 임시 파일을 추가하고 인스턴스 스토어에 임시 파일을 저장할 수 있습니다. 인스턴스 스토어에 임시 파일을 생성하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.add_inst_store_tempfile`을 사용합니다. 이 프로시저는 읽기 전용 복제본에서만 사용할 수 있습니다. 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar  |  —  |  예  |  읽기 전용 복제본에 있는 임시 테이블스페이스의 이름입니다.  | 

다음 예에서는 빈 임시 테이블스페이스 *temp01*이 읽기 전용 복제본에 있습니다. 다음 명령을 실행하여 이 테이블스페이스에 대한 임시 파일을 생성하고 인스턴스 스토어에 저장합니다.

```
EXEC rdsadmin.rdsadmin_util.add_inst_store_tempfile(p_tablespace_name => 'temp01');
```

자세한 내용은 [RDS for Oracle 인스턴스 스토어에 임시 데이터 저장](CHAP_Oracle.advanced-features.instance-store.md) 섹션을 참조하세요.

# 읽기 전용 복제본에서 임시 파일 삭제
<a name="Appendix.Oracle.CommonDBATasks.dropping-tempfiles-replica"></a>

읽기 전용 복제본에서 기존 임시 테이블스페이스를 삭제할 수 없습니다. 읽기 전용 복제본의 임시 파일 스토리지를 Amazon EBS에서 인스턴스 스토어로 또는 인스턴스 스토어에서 Amazon EBS로 변경할 수 있습니다. 이를 위해 다음을 수행합니다.

1. 현재 읽기 전용 복제본의 임시 테이블스페이스에 있는 임시 파일을 삭제합니다.

1. 다른 스토리지에 새 임시 파일을 생성합니다.

임시 파일을 삭제하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util. drop_replica_tempfiles`을 사용합니다. 이 절차는 읽기 전용 복제본에서만 사용할 수 있습니다. `drop_replica_tempfiles` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar  |  —  |  예  |  읽기 전용 복제본에 있는 임시 테이블스페이스의 이름입니다.  | 

*temp01*이라는 임시 테이블스페이스가 읽기 전용 복제본의 인스턴스 스토어에 있다고 가정해 보겠습니다. 다음 명령을 실행하여 이 테이블스페이스의 모든 임시 파일을 삭제합니다.

```
EXEC rdsadmin.rdsadmin_util.drop_replica_tempfiles(p_tablespace_name => 'temp01');
```

자세한 내용은 [RDS for Oracle 인스턴스 스토어에 임시 데이터 저장](CHAP_Oracle.advanced-features.instance-store.md) 섹션을 참조하세요.

# RDS for Oracle의 테이블스페이스, 데이터 파일 및 임시 파일 크기 조정
<a name="Appendix.Oracle.CommonDBATasks.ResizeTempSpaceReadReplica"></a>

기본적으로 Oracle 테이블스페이스는 자동 확장이 켜진 상태로 생성되며 최대 크기는 지정되지 않습니다. 이러한 기본 설정 때문에 테이블스페이스가 너무 크게 확장될 때가 있습니다. 되도록 영구 및 임시 테이블스페이스에 적절한 최대 크기를 지정하고, 공간 사용량을 자세히 살펴보십시오.

## 영구 테이블스페이스 크기 조정
<a name="resizing-perm-tbs"></a>

RDS for Oracle DB 인스턴스에서 영구 테이블스페이스의 크기를 조정하려면 다음 Amazon RDS 프로시저 중 하나를 사용하세요.
+ `rdsadmin.rdsadmin_util.resize_datafile`
+ `rdsadmin.rdsadmin_util.autoextend_datafile`

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_data_file_id`  |  숫자  |  —  |  예  |  크기를 조정할 데이터 파일의 식별자.  | 
|  `p_size`  |  varchar2  |  —  |  예  |  데이터 파일의 크기. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다.  | 

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_data_file_id`  |  숫자  |  —  |  예  |  크기를 조정할 데이터 파일의 식별자.  | 
|  `p_autoextend_state`  |  varchar2  |  —  |  예  |  자동 확장 기능의 상태. 데이터 파일을 자동으로 확장하려면 `ON`으로 지정하고, 자동 확장을 끄려면 `OFF`로 지정합니다.  | 
|  `p_next`  |  varchar2  |  —  |  아니요  |  다음 데이터 파일 증분의 크기. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다.  | 
|  `p_maxsize`  |  varchar2  |  —  |  아니요  |  자동 확장에 허용되는 최대 디스크 공간. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다. `UNLIMITED`를 지정하여 파일 크기 제한을 없앨 수 있습니다.  | 

다음 예제에서는 데이터 파일 크기를 4\$1500MB로 조정합니다.

```
EXEC rdsadmin.rdsadmin_util.resize_datafile(4,'500M');
```

다음 예제에서는 데이터 파일 4의 자동 확장을 끕니다. 또한 데이터 파일 5는 자동 확장을 켜고, 최대 크기 없이 128MB씩 증분하는 걸로 설정합니다.

```
EXEC rdsadmin.rdsadmin_util.autoextend_datafile(4,'OFF');
EXEC rdsadmin.rdsadmin_util.autoextend_datafile(5,'ON','128M','UNLIMITED');
```

## 임시 테이블스페이스의 크기 조정
<a name="resizing-temp-tbs"></a>

RDS for Oracle DB 인스턴스에서 임시 테이블스페이스의 크기를 조정하려면 다음 Amazon RDS 프로시저 중 하나를 사용하세요.
+ `rdsadmin.rdsadmin_util.resize_temp_tablespace`
+ `rdsadmin.rdsadmin_util.resize_tempfile`
+ `rdsadmin.rdsadmin_util.autoextend_tempfile`

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_tablespace_name`  |  varchar2  |  —  |  예  |  크기를 조정할 임시 테이블스페이스의 이름입니다.  | 
|  `p_size`  |  varchar2  |  —  |  예  |  테이블스페이스의 크기. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다.  | 

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_file_id`  |  숫자  |  —  |  예  |  크기를 조정할 임시 테이블스페이스의 파일 식별자.  | 
|  `p_size`  |  varchar2  |  —  |  예  |  임시 파일의 크기. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다.  | 

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_temp_file_id`  |  숫자  |  —  |  예  |  크기를 조정할 임시 테이블스페이스의 파일 식별자.  | 
|  `p_autoextend_state`  |  varchar2  |  —  |  예  |  자동 확장 기능의 상태. 임시 파일을 자동으로 확장하려면 `ON`으로 지정하고, 자동 확장을 끄려면 `OFF`로 지정합니다.  | 
|  `p_next`  |  varchar2  |  —  |  아니요  |  다음 임시 파일 증분의 크기. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다.  | 
|  `p_maxsize`  |  varchar2  |  —  |  아니요  |  자동 확장에 허용되는 최대 디스크 공간. 크기는 바이트(기본값), 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)로 지정합니다. `UNLIMITED`를 지정하여 파일 크기 제한을 없앨 수 있습니다.  | 

다음 예제에서는 `TEMP`라는 이름의 임시 테이블스페이스의 크기를 4GB로 조정합니다.

```
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4G');
```

```
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('TEMP','4096000000');
```

다음 예제에서는 파일 식별자가 `1`인 임시 파일을 기준으로 하는 임시 테이블스페이스의 크기를 2MB로 조정합니다.

```
EXEC rdsadmin.rdsadmin_util.resize_tempfile(1,'2M');
```

다음 예제에서는 임시 파일 1의 자동 확장을 끕니다. 또한 임시 파일의 최대 자동 확장 크기를 2GB에서 10GB로 설정하며, 100MB씩 증분합니다.

```
EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(1,'OFF');
EXEC rdsadmin.rdsadmin_util.autoextend_tempfile(2,'ON','100M','10G');
```

Oracle DB 인스턴스의 읽기 전용 복제본에 대한 자세한 내용은 [Amazon RDS의 Oracle의 읽기 전용 복제본 작업](oracle-read-replicas.md) 섹션을 참조하세요.

# RDS for Oracle의 스토리지 볼륨 간에 데이터 이동
<a name="Appendix.Oracle.CommonDBATasks.MovingDataBetweenVolumes"></a>

기본 스토리지 볼륨과 추가 스토리지 볼륨 간에 데이터 파일과 데이터베이스 객체를 이동할 수 있습니다. 데이터를 이동하기 전에 다음 사항을 고려하세요.
+ 소스 및 대상 볼륨에는 충분한 여유 공간이 있어야 합니다.
+ 데이터 이동 작업은 두 볼륨 모두에서 I/O를 사용합니다.
+ 대규모 데이터 이동은 데이터베이스 성능에 영향을 미칠 수 있습니다.
+ 스냅샷을 복원할 때 EBS 지연 로드의 영향을 받으면 스토리지 볼륨 간에 데이터를 이동하는 속도가 느려질 수 있습니다.

**Topics**
+ [

## RDS for Oracle의 볼륨 간에 데이터 파일 이동
](#Appendix.Oracle.CommonDBATasks.MovingDatafiles)
+ [

## RDS for Oracle의 볼륨 간에 테이블 데이터 및 인덱스 이동
](#Appendix.Oracle.CommonDBATasks.MovingTableData)
+ [

## 추가 볼륨을 사용하여 LOB 스토리지 관리
](#Appendix.Oracle.CommonDBATasks.ManagingLargeLOBStorage)

## RDS for Oracle의 볼륨 간에 데이터 파일 이동
<a name="Appendix.Oracle.CommonDBATasks.MovingDatafiles"></a>

스토리지 볼륨 간에 데이터 파일을 이동하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.move_datafile`을 사용합니다. 다음과 같은 요구 사항을 확인합니다.
+ Oracle Enterprise Edition을 사용하여 `move_datafile` 프로시저를 실행해야 합니다.
+ 테이블스페이스 `SYSTEM` 및 `RDSADMIN`은 이동할 수 없습니다.

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


****  

| 파라미터 이름 | 데이터 형식 | 필수 | 설명 | 
| --- | --- | --- | --- | 
|  `p_data_file_id`  |  숫자  |  예  |  이동할 데이터 파일의 ID입니다.  | 
|  `p_location`  |  varchar2  |  예  |  데이터 파일을 이동할 스토리지 볼륨입니다.  | 

다음 예시에서는 테이블스페이스를 기본 볼륨 `rdsdbdata`에서 추가 볼륨 `rdsdbdata2`로 이동합니다.

```
SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files
 WHERE tablespace_name = 'MYNEWTABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
MYNEWTABLESPACE                    6 /rdsdbdata/db/ORCL_A/datafile/o1_mf_mynewtab_n123abcd_.dbf

EXECUTE rdsadmin.rdsadmin_util.move_datafile( 6, 'rdsdbdata2');

PL/SQL procedure successfully completed.

SQL> SELECT tablespace_name,file_id,file_name FROM dba_data_files
  WHERE tablespace_name = 'MYNEWTABLESPACE';

TABLESPACE_NAME              FILE_ID FILE_NAME
------------------------- ---------- --------------------------------------------------------------------------------
MYNEWTABLESPACE                    6 /rdsdbdata2/db/ORCL_A/datafile/o1_mf_mynewtab_n356efgh_.dbf
```

## RDS for Oracle의 볼륨 간에 테이블 데이터 및 인덱스 이동
<a name="Appendix.Oracle.CommonDBATasks.MovingTableData"></a>

추가 스토리지 볼륨에 테이블스페이스를 생성하여 데이터베이스 스토리지를 최적화할 수 있습니다. 그런 다음 표준 Oracle SQL을 사용하여 테이블, 인덱스 및 파티션과 같은 객체를 이러한 테이블스페이스로 이동할 수 있습니다. 이 접근 방식은 데이터베이스에 액세스 패턴이 다른 데이터가 포함된 경우 성능 튜닝에 유용합니다. 예를 들어 자주 액세스하는 운영 데이터를 고성능 스토리지 볼륨에 저장하는 동시에 거의 액세스하지 않는 기록 데이터를 저비용 스토리지 볼륨으로 이동할 수 있습니다.

다음 예제에서는 고성능 볼륨 `rdsdbdata2`에 새 테이블스페이스를 생성합니다. 그런 다음 테이블이 온라인 상태일 때 테이블을 추가 스토리지 볼륨으로 이동합니다. 또한 인덱스를 동일한 볼륨으로 이동합니다. 온라인 상태에서 테이블을 이동하고 인덱스를 다시 빌드하려면 Oracle Enterprise Edition이 필요합니다.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata2/db';
CREATE TABLESPACE perf_tbs DATAFILE SIZE 10G;

ALTER TABLE employees
  MOVE TABLESPACE perf_tbs ONLINE;

ALTER INDEX employees_idx
  REBUILD ONLINE TABLESPACE perf_tbs;
```

다음 예제에서는 저비용 볼륨에 테이블스페이스를 생성합니다. 그런 다음 온라인 작업을 사용하여 테이블 파티션을 저비용 스토리지 볼륨으로 이동합니다.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db';
CREATE TABLESPACE hist_tbs DATAFILE SIZE 10G;

ALTER TABLE orders
  MOVE PARTITION orders_2022
  TABLESPACE hist_tbs ONLINE;
```

다음 예제에서는 활성 세션 긴 작업을 쿼리합니다.

```
SELECT sid,opname,sofar,totalwork,time_remaining,elapsed_seconds 
  FROM v$session_longops 
  WHERE time_remaining > 0;
```

다음 쿼리를 사용하여 테이블스페이스 사용량을 확인할 수 있습니다.

```
SELECT tablespace_name, used_percent
  FROM dba_tablespace_usage_metrics
  ORDER BY used_percent DESC;
```

## 추가 볼륨을 사용하여 LOB 스토리지 관리
<a name="Appendix.Oracle.CommonDBATasks.ManagingLargeLOBStorage"></a>

데이터베이스에는 상당한 스토리지를 사용하지만 자주 액세스하지 않는 BLOB 또는 CLOB 객체가 있는 테이블이 포함될 수 있습니다. 스토리지를 최적화하기 위해 이러한 LOB 세그먼트를 추가 스토리지 볼륨의 테이블스페이스로 재배치할 수 있습니다.

다음 예제에서는 저액세스 데이터를 위한 저비용 볼륨에서 LOB 데이터에 대한 테이블스페이스를 생성합니다. 그런 다음이 볼륨에 데이터를 저장하는 테이블을 생성합니다.

```
ALTER SESSION SET db_create_file_dest = '/rdsdbdata3/db';
CREATE TABLESPACE lob_data DATAFILE SIZE 5G AUTOEXTEND ON NEXT 1G;

CREATE TABLE documents (
    doc_id NUMBER PRIMARY KEY,
    doc_date DATE,
    doc_content CLOB
) TABLESPACE user_data
LOB(doc_content) STORE AS (TABLESPACE lob_data);
```

# RDS for Oracle의 외부 테이블 작업
<a name="Appendix.Oracle.CommonDBATasks.External_Tables"></a>

*Oracle 외부 테이블*이란 데이터가 데이터베이스에 저장되어 있지 않은 테이블을 말합니다. 오히려 데이터베이스가 액세스할 수 있는 외부 파일에 데이터가 저장되어 있습니다. 외부 테이블을 사용하면 데이터베이스에 테이블을 로드하지 않고도 데이터에 액세스할 수 있습니다. 외부 테이블에 대한 자세한 내용은 Oracle 설명서에서 [Managing External Tables](http://docs.oracle.com/database/121/ADMIN/tables.htm#ADMIN01507)를 참조하세요.

Amazon RDS에서는 외부 테이블 파일을 디렉터리 객체에 저장할 수 있습니다. 디렉터리 객체는 생성할 수도 있지만, DATA\$1PUMP\$1DIR 디렉터리처럼 Oracle 데이터베이스에 사전 정의되어 있는 객체를 사용할 수도 있습니다. 디렉터리 객체 생성에 대한 자세한 내용은 [메인 데이터 스토리지 공간에서 디렉터리 생성 및 삭제](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories) 섹션을 참조하세요. ALL\$1DIRECTORIES 뷰에 대한 쿼리를 실행하여 Amazon RDS Oracle DB 인스턴스의 디렉터리 객체 목록을 조회할 수 있습니다.

**참고**  
디렉터리 객체는 인스턴스에서 사용하는 메인 데이터 스토리지 공간(Amazon EBS 볼륨)을 가리킵니다. 데이터 파일, 재실행 로그, 감사, 트레이스 및 기타 파일 등에 사용되는 공간은 할당된 공간에서 차감됩니다.

외부 데이터 파일은 [ DBMS\$1FILE\$1TRANSFER](https://docs.oracle.com/database/121/ARPLS/d_ftran.htm#ARPLS095) 패키지 또는 [UTL\$1FILE](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS069) 패키지를 사용하여 Oracle 데이터베이스에서 다른 Oracle 데이터베이스로 이동시킬 수 있습니다. 그러면 원본 데이터베이스의 디렉터리에서 대상 데이터베이스의 특정 디렉터리로 외부 데이터 파일이 이동합니다. `DBMS_FILE_TRANSFER` 사용에 대한 자세한 내용은 [Oracle Data Pump를 사용한 가져오기](Oracle.Procedural.Importing.DataPump.md)을 참조하세요.

외부 데이터 파일을 이동시켰으면 이제 이 파일을 이용해 외부 테이블을 생성할 수 있습니다. 다음 예에서는 USER\$1DIR1 디렉터리의 `emp_xt_file1.txt` 파일을 사용하는 외부 테이블을 생성합니다.

```
CREATE TABLE emp_xt (
  emp_id      NUMBER,
  first_name  VARCHAR2(50),
  last_name   VARCHAR2(50),
  user_name   VARCHAR2(20)
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY USER_DIR1
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (emp_id,first_name,last_name,user_name)
  )
  LOCATION ('emp_xt_file1.txt')
)
PARALLEL
REJECT LIMIT UNLIMITED;
```

예를 들어 Amazon RDS Oracle DB 인스턴스에 저장된 데이터를 외부 데이터 파일로 이동시킨다고 가정하겠습니다. 이때는 외부 테이블을 생성한 후 데이터베이스 테이블에서 데이터를 선택하여 외부 데이터 파일을 채울 수 있습니다. 다음은 데이터베이스의 `orders_xt` 테이블에 대해 쿼리를 실행하여 `orders` 외부 테이블을 생성하는 SQL 문입니다.

```
CREATE TABLE orders_xt
  ORGANIZATION EXTERNAL
   (
     TYPE ORACLE_DATAPUMP
     DEFAULT DIRECTORY DATA_PUMP_DIR
     LOCATION ('orders_xt.dmp')
   )
   AS SELECT * FROM orders;
```

위 예제에서는 DATA\$1PUMP\$1DIR 디렉터리의 `orders_xt.dmp` 파일이 데이터로 채워집니다.

# 데이터베이스 체크포인트
<a name="Appendix.Oracle.CommonDBATasks.CheckpointingDatabase"></a>

데이터베이스에 체크포인트를 만들려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.checkpoint`를 사용합니다. `checkpoint` 프로시저에는 파라미터가 없습니다.

다음 예에서는 데이터베이스에 체크포인트를 만듭니다.

```
EXEC rdsadmin.rdsadmin_util.checkpoint;
```

# 분산 복구 설정
<a name="Appendix.Oracle.CommonDBATasks.SettingDistributedRecovery"></a>

분산 복구를 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.enable_distr_recovery` 및 `disable_distr_recovery`를 사용합니다. 프로시저에는 파라미터가 없습니다.

다음 예에서는 분산 복구를 활성화합니다.

```
EXEC rdsadmin.rdsadmin_util.enable_distr_recovery;
```

다음 예에서는 분산 복구를 비활성화합니다.

```
EXEC rdsadmin.rdsadmin_util.disable_distr_recovery;
```

# 데이터베이스 시간대 설정
<a name="Appendix.Oracle.CommonDBATasks.TimeZoneSupport"></a>

다음과 같은 방법으로 Amazon RDS Oracle 데이터베이스의 시간대를 설정할 수 있습니다.
+ `Timezone` 옵션

  `Timezone` 옵션은 호스트 수준에서 시간대를 변경하여 `SYSDATE`를 포함한 모든 데이터 열과 값에 영향을 끼칩니다. 자세한 내용은 [Oracle 시간대](Appendix.Oracle.Options.Timezone.md) 섹션을 참조하세요.
+ Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.alter_db_time_zone`

  `alter_db_time_zone` 절차는 특정 데이터 유형의 시간대만 변경하며 `SYSDATE`는 변경하지 않습니다. 시간대 설정에 대한 자세한 제한 사항은 [Oracle 문서](http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1006705)를 참조하세요.

**참고**  
Oracle Scheduler의 기본 시간대를 설정할 수도 있습니다. 자세한 내용은 [Oracle Scheduler 작업의 시간대 설정](Appendix.Oracle.CommonDBATasks.Scheduler.md#Appendix.Oracle.CommonDBATasks.Scheduler.TimeZone) 섹션을 참조하세요.

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_new_tz`  |  varchar2  |  —  |  예  |  지정된 리전이나 협정 세계시(UTC)의 절대 오프셋으로 지정된 새로운 표준 시간대입니다. 사용할 수 있는 오프셋은 -12:00\$1\$114:00입니다.  | 

다음 예제에서는 시간대를 UTC\$13시간으로 변경합니다.

```
EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => '+3:00');
```

다음 예제에서는 시간대를 아프리카/알제 시간대로 변경합니다.

```
EXEC rdsadmin.rdsadmin_util.alter_db_time_zone(p_new_tz => 'Africa/Algiers');
```

`alter_db_time_zone` 프로시저를 사용하여 시간대를 변경한 후에는 DB 인스턴스를 재부팅해야만 변경 사항이 적용됩니다. 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요. 시간대 업그레이드에 대한 자세한 내용은 [시간대 고려 사항](USER_UpgradeDBInstance.Oracle.OGPG.md#USER_UpgradeDBInstance.Oracle.OGPG.DST) 단원을 참조하세요.

# Automatic Workload Repository(AWR)를 사용하여 성능 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.AWR"></a>

Oracle은 성능 데이터 수집과 보고서 생성을 위해 Automatic Workload Repository(AWR)를 사용할 것을 권장합니다. AWR에는 Oracle Database Enterprise Edition과 Diagnostics and Tuning 팩용 라이선스가 필요합니다. AWR을 활성화하려면 `CONTROL_MANAGEMENT_PACK_ACCESS` 초기화 파라미터를 `DIAGNOSTIC` 또는 `DIAGNOSTIC+TUNING`으로 설정합니다.

## RDS에서 AWR 보고서 작업
<a name="Appendix.Oracle.CommonDBATasks.AWRTechniques"></a>

`awrrpt.sql`과 같은 스크립트를 실행하면 AWR 보고서를 생성할 수 있습니다. 이러한 스크립트는 데이터베이스 호스트 서버에 설치됩니다. Amazon RDS에서는 호스트에 직접 액세스할 수 없습니다. 그러나 설치된 다른 Oracle Database에서 SQL 스크립트의 복사본을 가져올 수 있습니다. 

`SYS.DBMS_WORKLOAD_REPOSITORY` PL/SQL 패키지에서 프로시저를 실행하여 AWR을 사용할 수도 있습니다. 이 패키지를 사용하여 기준 요소 및 스냅샷을 관리하고 ASH 및 AWR 보고서를 표시할 수 있습니다. 예를 들어 텍스트 형식으로 AWR 보고서를 생성하려면 `DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT` 프로시저를 실행합니다. 그러나 AWS Management Console에서는 이러한 AWR 보고서에 연결할 수 없습니다.

AWR로 작업할 때 `rdsadmin.rdsadmin_diagnostic_util` 프로시저를 사용하는 것이 좋습니다. 이러한 프로시저를 사용하여 다음을 생성할 수 있습니다.
+ AWR 보고서
+ 활성 세션 기록(ASH) 보고서
+ 자동 데이터베이스 진단 모니터(ADDM) 보고서
+ AWR 데이터의 Oracle Data Pump Export 덤프 파일

`rdsadmin_diagnostic_util` 프로시저는 보고서를 DB 인스턴스 파일 시스템에 저장합니다. 콘솔에서 이러한 보고서에 액세스할 수 있습니다. 또한 `rdsadmin.rds_file_util` 프로시저를 사용하여 보고서에 액세스할 수 있고, S3 통합 옵션을 사용하여 Amazon S3에 복사된 보고서에 액세스할 수 있습니다. 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 및 [Amazon S3 통합](oracle-s3-integration.md) 섹션을 참조하세요.

다음 Amazon RDS for Oracle DB 엔진 버전에서 `rdsadmin_diagnostic_util` 프로시저를 사용할 수 있습니다.
+ 모든 Oracle Database 21c 버전
+ 19.0.0.0.ru-2020-04.rur-2020-04.r1 이상의 Oracle Database 19c 버전

복제 시나리오에서 진단 보고서를 사용하는 방법을 설명하는 블로그를 보려면 [Amazon RDS for Oracle 읽기 전용 복제본에 대한 AWR 보고서 생성](https://aws.amazon.com/blogs/database/generate-awr-reports-for-amazon-rds-for-oracle-read-replicas/)을 참조하세요.

## 진단 유틸리티 패키지의 공통 파라미터
<a name="Appendix.Oracle.CommonDBATasks.CommonAWRParam"></a>

`rdsadmin_diagnostic_util` 패키지로 AWR 및 ADDM을 관리할 때는 일반적으로 다음 파라미터를 사용합니다.

<a name="rds-provisioned-iops-storage-range-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.AWR.html)

rdsadmin\$1diagnostic\$1util 패키지로 ASH를 관리할 때는 일반적으로 다음 파라미터를 사용합니다.

<a name="rds-provisioned-iops-storage-range-reference"></a>[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.AWR.html)

## AWR 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.GenAWRReport"></a>

AWR 보고서를 생성하려면 `rdsadmin.rdsadmin_diagnostic_util.awr_report` 프로시저를 사용합니다.

다음 예에서는 스냅샷 범위 101–106에 대한 AWR 보고서를 생성합니다. 출력 텍스트 파일의 이름은 `awrrpt_101_106.txt`입니다. AWS Management Console에서 이 보고서에 액세스할 수 있습니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(101,106,'TEXT');
```

다음 예에서는 스냅샷 범위 63–65에 대한 HTML 보고서를 생성합니다. 출력 HTML 파일의 이름은 `awrrpt_63_65.html`입니다. 이 프로시저는 기본이 아닌 데이터베이스 디렉터리 `AWR_RPT_DUMP`에 보고서를 작성합니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_report(63,65,'HTML','AWR_RPT_DUMP');
```

## AWR 데이터를 덤프 파일로 추출
<a name="Appendix.Oracle.CommonDBATasks.ExtractAWR"></a>

AWR 데이터를 덤프 파일로 추출하려면 `rdsadmin.rdsadmin_diagnostic_util.awr_extract` 프로시저를 사용합니다. 이 함수는 PDB 수준에서만 사용할 수 있습니다.

다음 예에서는 스냅샷 범위 101–106을 추출합니다. 출력 덤프 파일의 이름은 `awrextract_101_106.dmp`입니다. 콘솔을 통해 이 파일에 액세스할 수 있습니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(101,106);
```

다음 예에서는 스냅샷 범위 63–65를 추출합니다. 출력 덤프 파일의 이름은 `awrextract_63_65.dmp`입니다. 이 파일은 기본이 아닌 데이터베이스 디렉터리 `AWR_RPT_DUMP`에 저장됩니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.awr_extract(63,65,'AWR_RPT_DUMP');
```

## ADDM 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.ADDM"></a>

ADDM 보고서를 생성하려면 `rdsadmin.rdsadmin_diagnostic_util.addm_report` 프로시저를 사용합니다.

다음 예에서는 스냅샷 범위 101–106에 대한 ADDM 보고서를 생성합니다. 출력 텍스트 파일의 이름은 `addmrpt_101_106.txt`입니다. 콘솔을 통해 보고서에 액세스할 수 있습니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(101,106);
```

다음 예에서는 스냅샷 범위 63–65에 대한 ADDM 보고서를 생성합니다. 출력 텍스트 파일의 이름은 `addmrpt_63_65.txt`입니다. 이 파일은 기본이 아닌 데이터베이스 디렉터리 `ADDM_RPT_DUMP`에 저장됩니다.

```
EXEC rdsadmin.rdsadmin_diagnostic_util.addm_report(63,65,'ADDM_RPT_DUMP');
```

## ASH 보고서 생성
<a name="Appendix.Oracle.CommonDBATasks.ASH"></a>

ASH 보고서를 생성하려면 `rdsadmin.rdsadmin_diagnostic_util.ash_report` 프로시저를 사용합니다.

다음 예에서는 14분 전부터 현재 시간까지의 데이터가 포함된 ASH 보고서를 생성합니다. 출력 파일의 이름은 `ashrptbegin_timeend_time.txt` 형식을 사용하며, 여기서 `begin_time` 및 `end_time`은 `YYYYMMDDHH24MISS` 형식을 사용합니다. 콘솔을 통해 파일에 액세스할 수 있습니다.

```
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.ash_report(
        begin_time     =>     SYSDATE-14/1440,
        end_time       =>     SYSDATE,
        report_type    =>     'TEXT');
END;
/
```

다음 예에서는 2019년 11월 18일 오후 6시 7분부터 2019년 11월 18일 오후 6시 15분까지의 데이터가 포함된 ASH 보고서를 생성합니다. 출력 HTML 보고서의 이름은 `ashrpt_20190918180700_20190918181500.html`입니다. 보고서는 기본이 아닌 데이터베이스 디렉터리 `AWR_RPT_DUMP`에 저장됩니다.

```
BEGIN
    rdsadmin.rdsadmin_diagnostic_util.ash_report(
        begin_time     =>    TO_DATE('2019-09-18 18:07:00', 'YYYY-MM-DD HH24:MI:SS'),
        end_time       =>    TO_DATE('2019-09-18 18:15:00', 'YYYY-MM-DD HH24:MI:SS'),
        report_type    =>    'html',
        dump_directory =>    'AWR_RPT_DUMP');
END;
/
```

## 콘솔 또는 CLI에서 AWR 보고서 액세스
<a name="Appendix.Oracle.CommonDBATasks.AWRConsole"></a>

AWS Management Console 또는 AWS CLI를 사용하여 AWR 보고서에 액세스하거나 덤프 파일을 내보낼 수 있습니다. 자세한 내용은 [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md) 섹션을 참조하세요.

# VPC의 DB 인스턴스에 사용하기 위한 데이터베이스 링크 조정
<a name="Appendix.Oracle.CommonDBATasks.DBLinks"></a>

동일한 Virtual Private Cloud(VPC) 또는 피어링된 VPC 내에서 Amazon RDS DB 인스턴스 간에 Oracle 데이터베이스 링크를 사용하려면 두 DB 인스턴스에 서로에게 이르는 유효한 경로가 있어야 합니다. VPC 라우팅 테이블과 네트워크 ACL(액세스 제어 목록)을 사용하여 DB 인스턴스 간 유효 경로를 확인합니다.

각 DB 인스턴스의 보안 그룹은 다른 DB 인스턴스로(부터)의 수신 및 발신을 허용해야 합니다. 인바운드 및 아웃바운드 규칙은 동일한 VPC 또는 피어링된 VPC에서 보안 그룹을 참조할 수 있습니다. 자세한 내용은 [피어링된 VPC 보안 그룹을 참조하도록 보안 그룹 업데이트](https://docs.aws.amazon.com/vpc/latest/peering/working-with-vpc-peering.html#vpc-peering-security-groups) 단원을 참조하세요.

VPC에서 DHCP 옵션 세트를 이용해 사용자 지정 DNS 서버를 구성했다면, 사용자 지정 DNS 서버가 데이터베이스 링크 타깃의 이름을 확인할 수 있어야 합니다. 자세한 내용은 [사용자 지정 DNS 서버 설정](Appendix.Oracle.CommonDBATasks.System.md#Appendix.Oracle.CommonDBATasks.CustomDNS) 섹션을 참조하세요.

Oracle Data Pump로 데이터베이스 링크를 사용하는 방법에 대한 자세한 내용은 [Oracle Data Pump를 사용한 가져오기](Oracle.Procedural.Importing.DataPump.md) 단원을 참조하세요.

# DB 인스턴스의 기본 에디션 설정
<a name="Appendix.Oracle.CommonDBATasks.DefaultEdition"></a>

데이터베이스 객체는 에디션이라고 하는 프라이빗 환경에서 재정의할 수 있습니다. 이러한 에디션 기반 재정의를 통해 서비스 중단을 최소화하면서 애플리케이션의 데이터베이스 객체를 업그레이드할 수 있습니다.

Amazon RDS Oracle DB 인스턴스의 기본 에디션은 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.alter_default_edition`을 사용하여 설정할 수 있습니다.

다음은 Amazon RDS Oracle DB 인스턴스의 기본 에디션을 `RELEASE_V1`으로 설정하는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.alter_default_edition('RELEASE_V1');
```

다음은 Amazon RDS Oracle DB 인스턴스의 기본 에디션을 다시 Oracle 기본값으로 설정하는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.alter_default_edition('ORA$BASE');
```

Oracle 에디션 기반 재정의에 대한 자세한 내용은 Oracle 설명서에서 [About Editions and Edition-Based Redefinition](https://docs.oracle.com/database/121/ADMIN/general.htm#ADMIN13167)을 참조하세요.

# SYS.AUD\$1 테이블에 대한 감사 활성화
<a name="Appendix.Oracle.CommonDBATasks.EnablingAuditing"></a>

데이터베이스 감사 추적 테이블 `SYS.AUD$`에서 감사를 활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table`을 사용합니다. 지원되는 유일한 감사 속성은 `ALL`입니다. 개별 문 또는 연산을 감사하거나 감사하지 않을 수 있습니다.

감사 활성화는 다음 버전을 실행하는 Oracle DB 인스턴스에 대해 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_by_access`  |  부울  |  true  |  아니요  |  `true`로 설정하여 `BY ACCESS`를 감사합니다. `false`로 설정하여 `BY SESSION`를 감사합니다.  | 

다음 쿼리는 데이터베이스의 `SYS.AUD$`에 대한 현재 감사 구성을 반환합니다.

```
SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';
```

다음 명령은 `ALL` `SYS.AUD$`의 `BY ACCESS`에 대한 감사를 활성화합니다.

```
EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table;

EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => true);
```

다음 명령은 `ALL` `SYS.AUD$`의 `BY SESSION`에 대한 감사를 활성화합니다.

```
EXEC rdsadmin.rdsadmin_master_util.audit_all_sys_aud_table(p_by_access => false);
```

자세한 내용은 Oracle 설명서의 [AUDIT(기존 감사)](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/AUDIT-Traditional-Auditing.html#GUID-ADF45B07-547A-4096-8144-50241FA2D8DD)를 참조하세요.

# SYS.AUD\$1 테이블에 대한 감사 비활성화
<a name="Appendix.Oracle.CommonDBATasks.DisablingAuditing"></a>

데이터베이스 감사 추적 테이블 `SYS.AUD$`에서 감사를 비활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table`을 사용합니다. 이 프로시저에는 파라미터가 없습니다.

다음 쿼리는 데이터베이스의 `SYS.AUD$`에 대한 현재 감사 구성을 반환합니다.

```
SELECT * FROM DBA_OBJ_AUDIT_OPTS WHERE OWNER='SYS' AND OBJECT_NAME='AUD$';
```

다음 명령은 `ALL`에 대한 `SYS.AUD$`의 감사를 비활성화합니다.

```
EXEC rdsadmin.rdsadmin_master_util.noaudit_all_sys_aud_table;
```

자세한 내용은 Oracle 설명서의 [NOAUDIT(기존 감사)](https://docs.oracle.com/en/database/oracle/oracle-database/12.2/sqlrf/NOAUDIT-Traditional-Auditing.html#GUID-9D8EAF18-4AB3-4C04-8BF7-37BD0E15434D)를 참조하세요.

# 중단된 온라인 인덱스 빌드 정리
<a name="Appendix.Oracle.CommonDBATasks.CleanupIndex"></a>

실패한 온라인 인덱스 빌드를 정리하려면 Amazon RDS 절차 `rdsadmin.rdsadmin_dbms_repair.online_index_clean`을 사용하세요.

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `object_id`  |  binary\$1integer  |  `ALL_INDEX_ID`  |  아니요  |  인덱스의 객체 ID입니다. 일반적으로 ORA-08104 오류 텍스트의 객체 ID를 사용할 수 있습니다.  | 
|  `wait_for_lock`  |  binary\$1integer  |  `rdsadmin.rdsadmin_dbms_repair.lock_wait`  |  아니요  |  기본값인 `rdsadmin.rdsadmin_dbms_repair.lock_wait`를 지정하여 기본 객체에 대한 잠금을 가져오세요. 잠금이 실패하면 내부 한도에 이를 때까지 재시도하세요. `rdsadmin.rdsadmin_dbms_repair.lock_nowait`를 지정하여 기본 객체에 대한 잠금을 가져오되 잠금이 실패하면 재시도하지 마십시오.  | 

다음 예에서는 실패한 온라인 인젝스 빌드를 정리합니다.

```
declare
  is_clean boolean;
begin
  is_clean := rdsadmin.rdsadmin_dbms_repair.online_index_clean(
    object_id     => 1234567890, 
    wait_for_lock => rdsadmin.rdsadmin_dbms_repair.lock_nowait
  );
end;
/
```

자세한 내용은 Oracle 문서의 [ONLINE\$1INDEX\$1CLEAN Function](https://docs.oracle.com/database/121/ARPLS/d_repair.htm#ARPLS67555)을 참조하세요.

# 손상된 블록 건너뛰기
<a name="Appendix.Oracle.CommonDBATasks.SkippingCorruptBlocks"></a>

인덱스 및 테이블 스캔 중에 손상된 블록을 건너뛰려면 `rdsadmin.rdsadmin_dbms_repair` 패키지를 사용하세요.

다음 절차에서는 `sys.dbms_repair.admin_table` 절차의 기능을 래핑하고 파라미터를 받아들이지 않습니다.
+ `rdsadmin.rdsadmin_dbms_repair.create_repair_table`
+ `rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table`
+ `rdsadmin.rdsadmin_dbms_repair.drop_repair_table`
+ `rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table`
+ `rdsadmin.rdsadmin_dbms_repair.purge_repair_table`
+ `rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table`

다음 절차에서는 Oracle 데이터베이스에 대해 `DBMS_REPAIR` 패키지에서 이에 상응하는 것으로 동일한 파라미터를 받아들입니다.
+ `rdsadmin.rdsadmin_dbms_repair.check_object`
+ `rdsadmin.rdsadmin_dbms_repair.dump_orphan_keys`
+ `rdsadmin.rdsadmin_dbms_repair.fix_corrupt_blocks`
+ `rdsadmin.rdsadmin_dbms_repair.rebuild_freelists`
+ `rdsadmin.rdsadmin_dbms_repair.segment_fix_status`
+ `rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks`

데이터베이스 손상 처리에 대한 자세한 내용은 Oracle 설명서의 [DBMS\$1REPAIR](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_REPAIR.html#GUID-B8EC4AB3-4D6A-46C9-857F-4ED53CD9C948)를 참조하세요.

**Example 손상된 블록에 응답**  
이 예제에서는 손상된 블록에 응답하기 위한 기본 워크플로우를 보여줍니다. 단계는 블록 손상의 위치와 특성에 따라 달라집니다.  
손상된 블록을 복구하기 전에 [DBMS\$1REPAIRE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_REPAIR.html#GUID-B8EC4AB3-4D6A-46C9-857F-4ED53CD9C948) 설명서를 주의 깊게 검토하세요.

**인덱스 및 테이블 스캔 중에 손상된 블록을 건너뛰려면**

1. 다음 프로시저를 실행하여 복구 테이블을 생성합니다(아직 없는 경우).

   ```
   EXEC rdsadmin.rdsadmin_dbms_repair.create_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.create_orphan_keys_table;
   ```

1. 다음 절차를 실행하여 기존 레코드를 확인하고 필요에 따라 제거하세요.

   ```
   SELECT COUNT(*) FROM SYS.REPAIR_TABLE;
   SELECT COUNT(*) FROM SYS.ORPHAN_KEY_TABLE;
   SELECT COUNT(*) FROM SYS.DBA_REPAIR_TABLE;
   SELECT COUNT(*) FROM SYS.DBA_ORPHAN_KEY_TABLE;
   
   EXEC rdsadmin.rdsadmin_dbms_repair.purge_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.purge_orphan_keys_table;
   ```

1. 다음 절차를 실행하여 손상된 블록을 확인하세요.

   ```
   SET SERVEROUTPUT ON
   DECLARE v_num_corrupt INT;
   BEGIN
     v_num_corrupt := 0;
     rdsadmin.rdsadmin_dbms_repair.check_object (
       schema_name => '&corruptionOwner',
       object_name => '&corruptionTable',
       corrupt_count =>  v_num_corrupt
     );
     dbms_output.put_line('number corrupt: '||to_char(v_num_corrupt));
   END;
   /
   
   COL CORRUPT_DESCRIPTION FORMAT a30
   COL REPAIR_DESCRIPTION FORMAT a30
   
   SELECT OBJECT_NAME, BLOCK_ID, CORRUPT_TYPE, MARKED_CORRUPT, 
          CORRUPT_DESCRIPTION, REPAIR_DESCRIPTION 
   FROM   SYS.REPAIR_TABLE;
   
   SELECT SKIP_CORRUPT 
   FROM   DBA_TABLES 
   WHERE  OWNER = '&corruptionOwner'
   AND    TABLE_NAME = '&corruptionTable';
   ```

1. `skip_corrupt_blocks` 프로시저를 사용하여 영향을 받은 테이블에 대해 손상 건너뛰기를 활성화 또는 비활성화하세요. 상황에 따라 새 테이블에 데이터를 추출한 다음 손상된 블록이 포함된 테이블을 삭제해야 할 수도 있습니다.

   다음 절차를 실행하여 영향을 받은 테이블에 대해 손상 건너뛰기를 활성화하세요.

   ```
   begin
     rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks (
       schema_name => '&corruptionOwner',
       object_name => '&corruptionTable',
       object_type => rdsadmin.rdsadmin_dbms_repair.table_object,
       flags => rdsadmin.rdsadmin_dbms_repair.skip_flag);
   end;
   /
   select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
   ```

   다음 절차를 실행하여 손상 건너뛰기를 비활성화하세요.

   ```
   begin
     rdsadmin.rdsadmin_dbms_repair.skip_corrupt_blocks (
       schema_name => '&corruptionOwner',
       object_name => '&corruptionTable',
       object_type => rdsadmin.rdsadmin_dbms_repair.table_object,
       flags => rdsadmin.rdsadmin_dbms_repair.noskip_flag);
   end;
   /
   
   select skip_corrupt from dba_tables where owner = '&corruptionOwner' and table_name = '&corruptionTable';
   ```

1. 모든 복구 작업을 완료했으면 다음 프로시저를 실행하여 복구 테이블을 삭제합니다.

   ```
   EXEC rdsadmin.rdsadmin_dbms_repair.drop_repair_table;
   EXEC rdsadmin.rdsadmin_dbms_repair.drop_orphan_keys_table;
   ```

## 휴지통 비우기
<a name="Appendix.Oracle.CommonDBATasks.PurgeRecycleBin"></a>

테이블을 삭제해도 Oracle 데이터베이스가 해당 스토리지 공간을 즉시 확보하지 않습니다. 데이터베이스는 삭제된 테이블의 이름을 바꾸고 테이블 및 연결된 객체를 휴지통에 넣습니다. 휴지통을 비우면 이러한 항목이 제거되고 스토리지 공간이 확보됩니다.

전체 휴지통을 비우려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.purge_dba_recyclebin`을 사용합니다. 그러나 이 프로시저는 `SYS` 및 `RDSADMIN` 객체의 휴지통은 비울 수 없습니다. 이러한 객체를 삭제해야 하는 경우 AWS Support에 문의하세요. 

다음 예에서는 전체 휴지통을 비웁니다.

```
EXEC rdsadmin.rdsadmin_util.purge_dba_recyclebin;
```

# 전체 수정을 위한 기본 표시 값 설정
<a name="Appendix.Oracle.CommonDBATasks.FullRedaction"></a>

Amazon RDS Oracle 인스턴스에서 전체 수정을 위한 기본 표시 값을 변경하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val`을 사용합니다. 참고로 수정 정책은 Oracle 데이터베이스 설명서에 설명된 것처럼 `DBMS_REDACT` PL/SQL 패키지를 사용하여 생성합니다. `dbms_redact_upd_full_rdct_val` 프로시저는 기존 정책의 영향을 받는 여러 데이터 유형에 대해 표시할 문자를 지정합니다.

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_number_val`  |  number  |  Null  |  아니요  |  `NUMBER` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_binfloat_val`  |  binary\$1float  |  Null  |  아니요  |  `BINARY_FLOAT` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_bindouble_val`  |  binary\$1double  |  Null  |  아니요  |  `BINARY_DOUBLE` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_char_val`  |  char  |  Null  |  아니요  |  `CHAR` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_varchar_val`  |   varchar2  |  Null  |  아니요  |  `VARCHAR2` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_nchar_val`  |  nchar  |  Null  |  아니요  |  `NCHAR` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_nvarchar_val`  |  nvarchar2  |  Null  |  아니요  |  `NVARCHAR2` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_date_val`  |  날짜  |  Null  |  아니요  |  `DATE` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_ts_val`  |  timestamp  |  Null  |  아니요  |  `TIMESTAMP` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_tswtz_val`  |  시간대가 있는 타임스탬프  |  Null  |  아니요  |  `TIMESTAMP WITH TIME ZONE` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_blob_val`  |  blob  |  Null  |  아니요  |  `BLOB` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_clob_val`  |  clob  |  Null  |  아니요  |  `CLOB` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 
|  `p_nclob_val`  |  nclob  |  Null  |  아니요  |  `NCLOB` 데이터 유형의 열에 대한 기본값을 수정합니다.  | 

다음 예에서는 `CHAR` 데이터 유형에 대한 기본 수정 값을 \$1로 변경합니다.

```
EXEC rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val(p_char_val => '*');
```

다음 예에서는 `NUMBER`, `DATE`, `CHAR` 데이터 유형에 대한 기본 수정 값을 변경합니다.

```
BEGIN
rdsadmin.rdsadmin_util.dbms_redact_upd_full_rdct_val(
    p_number_val=>1,
    p_date_val=>to_date('1900-01-01','YYYY-MM-DD'),
    p_varchar_val=>'X');
END;
/
```

`dbms_redact_upd_full_rdct_val` 프로시저를 사용하여 전체 수정의 기본값을 변경한 후 DB 인스턴스를 재부팅하여 변경 사항을 적용합니다. 자세한 내용은 [ DB 인스턴스 재부팅](USER_RebootInstance.md) 섹션을 참조하세요.

# Oracle DB 인스턴스에 대한 공통 로그 관련 작업 수행
<a name="Appendix.Oracle.CommonDBATasks.Log"></a>

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

자세한 내용은 [Amazon RDS for Oracle 데이터베이스 로그 파일](USER_LogAccess.Concepts.Oracle.md) 섹션을 참조하세요.

**Topics**
+ [

## 강제 로깅 설정
](#Appendix.Oracle.CommonDBATasks.SettingForceLogging)
+ [

## 보충 로깅 설정
](#Appendix.Oracle.CommonDBATasks.AddingSupplementalLogging)
+ [

## 온라인 로그 파일 전환
](#Appendix.Oracle.CommonDBATasks.SwitchingLogfiles)
+ [

## 온라인 다시 실행 로그 추가
](#Appendix.Oracle.CommonDBATasks.RedoLogs)
+ [

## 온라인 다시 실행 로그 드롭
](#Appendix.Oracle.CommonDBATasks.DroppingRedoLogs)
+ [

# 온라인 다시 실행 로그 크기 조절
](Appendix.Oracle.CommonDBATasks.ResizingRedoLogs.md)
+ [

# 보관된 다시 실행 로그 보존
](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md)
+ [

# 온라인 및 아카이빙된 다시 실행 로그 액세스
](Appendix.Oracle.CommonDBATasks.Log.Download.md)
+ [

# Amazon S3에서 아카이빙된 다시 실행 로그 다운로드
](Appendix.Oracle.CommonDBATasks.download-redo-logs.md)

## 강제 로깅 설정
<a name="Appendix.Oracle.CommonDBATasks.SettingForceLogging"></a>

강제 로깅 모드에서는 Oracle이 임시 테이블스페이스와 임시 세그먼트의 변경 사항을 제외하고 데이터베이스의 모든 변경 사항을 기록합니다(`NOLOGGING` 절은 무시됩니다). 자세한 내용은 Oracle 문서의 [Specifying FORCE LOGGING Mode](https://docs.oracle.com/cd/E11882_01/server.112/e25494/create.htm#ADMIN11096) 단원을 참조하세요.

강제 로깅을 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.force_logging`을 사용합니다. `force_logging` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 예 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_enable`  |  부울  |  true  |  아니요  |  `true`로 설정하면 데이터베이스를 강제 로깅 모드로 설정하고, `false`로 설정하면 데이터베이스를 강제 로깅 모드에서 해제합니다.  | 

다음은 데이터베이스를 강제 로깅 모드로 설정하는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.force_logging(p_enable => true);
```

## 보충 로깅 설정
<a name="Appendix.Oracle.CommonDBATasks.AddingSupplementalLogging"></a>

보충 로깅을 활성화하면 LogMiner가 연결된 행과 클러스터링된 테이블을 지원하는 데 필요한 정보를 갖게 됩니다. 자세한 내용은 Oracle 문서의 [Supplemental Logging](https://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL1582)을 참조하세요.

Oracle 데이터베이스는 기본적으로 보충 로깅이 활성화되어 있지 않습니다. 보충 로깅을 활성화 또는 비활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.alter_supplemental_logging`을 사용합니다. Amazon RDS가 Oracle DB 인스턴스를 위해 보관된 다시 실행 로그 보존을 관리하는 방법에 대한 자세한 내용은 [보관된 다시 실행 로그 보존](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md) 단원을 참조하세요.

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_action`  |  varchar2  |  —  |  예  |  `'ADD'`는 보충 로깅을 추가하며, `'DROP'`은 보충 로깅을 드롭합니다.  | 
|  `p_type`  |  varchar2  |  null  |  아니요  |  보충 로깅 유형입니다. 유효한 값은 `'ALL'`, `'FOREIGN KEY'`, `'PRIMARY KEY'`, `'UNIQUE'` 또는 `PROCEDURAL`입니다.  | 

다음 예에서는 보충 로깅을 활성화합니다.

```
begin
    rdsadmin.rdsadmin_util.alter_supplemental_logging(
        p_action => 'ADD');
end;
/
```

다음 예에서는 고정 길이 최대 크기 열 전체에 대해 보충 로깅을 활성화합니다.

```
begin
    rdsadmin.rdsadmin_util.alter_supplemental_logging(
        p_action => 'ADD',
        p_type   => 'ALL');
end;
/
```

다음 예에서는 기본 키 열에 대한 보충 로깅을 활성화합니다.

```
begin
    rdsadmin.rdsadmin_util.alter_supplemental_logging(
        p_action => 'ADD',
        p_type   => 'PRIMARY KEY');
end;
/
```

## 온라인 로그 파일 전환
<a name="Appendix.Oracle.CommonDBATasks.SwitchingLogfiles"></a>

로그 파일을 전환하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.switch_logfile`을 사용합니다. `switch_logfile` 프로시저에는 파라미터가 없습니다.

다음은 로그 파일을 바꾸는 예제입니다.

```
EXEC rdsadmin.rdsadmin_util.switch_logfile;
```

## 온라인 다시 실행 로그 추가
<a name="Appendix.Oracle.CommonDBATasks.RedoLogs"></a>

Oracle을 실행하는 Amazon RDS DB 인스턴스는 각각 128MB인 온라인 다시 실행 로그 4개로 시작합니다. 다른 다시 실행 로그를 추가하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.add_logfile`을 사용합니다.

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

**참고**  
파라미터는 함께 사용할 수 없습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `bytes`  |  positive  |  null  |  아니요  |  로그 파일 크기(바이트)입니다. 로그 크기가 2147483648바이트(2GiB) 미만인 경우에만 이 파라미터를 사용합니다. 그렇지 않으면 RDS에서 오류가 발생합니다. 이 바이트 값을 초과하는 로그 크기의 경우 `p_size` 파라미터를 대신 사용합니다.  | 
|  `p_size`  |  varchar2  |  —  |  예  |  로그 파일의 크기는 킬로바이트(K), 메가바이트(M) 또는 기가바이트(G)입니다.  | 

다음 명령을 실행하면 100MB 로그 파일이 추가됩니다.

```
EXEC rdsadmin.rdsadmin_util.add_logfile(p_size => '100M');
```

## 온라인 다시 실행 로그 드롭
<a name="Appendix.Oracle.CommonDBATasks.DroppingRedoLogs"></a>

다시 실행 로그를 삭제하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.drop_logfile`을 사용합니다. `drop_logfile` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `grp`  |  positive  |  —  |  예  |  로그의 그룹 번호입니다.  | 

다음 예에서는 그룹 번호가 3인 로그를 드롭합니다.

```
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3);
```

상태가 미사용이거나 비활성인 로그만 드롭할 수 있습니다. 다음 예에서는 로그의 상태를 가져옵니다.

```
SELECT GROUP#, STATUS FROM V$LOG;

GROUP#     STATUS
---------- ----------------
1          CURRENT
2          INACTIVE
3          INACTIVE
4          UNUSED
```

# 온라인 다시 실행 로그 크기 조절
<a name="Appendix.Oracle.CommonDBATasks.ResizingRedoLogs"></a>

Oracle을 실행하는 Amazon RDS DB 인스턴스는 각각 128MB인 온라인 다시 실행 로그 4개로 시작합니다. 다음은 Amazon RDS 프로시저를 사용하여 로그를 각각 128MB에서 512MB로 조정하는 예제입니다.

```
/* Query V$LOG to see the logs.          */
/* You start with 4 logs of 128 MB each. */

SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
1          134217728  INACTIVE
2          134217728  CURRENT
3          134217728  INACTIVE
4          134217728  INACTIVE


/* Add four new logs that are each 512 MB */

EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);
EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);
EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);
EXEC rdsadmin.rdsadmin_util.add_logfile(bytes => 536870912);


/* Query V$LOG to see the logs. */ 
/* Now there are 8 logs.        */

SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
1          134217728  INACTIVE
2          134217728  CURRENT
3          134217728  INACTIVE
4          134217728  INACTIVE
5          536870912  UNUSED
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


/* Drop each inactive log using the group number. */

EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 1);
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 3);
EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 4);


/* Query V$LOG to see the logs. */ 
/* Now there are 5 logs.        */

select GROUP#, BYTES, STATUS from V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
2          134217728  CURRENT
5          536870912  UNUSED
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


/* Switch logs so that group 2 is no longer current. */

EXEC rdsadmin.rdsadmin_util.switch_logfile;


/* Query V$LOG to see the logs.        */ 
/* Now one of the new logs is current. */

SQL>SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
2          134217728  ACTIVE
5          536870912  CURRENT
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


/* If the status of log 2 is still "ACTIVE", issue a checkpoint to clear it to "INACTIVE".  */

EXEC rdsadmin.rdsadmin_util.checkpoint;


/* Query V$LOG to see the logs.            */ 
/* Now the final original log is inactive. */

select GROUP#, BYTES, STATUS from V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
2          134217728  INACTIVE
5          536870912  CURRENT
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED


# Drop the final inactive log.

EXEC rdsadmin.rdsadmin_util.drop_logfile(grp => 2);


/* Query V$LOG to see the logs.    */ 
/* Now there are four 512 MB logs. */

SELECT GROUP#, BYTES, STATUS FROM V$LOG;

GROUP#     BYTES      STATUS
---------- ---------- ----------------
5          536870912  CURRENT
6          536870912  UNUSED
7          536870912  UNUSED
8          536870912  UNUSED
```

# 보관된 다시 실행 로그 보존
<a name="Appendix.Oracle.CommonDBATasks.RetainRedoLogs"></a>

보관된 다시 실행 로그는 Oracle LogMiner(`DBMS_LOGMNR`) 같은 제품에서 사용할 수 있도록 DB 인스턴스에 로컬 보존할 수 있습니다. 다시 실행 로그를 보존하면 LogMiner를 사용하여 로그를 분석할 수 있습니다. 자세한 내용은 Oracle 문서의 [Using LogMiner to Analyze Redo Log Files](http://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm) 단원을 참조하세요.

보관된 다시 실행 로그를 보존하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.set_configuration`을 사용합니다. Oracle Data Guard의 기본 인스턴스에서 이 프로시저를 사용하는 경우 RDS는 기본 인스턴스와 열린 읽기 전용 복제본에서 아카이브 로그 유지 설정을 변경하지만 탑재된 복제본에서는 변경하지 않습니다. RDS는 탑재된 복제본에 대한 최신 아카이브 다시 실행 로그를 짧은 기간 동안 유지합니다. RDS는 탑재된 복제본에 다운로드된 이전 로그를 자동으로 삭제합니다.

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


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `name`  |  varchar  |  —  |  예  |  업데이트할 구성의 이름입니다. 아카이브된 다시 실행 로그 유지 시간을 변경하려면 이름을 `archivelog retention hours`로 설정합니다.  | 
|  `value`  |  varchar  |  —  |  예  |  구성 값입니다. 로그를 유지할 시간 값을 설정합니다.  | 

다음 예에서는 24시간 동안 다시 실행 로그를 보존합니다.

```
begin
    rdsadmin.rdsadmin_util.set_configuration(
        name  => 'archivelog retention hours',
        value => '24');
end;
/
commit;
```

**참고**  
변경 사항을 적용하려면 커밋해야 합니다.

DB 인스턴스 다시 실행 로그의 보관 기간을 보려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.show_configuration`을 사용합니다.

다음 예에서는 로그 보관 시간을 보여줍니다.

```
set serveroutput on
EXEC rdsadmin.rdsadmin_util.show_configuration;
```

`archivelog retention hours`의 현재 설정이 출력됩니다. 다음 출력은 보관된 다시 실행 로그가 48시간 동안 보존됨을 보여줍니다.

```
NAME:archivelog retention hours
VALUE:48
DESCRIPTION:ArchiveLog expiration specifies the duration in hours before archive/redo log files are automatically deleted.
```

보관된 다시 실행 로그는 DB 인스턴스에 보존되므로 보존된 로그를 수용하기에 충분한 스토리지가 DB 인스턴스에 할당되어 있는지 확인해야 합니다. 지난 X 시간 동안 DB 인스턴스가 사용한 공간을 측정하려면 X 자리에 사용 시간을 대입하여 다음 쿼리를 실행합니다.

```
SELECT SUM(BLOCKS * BLOCK_SIZE) bytes 
  FROM V$ARCHIVED_LOG
 WHERE FIRST_TIME >= SYSDATE-(X/24) AND DEST_ID=1;
```

RDS for Oracle은 DB 인스턴스의 백업 보존 기간이 0보다 큰 경우에만 아카이빙된 다시 실행 로그를 생성합니다. 기본적으로 백업 보존 기간은 0보다 큽니다.

아카이빙된 로그 보존 기간이 만료되면 RDS for Oracle은 DB 인스턴스에서 아카이빙된 다시 실행 로그를 제거합니다. DB 인스턴스를 특정 시점으로 복원하려면 Amazon RDS는 백업 보존 기간에 따라 아카이빙된 다시 실행 로그를 DB 인스턴스 외부에 보관합니다. 백업 보존 기간을 수정하려면 [Amazon RDS DB 인스턴스 수정](Overview.DBInstance.Modifying.md) 섹션을 참조하세요.

**참고**  
경우에 따라 Linux에서 JDBC를 사용하여 아카이브된 다시 실행 로그를 다운로드하고 지연 시간이 길어지고 연결이 재설정될 수 있습니다. 그러한 경우 Java 클라이언트의 기본 난수 생성기 설정이 문제의 원인일 수 있습니다. 비차단형 난수 생성기를 사용하도록 JDBC 드라이버를 설정하는 것이 좋습니다.

# 온라인 및 아카이빙된 다시 실행 로그 액세스
<a name="Appendix.Oracle.CommonDBATasks.Log.Download"></a>

GoldenGate, Attunity, Informatica 등과 같은 외부 도구로 마이닝하려면 온라인 및 아카이브된 다시 실행 로그 파일에 액세스해야 합니다. 이러한 파일에 액세스하려면 다음을 수행합니다.

1. 물리적 파일 경로에 읽기 전용으로 액세스할 수 있는 디렉터리 객체를 만듭니다.

   `rdsadmin.rdsadmin_master_util.create_archivelog_dir` 및 `rdsadmin.rdsadmin_master_util.create_onlinelog_dir` 사용

1. PL/SQL을 사용하여 파일을 읽습니다.

   PL/SQL을 사용하여 파일을 읽을 수 있습니다. 디렉터리 객체의 파일을 읽는 방법에 대한 자세한 내용은 [DB 인스턴스 디렉터리의 파일 목록 표시](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ListDirectories) 및 [DB 인스턴스 디렉터리의 파일 목록 읽기](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.ReadingFiles) 단원을 참조하세요.

다음 릴리스에서 트랜잭션 로그 액세스를 지원합니다.
+ Oracle Database 21c
+ Oracle Database 19c

다음은 온라인 및 아카이브된 다시 실행 로그 파일에 읽기 전용으로 액세스할 수 있는 디렉터리를 생성하는 코드입니다.

**중요**  
이 코드는 `DROP ANY DIRECTORY` 권한도 취소합니다.

```
EXEC rdsadmin.rdsadmin_master_util.create_archivelog_dir;
EXEC rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
```

다음은 온라인 및 보관된 재실행 로그 파일용 디렉터리를 삭제하는 코드입니다.

```
EXEC rdsadmin.rdsadmin_master_util.drop_archivelog_dir;
EXEC rdsadmin.rdsadmin_master_util.drop_onlinelog_dir;
```

다음은 `DROP ANY DIRECTORY` 권한을 부여하고 취소하는 코드입니다.

```
EXEC rdsadmin.rdsadmin_master_util.revoke_drop_any_directory;
EXEC rdsadmin.rdsadmin_master_util.grant_drop_any_directory;
```

# Amazon S3에서 아카이빙된 다시 실행 로그 다운로드
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs"></a>

`rdsadmin.rdsadmin_archive_log_download` 패키지를 사용하여 DB 인스턴스에서 아카이빙된 다시 실행 로그를 다운로드할 수 있습니다. 아카이빙된 다시 실행 로그가 더 이상 DB 인스턴스에 없는 경우 Amazon S3에서 다시 다운로드할 수 있습니다. 그런 다음 로그를 마이닝하거나 로그를 사용하여 데이터베이스를 복구하거나 복제할 수 있습니다.

**참고**  
읽기 전용 복제본 인스턴스에서는 아카이브된 다시 실행 로그를 다운로드할 수 없습니다.

## 아카이빙된 다시 실행 로그 다운로드: 기본 단계
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs.basic-process"></a>

아카이빙된 다시 실행 로그의 가용성은 다음 보존 정책에 따라 다릅니다.
+ 백업 보존 정책 - 이 정책 내의 로그는 Amazon S3에서 사용할 수 있습니다. 이 정책 외부의 로그는 제거됩니다.
+ 아카이빙된 로그 보존 정책 - 이 정책 내의 로그를 DB 인스턴스에서 사용할 수 있습니다. 이 정책 외부의 로그는 제거됩니다.

로그가 인스턴스에 없지만 백업 보존 기간으로 보호되는 경우 `rdsadmin.rdsadmin_archive_log_download`을 사용하여 다시 다운로드합니다. RDS for Oracle은 DB 인스턴스의 `/rdsdbdata/log/arch` 디렉터리에 로그를 저장합니다.

**Amazon S3에서 아카이빙된 다시 실행 로그를 다운로드하려면**

1. 다운로드한 아카이브된 재실행 로그가 필요한 기간 동안 보존되도록 보존 기간을 구성합니다. `COMMIT`에 대한 변경을 확인하세요.

   RDS는 로그 다운로드 시점부터 보관된 로그 보존 정책에 따라 다운로드한 로그를 보존합니다. 보존 정책을 설정하는 방법에 대한 자세한 내용은 [보관된 다시 실행 로그 보존](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md) 섹션을 참조하세요.

1. 아키이빙된 로그 보존 정책 변경이 적용되려면 최대 5분을 기다립니다.

1. `rdsadmin.rdsadmin_archive_log_download`을 사용하여 Amazon S3 에서 아카이빙된 다시 실행 로그를 다운로드합니다.

   자세한 내용은 [아카이빙된 다시 실행 로그 다운로드](#Appendix.Oracle.CommonDBATasks.download-redo-logs.single-log) 및 [아카이빙된 다시 실행 로그 시리즈 다운로드](#Appendix.Oracle.CommonDBATasks.download-redo-logs.series) 단원을 참조하세요.
**참고**  
RDS는 다운로드하기 전에 사용 가능한 스토리지를 자동으로 확인합니다. 요청된 로그가 많은 공간을 사용하는 경우 경고가 표시됩니다.

1. 로그가 Amazon S3 에서 성공적으로 다운로드되었는지 확인합니다.

   다운로드 태스크의 상태를 bdump 파일에서 볼 수 있습니다. bdump 파일에는 `/rdsdbdata/log/trace/dbtask-task-id.log` 경로 이름이 있습니다. 이전 다운로드 단계에서 `VARCHAR2` 데이터 유형의 태스크 ID를 반환하는 `SELECT` 문을 실행합니다. 자세한 내용은 [파일 전송 상태 모니터링](oracle-s3-integration.using.md#oracle-s3-integration.using.task-status)에서 유사한 예를 참조하세요.

## 아카이빙된 다시 실행 로그 다운로드
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs.single-log"></a>

하나의 아카이빙된 다시 실행 로그를 `/rdsdbdata/log/arch` 디렉터리에 다운로드하려면 `rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum`을 사용하세요. 이 프로시저에는 다음 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `seqnum`  |  숫자  |  —  |  예  |  아카이빙된 다시 실행 로그의 시퀀스 번호입니다.  | 

다음 예에서는 시퀀스 번호가 20인 로그를 다운로드합니다.

```
SELECT rdsadmin.rdsadmin_archive_log_download.download_log_with_seqnum(seqnum => 20) 
       AS TASK_ID 
FROM   DUAL;
```

## 아카이빙된 다시 실행 로그 시리즈 다운로드
<a name="Appendix.Oracle.CommonDBATasks.download-redo-logs.series"></a>

아카이빙된 다시 실행 로그 시리즈를 `/rdsdbdata/log/arch` 디렉터리에 다운로드하려면 `download_logs_in_seqnum_range`을 사용하세요. 다운로드는 요청당 300개의 로그로 제한됩니다. `download_logs_in_seqnum_range` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `start_seq`  |  숫자  |  —  |  예  |  시리즈의 시작 시퀀스 번호입니다.  | 
|  `end_seq`  |  숫자  |  —  |  예  |  시리즈의 종료 시퀀스 번호입니다.  | 

다음 예제에서는 시퀀스 50에서 100의 로그를 다운로드합니다.

```
SELECT rdsadmin.rdsadmin_archive_log_download.download_logs_in_seqnum_range(start_seq => 50, end_seq => 100) 
       AS TASK_ID 
FROM   DUAL;
```

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

아래 단원에서는 Oracle을 실행하는 Amazon RDS DB 인스턴스에서 Oracle RMAN(Recovery Manager) DBA 작업을 수행하는 방식을 확인하실 수 있습니다. 관리형 서비스 환경을 제공하기 위해 Amazon RDS는 DB 인스턴스에 대해 shell 액세스를 제공하지 않습니다. 또한 고급 권한이 필요한 특정 시스템 절차와 테이블에 대한 액세스를 제한합니다.

Amazon RDS 패키지인 `rdsadmin.rdsadmin_rman_util`을 사용하여 Amazon RDS for Oracle 데이터베이스의 RMAN 백업을 디스크에 수행할 수 있습니다. `rdsadmin.rdsadmin_rman_util` 패키지에서는 전체 및 증분 데이터베이스 파일 백업, 테이블스페이스 백업 및 아카이브된 재실행 로그 백업을 지원합니다.

RMAN 백업이 종료된 후에는 Amazon RDS for Oracle DB 인스턴스 호스트에 대해 백업 파일을 복사할 수 있습니다. 이 작업은 RDS가 아닌 호스트 또는 백업 장기 보관에 대해 복원 목적으로 수행할 수 있습니다. 예를 들어 백업 파일을 Amazon S3 버킷에 복사할 수 있습니다. 자세한 내용은 [Amazon S3 통합](oracle-s3-integration.md) 사용 단원을 참조하세요.

RMAN 백업을 위한 백업 파일은 수동으로 제거하기 전에는 Amazon RDS DB 인스턴스에 남아 있습니다. `UTL_FILE.FREMOVE` Oracle 프로시저를 사용하여 디렉터리에서 파일을 제거할 수 있습니다. 자세한 내용은 Oracle Database 설명서의 [FREMOVE 프로시저](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924)를 참조하세요.

RMAN을 사용하여 RDS for Oracle DB 인스턴스를 복원할 수는 없습니다. 하지만 RMAN을 사용하여 온프레미스 또는 Amazon EC2 인스턴스에 백업을 복원할 수 있습니다. 자세한 내용은 [Amazon RDS for Oracle 인스턴스를 자체 관리형 인스턴스로 복원](https://aws.amazon.com/blogs/database/restore-an-amazon-rds-for-oracle-instance-to-a-self-managed-instance/) 블로글 문서를 참조하세요.

**참고**  
또 하나의 Amazon RDS for Oracle DB 인스턴스에 대한 백업 및 복원을 위해서는 Amazon RDS 백업 및 복원 기능을 계속 사용할 수 있습니다. 자세한 내용은 [데이터 백업, 복원 및 내보내기](CHAP_CommonTasks.BackupRestore.md) 섹션을 참조하세요.

**Topics**
+ [

# RMAN 백업을 위한 사전 요구 사항
](Appendix.Oracle.CommonDBATasks.RMAN-requirements.md)
+ [

# RMAN 프로시저용 공통 파라미터
](Appendix.Oracle.CommonDBATasks.CommonParameters.md)
+ [

# RDS for Oracle DB에서 데이터베이스 파일 검증
](Appendix.Oracle.CommonDBATasks.ValidateDBFiles.md)
+ [

# 블록 변경 추적 활성화 및 비활성화
](Appendix.Oracle.CommonDBATasks.BlockChangeTracking.md)
+ [

# 보관된 재실행 로그 대조 확인
](Appendix.Oracle.CommonDBATasks.Crosscheck.md)
+ [

# 보관된 재실행 로그 파일 백업
](Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.md)
+ [

# 전체 데이터베이스 백업 수행
](Appendix.Oracle.CommonDBATasks.BackupDatabaseFull.md)
+ [

# 테넌트 데이터베이스의 전체 백업 수행
](Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseFull.md)
+ [

# 증분 데이터베이스 백업 수행
](Appendix.Oracle.CommonDBATasks.BackupDatabaseIncremental.md)
+ [

# 테넌트 데이터베이스의 증분 백업 수행
](Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseIncremental.md)
+ [

# 테이블스페이스 백업
](Appendix.Oracle.CommonDBATasks.BackupTablespace.md)
+ [

# Backing up a control file
](Appendix.Oracle.CommonDBATasks.backup-control-file.md)
+ [

# 블록 미디어 복구 수행
](Appendix.Oracle.CommonDBATasks.block-media-recovery.md)

# RMAN 백업을 위한 사전 요구 사항
<a name="Appendix.Oracle.CommonDBATasks.RMAN-requirements"></a>

`rdsadmin.rdsadmin_rman_util` 패키지를 사용하여 데이터베이스를 백업하기 전에 다음 사전 요구 사항을 충족하는지 확인하세요.
+ RDS for Oracle 데이터베이스 `ARCHIVELOG` 모드여야 합니다. 이 모드를 활성화하려면 백업 보존 기간을 0이 아닌 값으로 설정하세요.
+ 아카이브된 재실행 로그를 백업하거나 아카이브된 재실행 로그가 포함된 전체 또는 증분 백업을 수행할 때, 그리고 데이터베이스를 백업할 때는 재실행 로그 보존을 0이 아닌 값으로 설정해야 합니다. 복구 중에 데이터베이스 파일의 일관성을 유지하려면 아카이브된 재실행 로그가 필요합니다. 자세한 내용은 [보관된 다시 실행 로그 보존](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md) 섹션을 참조하세요.
+ DB 인스턴스에 백업을 보관할 수 있는 여유 공간이 충분한지 확인합니다. 데이터베이스를 백업할 때 Oracle 디렉터리 객체를 프로시저 호출의 파라미터로 지정합니다. RMAN은 파일을 지정된 디렉터리에 배치합니다. `DATA_PUMP_DIR`과 같은 기본 디렉터리를 사용하거나 새 디렉터리를 생성할 수 있습니다. 자세한 내용은 [메인 데이터 스토리지 공간에서 디렉터리 생성 및 삭제](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories) 섹션을 참조하세요.

  CloudWatch 지표 `FreeStorageSpace`를 사용하여 RDS for Oracle 인스턴스의 현재 여유 공간을 모니터링할 수 있습니다. RMAN은 형식이 지정된 블록만 백업하고 압축을 지원하지만 여유 공간이 현재 데이터베이스 크기를 초과하는 것이 좋습니다.

# RMAN 프로시저용 공통 파라미터
<a name="Appendix.Oracle.CommonDBATasks.CommonParameters"></a>

Amazon RDS 패키지인 `rdsadmin.rdsadmin_rman_util`에서 프로시저를 사용해 RMAN으로 작업을 수행할 수 있습니다. 이 패키지에서 몇 가지 파라미터는 프로시저에 공통됩니다. 이 패키지에는 다음과 같은 공통 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  varchar2  |  유효한 데이터베이스 디렉터리 이름입니다.  |  —  |  예  |  백업 파일을 담을 디렉터리의 이름입니다.  | 
|  `p_label`  |  varchar2  |  `a-z`, `A-Z`, `0-9`, `'_'`, `'-'`, `'.'`  |  —  |  아니요  |  백업 파일 이름에 포함된 고유 문자열입니다.  제한은 30자입니다.   | 
|  `p_owner`  |  varchar2  |  `p_directory_name`에 지정된 디렉터리의 유효한 소유자입니다.  |  —  |  예  |  백업 파일을 담을 디렉터리의 소유자입니다.  | 
|  `p_tag`  |  varchar2  |  `a-z`, `A-Z`, `0-9`, `'_'`, `'-'`, `'.'`  |  NULL  |  아니요  |  매일, 매주 또는 증분 수준 백업과 같은 백업의 목적이나 용도를 나타내기 위해 백업을 구별하는 데 사용할 수 있는 문자열입니다. 제한은 30자입니다. 태그는 대/소문자를 구분하지 않습니다. 태그를 입력할 때 사용된 대소문자에 관계없이 항상 대문자로 태그가 저장됩니다. 태그는 고유할 필요가 없으므로 여러 백업이 동일한 태그를 가질 수 있습니다. 태그를 지정하지 않으면 RMAN은 `TAGYYYYMMDDTHHMMSS` 형식을 사용하여 기본 태그를 자동으로 할당합니다. 여기서 *YYYY*는 연도, *MM*은 월, *DD*는 일, *HH*는 시간(24시간 형식), *MM*은 분, *SS*는 초입니다. 날짜 및 시간은 RMAN이 백업을 시작한 때를 나타냅니다. 예를 들어 백업은 2019-09-27 21:45:17에 시작된 백업에 대해 `TAG20190927T214517` 태그를 수신할 수 있습니다. `p_tag` 파라미터는 다음 Amazon RDS for Oracle DB 엔진 버전에서 지원됩니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.CommonParameters.html)  | 
|  `p_compress`  |  부울  |  `TRUE`, `FALSE`  |  `FALSE`  |  아니요  |  `TRUE`를 지정하여 기본 백업 압축을 활성화합니다. `FALSE`를 지정하여 기본 백업 압축을 비활성화합니다.  | 
|  `p_include_archive_logs`  |  부울  |  `TRUE`, `FALSE`  |  `FALSE`  |  아니요  |  `TRUE`를 지정하여 보관된 재실행 로그를 백업에 포함합니다. `FALSE`를 지정하여 보관된 재실행 로그를 백업에서 제외합니다. 보관된 재실행 로그를 백업에 포함하는 경우 `rdsadmin.rdsadmin_util.set_configuration` 프로시저를 사용해 보존 기간을 1시간 이상으로 설정하세요. 또한 백업을 실행하기 전에 `rdsadmin.rdsadmin_rman_util.crosscheck_archivelog` 프로시저를 즉시 호출하세요. 이렇게 하지 않으면 Amazon RDS 관리 프로시저에서 삭제한 보관된 재실행 로그 파일이 누락되어 백업이 실패할 수 있습니다.  | 
|  `p_include_controlfile`  |  부울  |  `TRUE`, `FALSE`  |  `FALSE`  |  아니요  |  `TRUE`를 지정하여 백업에 제어 파일을 포함합니다. `FALSE`를 지정하여 백업에서 제어 파일을 제외합니다.  | 
|  `p_optimize`  |  부울  |  `TRUE`, `FALSE`  |  `TRUE`  |  아니요  |  보관된 재실행 로그가 포함된 경우 백업 크기를 줄이기 위해 `TRUE`를 지정하여 백업 최적화를 활성화합니다. `FALSE`를 지정하여 백업 최적화를 비활성화합니다.  | 
|  `p_parallel`  |  숫자  |  Oracle Database Enterprise Edition(EE)에서 `1`과 `254` 사이의 유효한 정수입니다. `1`다른 Oracle Database 에디션일 때는 입니다.  |  `1`  |  아니요  |  채널 수입니다.  | 
|  `p_rman_to_dbms_output`  |  부울  |  `TRUE`, `FALSE`  |  `FALSE`  |  아니요  |  `TRUE`일 때는 RMAN 출력이 `DBMS_OUTPUT` 패키지를 비롯해 `BDUMP` 디렉터리의 파일로 전송됩니다. SQL\$1Plus에서 `SET SERVEROUTPUT ON`을 사용하여 출력을 확인합니다. `FALSE`일 때는 RMAN 출력이 `BDUMP` 디렉터리의 파일로만 전송됩니다.  | 
|  `p_section_size_mb`  |  숫자  |  유효한 정수입니다.  |  `NULL`  |  아니요  |  섹션 크기(MB)입니다. 각 파일을 지정된 섹션 크기로 나누어서 함께 확인합니다. `NULL`일 때는 파라미터를 무시합니다.  | 
|  `p_validation_type`  |  varchar2  |  `'PHYSICAL'`, `'PHYSICAL+LOGICAL'`  |  `'PHYSICAL'`  |  아니요  |  손상 탐지 수준입니다. 물리적 손상 여부를 알아보고 싶다면 `'PHYSICAL'`을 지정합니다. 물리적 손상을 예로 들면 헤더와 푸터가 서로 일치하는 않는 블록이 있습니다. 물리적 손상 외에 논리적 불일치 여부도 알아보고 싶다면 `'PHYSICAL+LOGICAL'`을 지정합니다. 논리적 손상의 예로는 잘못된 블록을 들 수 있습니다.  | 

# RDS for Oracle DB에서 데이터베이스 파일 검증
<a name="Appendix.Oracle.CommonDBATasks.ValidateDBFiles"></a>

데이터 파일, 테이블스페이스, 제어 파일, 서버 파라미터 파일(SPFILE) 같은 Amazon RDS for Oracle 데이터베이스 파일은 Amazon RDS 패키지 `rdsadmin.rdsadmin_rman_util`을 사용하여 검증할 수 있습니다.

RMAN 확인에 대한 자세한 내용은 Oracle 설명서에서 [ Validating Database Files and Backups](https://docs.oracle.com/database/121/BRADV/rcmvalid.htm#BRADV90063) 및 [ VALIDATE](https://docs.oracle.com/database/121/RCMRF/rcmsynta2025.htm#RCMRF162)를 참조하세요.

**Topics**
+ [

## 데이터베이스 검증
](#Appendix.Oracle.CommonDBATasks.ValidateDB)
+ [

## 테넌트 데이터베이스 검증
](#Appendix.Oracle.CommonDBATasks.ValidateTenantDB)
+ [

## 테이블 스페이스 확인
](#Appendix.Oracle.CommonDBATasks.ValidateTablespace)
+ [

## 제어 파일 확인
](#Appendix.Oracle.CommonDBATasks.ValidateControlFile)
+ [

## SPFILE 확인
](#Appendix.Oracle.CommonDBATasks.ValidateSpfile)
+ [

## Oracle 데이터 파일 검증
](#Appendix.Oracle.CommonDBATasks.ValidateDataFile)

## 데이터베이스 검증
<a name="Appendix.Oracle.CommonDBATasks.ValidateDB"></a>

RDS for Oracle에서 Oracle 데이터베이스가 사용하는 모든 관련 파일을 검증하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_database`를 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

다음 예에서는 파라미터의 기본값을 사용하여 데이터베이스를 검증합니다.

```
EXEC rdsadmin.rdsadmin_rman_util.validate_database;
```

다음 예에서는 파라미터의 지정된 값을 사용하여 데이터베이스를 검증합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.validate_database(
        p_validation_type     => 'PHYSICAL+LOGICAL', 
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_rman_to_dbms_output => FALSE);
END;
/
```

`p_rman_to_dbms_output` 파라미터가 `FALSE`로 설정되면 RMAN 출력이 `BDUMP` 디렉터리의 파일로 작성됩니다.

`BDUMP` 디렉터리의 파일을 보려면 다음과 같이 `SELECT` 문을 실행합니다.

```
SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP')) order by mtime;
```

`BDUMP` 디렉터리의 파일 내용을 보려면 다음과 같이 `SELECT` 문을 실행합니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','rds-rman-validate-nnn.txt'));
```

파일 이름을 보려고 하는 파일 이름으로 변경합니다.

## 테넌트 데이터베이스 검증
<a name="Appendix.Oracle.CommonDBATasks.ValidateTenantDB"></a>

컨테이너 데이터베이스(CDB)에 있는 테넌트 데이터베이스의 데이터 파일을 검증하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_tenant`를 사용합니다.

이 프로시저는 현재 테넌트 데이터베이스에만 적용되며 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요. 이 프로시저는 다음 DB 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0) CDB
+ Oracle Database 19c(19.0.0) CDB

다음 예에서는 파라미터의 기본값을 사용하여 현재 테넌트 데이터베이스를 검증합니다.

```
EXEC rdsadmin.rdsadmin_rman_util.validate_tenant;
```

다음 예에서는 파라미터의 지정된 값을 사용하여 현재 테넌트 데이터베이스를 검증합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.validate_tenant(
        p_validation_type     => 'PHYSICAL+LOGICAL', 
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_rman_to_dbms_output => FALSE);
END;
/
```

`p_rman_to_dbms_output` 파라미터가 `FALSE`로 설정되면 RMAN 출력이 `BDUMP` 디렉터리의 파일로 작성됩니다.

`BDUMP` 디렉터리의 파일을 보려면 다음과 같이 `SELECT` 문을 실행합니다.

```
SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP')) order by mtime;
```

`BDUMP` 디렉터리의 파일 내용을 보려면 다음과 같이 `SELECT` 문을 실행합니다.

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','rds-rman-validate-nnn.txt'));
```

파일 이름을 보려고 하는 파일 이름으로 변경합니다.

## 테이블 스페이스 확인
<a name="Appendix.Oracle.CommonDBATasks.ValidateTablespace"></a>

테이블 스페이스와 연결된 파일을 확인하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_tablespace`를 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar2  |  유효한 테이블 스페이스 이름  |  —  |  예  |  테이블 스페이스 이름입니다.  | 

## 제어 파일 확인
<a name="Appendix.Oracle.CommonDBATasks.ValidateControlFile"></a>

Amazon RDS Oracle DB 인스턴스에서 사용되는 제어 파일을 확인하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_current_controlfile`을 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

## SPFILE 확인
<a name="Appendix.Oracle.CommonDBATasks.ValidateSpfile"></a>

Amazon RDS Oracle DB 인스턴스에서 사용되는 서버 파라미터 파일(SPFILE)만 확인하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_spfile`을 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

## Oracle 데이터 파일 검증
<a name="Appendix.Oracle.CommonDBATasks.ValidateDataFile"></a>

데이터 파일을 확인하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.validate_datafile`을 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_datafile`  |  varchar2  |  유효한 데이터파일 ID 번호 또는 유효한 데이터파일 이름(전체 경로 포함)  |  —  |  예  |  데이터파일 ID 번호(`v$datafile.file#`) 또는 경로가 포함된 전체 데이터파일 이름(`v$datafile.name`)입니다.  | 
|  `p_from_block`  |  숫자  |  유효한 정수입니다.  |  `NULL`  |  아니요  |  데이터 파일 내에서 확인이 시작되는 블록 번호입니다. 이 값이 `NULL`인 경우 `1`이 사용됩니다.  | 
|  `p_to_block`  |  숫자  |  유효한 정수입니다.  |  `NULL`  |  아니요  |  데이터 파일 내에서 확인이 끝나는 블록 번호입니다. 이 값이 `NULL`일 때는 데이터 파일에서 최대 블록이 사용됩니다.  | 

# 블록 변경 추적 활성화 및 비활성화
<a name="Appendix.Oracle.CommonDBATasks.BlockChangeTracking"></a>

블록 변경 내용 추적 기능은 추적 파일에 변경된 블록을 기록합니다. 이 기법을 사용하면 RMAN 증분 백업의 성능을 개선할 수 있습니다. 자세한 내용은 Oracle 데이터베이스 설명서의 [블록 변경 내용 추적을 사용하여 증분 백업 성능 향상](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/backing-up-database.html#GUID-4E1F605A-76A7-48D0-9D9B-7343B4327E2A) 섹션을 참조하세요.

RMAN 기능은 읽기 전용 복제본에서는 지원되지 않습니다. 하지만 고가용성 전략의 일환으로 프로시저 `rdsadmin.rdsadmin_rman_util.enable_block_change_tracking`을 사용하여 읽기 전용 복제본에서 블록 추적을 활성화하도록 선택할 수 있습니다. 이 읽기 전용 복제본을 소스 DB 인스턴스로 승격시키면 새 소스 인스턴스에서 블록 변경 추적 기능이 활성화됩니다. 따라서 인스턴스를 통해 빠른 증분 백업의 이점을 누릴 수 있습니다.

블록 변경 사항 추적 프로시저는 다음 DB 엔진 버전의 Enterprise Edition에만 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

**참고**  
단일 테넌트 CDB에서는 다음 작업이 작동하지만 고객에게 표시되는 메커니즘으로 작업의 현재 상태를 감지할 수 없습니다. 또한 [RDS for Oracle CDB 제한 사항](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant-limitations) 단원도 참조하세요.

DB 인스턴스에 대한 블록 변경 내용 추적을 활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.enable_block_change_tracking`을 사용합니다. 블록 변경 내용 추적을 비활성화하려면 `disable_block_change_tracking`을 사용합니다. 이 프로시저에는 파라미터가 없습니다.

DB 인스턴스에 대해 블록 변경 추적이 활성화되어 있는지 확인하려면 다음 쿼리를 실행하세요.

```
SELECT STATUS, FILENAME FROM V$BLOCK_CHANGE_TRACKING;
```

다음 예에서는 DB 인스턴스에 대한 블록 변경 추적을 활성화합니다.

```
EXEC rdsadmin.rdsadmin_rman_util.enable_block_change_tracking;
```

다음 예에서는 DB 인스턴스에 대한 블록 변경 추적을 비활성화합니다.

```
EXEC rdsadmin.rdsadmin_rman_util.disable_block_change_tracking;
```

# 보관된 재실행 로그 대조 확인
<a name="Appendix.Oracle.CommonDBATasks.Crosscheck"></a>

보관된 재실행 로그를 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.crosscheck_archivelog`를 사용해 대조 확인할 수 있습니다.

이 프로시저를 사용하여 제어 파일에 등록된 아카이브된 다시 실행 로그를 대조 확인하고 선택 사항으로 만료된 로그 레코드를 삭제할 수 있습니다. RMAN은 백업을 수행할 때 제어 파일에 레코드를 생성합니다. 시간이 지남에 따라 이 레코드로 인해 제어 파일의 크기가 증가합니다. 만료된 레코드는 주기적으로 제거하는 것이 좋습니다.

**참고**  
표준 Amazon RDS 백업은 RMAN을 사용하지 않으므로 제어 파일에 레코드를 생성하지 않습니다.

이 프로시저에서는 RMAN 작업을 위해 공통 파라미터인 `p_rman_to_dbms_output`을 사용합니다.

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_delete_expired`  |  부울  |  `TRUE`, `FALSE`  |  `TRUE`  |  아니요  |  `TRUE`인 경우 제어 파일에서 만료된 아카이브된 다시 실행 로그 레코드를 삭제합니다. `FALSE`인 경우 제어 파일에 만료된 아카이브된 다시 실행 로그 레코드를 보관합니다.  | 

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

다음 예에서는 제어 파일에서 아카이브된 다시 실행 로그 레코드를 만료됨으로 표시하지만 레코드를 삭제하지는 않습니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.crosscheck_archivelog(
        p_delete_expired      => FALSE,  
        p_rman_to_dbms_output => FALSE);
END;
/
```

다음 예에서는 제어 파일에서 만료된 아카이브된 다시 실행 로그를 삭제합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.crosscheck_archivelog(
        p_delete_expired      => TRUE,  
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 보관된 재실행 로그 파일 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs"></a>

Amazon RDS 패키지인 `rdsadmin.rdsadmin_rman_util`을(를) 사용해 Amazon RDS Oracle DB 인스턴스에 대해 보관된 재실행 로그를 백업할 수 있습니다.

보관된 재실행 로그 백업 프로시저는 다음과 같은 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

**Topics**
+ [

## 보관된 재실행 로그 전체 백업
](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.All)
+ [

## 날짜 범위에서 보관된 재실행 로그 백업
](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Date)
+ [

## SCN 범위에서 보관된 재실행 로그 백업
](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.SCN)
+ [

## 시퀀스 번호 범위에서 보관된 재실행 로그 백업
](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Sequence)

## 보관된 재실행 로그 전체 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.All"></a>

Amazon RDS Oracle DB 인스턴스에 대해 보관된 다시 실행 로그를 모두 백업하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_archivelog_all`을 사용합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

다음 예에서는 DB 인스턴스에 대해 모든 보관된 재실행 로그를 백업합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_all(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4, 
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## 날짜 범위에서 보관된 재실행 로그 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Date"></a>

날짜 범위를 지정하여 Amazon RDS Oracle DB 인스턴스에 대해 보관된 특정 다시 실행 로그를 백업하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_archivelog_date`를 사용합니다. 날짜 범위에서는 백업할 보관된 재실행 로그를 지정합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_date`  |  날짜  |  디스크에 있는 보관된 재실행 로그의 `start_date` 및 `next_date` 사이의 날짜입니다. 이 값은 `p_to_date`에 대해 지정된 값과 같거나 이보다 작아야 합니다.  |  —  |  예  |  보관된 로그 백업의 시작 날짜입니다.  | 
|  `p_to_date`  |  날짜  |  디스크에 있는 보관된 재실행 로그의 `start_date` 및 `next_date` 사이의 날짜입니다. 이 값은 `p_from_date`에 대해 지정된 값과 같거나 이보다 커야 합니다.  |  —  |  예  |  보관된 로그 백업의 종료 날짜입니다.  | 

다음 예에서는 DB 인스턴스의 날짜 범위에서 보관된 재실행 로그를 백업합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_date(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_date           => '03/01/2019 00:00:00',
        p_to_date             => '03/02/2019 00:00:00',
        p_parallel            => 4,  
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## SCN 범위에서 보관된 재실행 로그 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.SCN"></a>

시스템 변경 번호(SCN) 범위를 지정하여 Amazon RDS Oracle DB 인스턴스에 대해 보관된 특정 다시 실행 로그를 백업하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_archivelog_scn`을 사용합니다. SCN 범위에서는 백업할 보관된 재실행 로그를 지정합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_scn`  |  숫자  |  디스크에 있는 보관된 재실행 로그의 SCN입니다. 이 값은 `p_to_scn`에 대해 지정된 값과 같거나 이보다 작아야 합니다.  |  —  |  예  |  보관된 로그 백업의 시작 SCN입니다.  | 
|  `p_to_scn`  |  숫자  |  디스크에 있는 보관된 재실행 로그의 SCN입니다. 이 값은 `p_from_scn`에 대해 지정된 값과 같거나 이보다 커야 합니다.  |  —  |  예  |  보관된 로그 백업의 종료 SCN입니다.  | 

다음 예에서는 DB 인스턴스의 SCN 범위에서 보관된 재실행 로그를 백업합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_scn(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_scn            => 1533835,
        p_to_scn              => 1892447,
        p_parallel            => 4,
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## 시퀀스 번호 범위에서 보관된 재실행 로그 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Sequence"></a>

시퀀스 번호 범위를 지정하여 Amazon RDS Oracle DB 인스턴스에 대해 보관된 특정 다시 실행 로그를 백업하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_archivelog_sequence`를 사용합니다. 시퀀스 번호 범위에서는 백업할 보관된 재실행 로그를 지정합니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_sequence`  |  숫자  |  디스크에 있는 보관된 재실행 로그의 시퀀스 번호입니다. 이 값은 `p_to_sequence`에 대해 지정된 값과 같거나 이보다 작아야 합니다.  |  —  |  예  |  보관된 로그 백업의 시작 시퀀스 번호입니다.  | 
|  `p_to_sequence`  |  숫자  |  디스크에 있는 보관된 재실행 로그의 시퀀스 번호입니다. 이 값은 `p_from_sequence`에 대해 지정된 값과 같거나 이보다 커야 합니다.  |  —  |  예  |  보관된 로그 백업의 종료 시퀀스 번호입니다.  | 

다음 예에서는 DB 인스턴스의 시퀀스 번호 범위 범위에서 보관된 재실행 로그를 백업합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_sequence(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_sequence       => 11160,
        p_to_sequence         => 11160,
        p_parallel            => 4,  
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 전체 데이터베이스 백업 수행
<a name="Appendix.Oracle.CommonDBATasks.BackupDatabaseFull"></a>

Amazon RDS 프로시저인 `rdsadmin.rdsadmin_rman_util.backup_database_full`을 사용해 백업에 포함된 데이터 파일의 모든 블록을 백업할 수 있습니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

다음 예에서는 파라미터에 지정된 값을 사용하여 완전한 DB 인스턴스 백업을 수행합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_database_full(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'FULL_DB_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 테넌트 데이터베이스의 전체 백업 수행
<a name="Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseFull"></a>

컨테이너 데이터베이스(CDB)에 테넌트 데이터베이스를 포함한 데이터 블록을 모두 백업할 수 있습니다. Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_tenant_full`을 사용합니다. 이 프로시저는 현재 데이터베이스 백업에만 적용되며 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

`rdsadmin_rman_util.backup_tenant_full` 프로시저는 다음 RDS for Oracle DB 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0) CDB
+ Oracle Database 19c(19.0.0) CDB

다음 예에서는 파라미터에 지정된 값을 사용하여 현재 테넌트 데이터베이스에 전체 백업을 수행합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tenant_full(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'FULL_TENANT_DB_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 증분 데이터베이스 백업 수행
<a name="Appendix.Oracle.CommonDBATasks.BackupDatabaseIncremental"></a>

Amazon RDS 프로시저인 `rdsadmin.rdsadmin_rman_util.backup_database_incremental`을 사용해 DB 인스턴스에 대한 증분 백업을 수행할 수 있습니다.

증분 백업에 대한 자세한 내용은 Oracle 설명서의 [증분 백업](https://docs.oracle.com/database/121/RCMRF/rcmsynta006.htm#GUID-73642FF2-43C5-48B2-9969-99001C52EB50__BGBHABHH)을 참조하세요.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_level`  |  숫자  |  `0`, `1`  |  `0`  |  아니요  |  `0`을 지정하여 전체 증분 백업을 활성화합니다. `1`을 지정하여 비누적 증분 백업을 활성화합니다.  | 

다음 예에서는 지정된 값을 파라미터에 사용하여 DB 인스턴스에 대한 증분 백업을 수행합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_database_incremental(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_level               => 1,
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MY_INCREMENTAL_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 테넌트 데이터베이스의 증분 백업 수행
<a name="Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseIncremental"></a>

CDB에서 현재 테넌트 데이터베이스의 증분 백업을 수행할 수 있습니다. Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_tenant_incremental`을 사용합니다.

증분 백업에 대한 자세한 내용은 Oracle 데이터베이스 설명서의 [증분 백업](https://docs.oracle.com/database/121/RCMRF/rcmsynta006.htm#GUID-73642FF2-43C5-48B2-9969-99001C52EB50__BGBHABHH)을 참조하세요.

이 프로시저는 현재 테넌트 데이터베이스에만 적용되며 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 단원을 참조하십시오.

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0) CDB
+ Oracle Database 19c(19.0.0) CDB

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_level`  |  숫자  |  `0`, `1`  |  `0`  |  아니요  |  `0`을 지정하여 전체 증분 백업을 활성화합니다. `1`을 지정하여 비누적 증분 백업을 활성화합니다.  | 

다음 예에서는 파라미터에 지정된 값을 사용하여 현재 테넌트 데이터베이스에 증분 백업을 수행합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tenant_incremental(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_level               => 1,
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MY_INCREMENTAL_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 테이블스페이스 백업
<a name="Appendix.Oracle.CommonDBATasks.BackupTablespace"></a>

Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_tablespace`를 사용하여 테이블스페이스를 백업할 수 있습니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터도 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar2  |  유효한 테이블스페이스 이름입니다.  |  —  |  예  |  백업할 테이블스페이스의 이름입니다.  | 

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

다음 예에서는 지정된 값을 파라미터에 사용하여 테이블스페이스 백업을 수행합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tablespace(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_tablespace_name     => 'MYTABLESPACE',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MYTABLESPACE_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# Backing up a control file
<a name="Appendix.Oracle.CommonDBATasks.backup-control-file"></a>

Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.backup_current_controlfile`를 사용하여 제어 파일을 백업할 수 있습니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

다음 예에서는 지정된 값을 파라미터에 사용하여 제어 파일을 백업합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_current_controlfile(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_tag                 => 'CONTROL_FILE_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 블록 미디어 복구 수행
<a name="Appendix.Oracle.CommonDBATasks.block-media-recovery"></a>

Amazon RDS 프로시저 `rdsadmin.rdsadmin_rman_util.recover_datafile_block`을 사용하여 블록 미디어 복구라고 하는 개별 데이터 블록을 복구할 수 있습니다. 이 오버로드된 절차를 사용하여 개별 데이터 블록 또는 일정 범위의 데이터 블록을 복구할 수 있습니다.

이 프로시저에서는 RMAN 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `p_rman_to_dbms_output`

자세한 내용은 [RMAN 프로시저용 공통 파라미터](Appendix.Oracle.CommonDBATasks.CommonParameters.md) 섹션을 참조하세요.

이 프로시저에서는 다음과 같은 추가 파라미터를 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_datafile`  |  `NUMBER`  |  유효한 데이터 파일 ID 번호.  |  —  |  예  |  손상된 블록을 포함하는 데이터 파일. 다음 방법 중 하나를 사용하여 데이터 파일을 지정합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_block`  |  `NUMBER`  |  유효한 정수.  |  —  |  예  |  복구할 개별 블록의 수. 다음 파라미터는 함께 사용할 수 없습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_from_block`  |  `NUMBER`  |  유효한 정수.  |  —  |  예  |  복구할 블록 범위 중 첫 번째 블록 번호. 다음 파라미터는 함께 사용할 수 없습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_to_block`  |  `NUMBER`  |  유효한 정수.  |  —  |  예  |  복구할 블록 범위 중 마지막 블록 번호. 다음 파라미터는 함께 사용할 수 없습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 

이 프로시저는 다음 Amazon RDS for Oracle 엔진 버전에서 지원됩니다.
+ Oracle Database 21c(21.0.0)
+ Oracle Database 19c(19.0.0)

다음 예제에서는 데이터 파일 5의 블록 100을 복구합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.recover_datafile_block(
        p_datafile            => 5, 
        p_block               => 100,
        p_rman_to_dbms_output => TRUE);
END;
/
```

다음 예제에서는 데이터 파일 5의 블록 100\$1150을 복구합니다.

```
BEGIN
    rdsadmin.rdsadmin_rman_util.recover_datafile_block(
        p_datafile            => 5, 
        p_from_block          => 100,
        p_to_block            => 150,
        p_rman_to_dbms_output => TRUE);
END;
/
```

# Oracle DB 인스턴스에 대한 공통 스케줄링 작업 수행
<a name="Appendix.Oracle.CommonDBATasks.Scheduler"></a>

일부 `SYS` 소유 스케줄러 작업이 일반 데이터베이스 작업을 방해할 수 있습니다. 이러한 경우 Oracle Support는 일정을 수정할 것을 권장합니다. `SYS` 작업을 활성화 또는 비활성화해야 하는 경우 프로덕션 환경에서 구현하기 전에 테스트 환경에서 예약된 작업에 대해 작업을 테스트합니다. `SYS` 소유 Oracle Scheduler 작업을 위한 태스크를 수행하려면 Amazon RDS 패키지 `rdsadmin.rdsadmin_dbms_scheduler`를 사용합니다.

`rdsadmin.rdsadmin_dbms_scheduler` 프로시저는 다음 표에 나오는 Amazon RDS for Oracle DB 엔진 버전에서 지원됩니다. 이 패키지를 사용할 때 표에 나열된 `SYS` 작업을 지정할 수 있습니다.


| 데이터베이스 릴리스 | 기본적으로 활성화되는 작업 | 기본적으로 비활성화되는 작업 | 
| --- | --- | --- | 
| Oracle Database 19c |  <pre>BSLN_MAINTAIN_STATS_JOB<br />CLEANUP_NON_EXIST_OBJ<br />CLEANUP_ONLINE_IND_BUILD<br />CLEANUP_ONLINE_PMO<br />CLEANUP_TAB_IOT_PMO<br />CLEANUP_TRANSIENT_PKG<br />CLEANUP_TRANSIENT_TYPE<br />DRA_REEVALUATE_OPEN_FAILURES<br />FILE_SIZE_UPD<br />ORA$AUTOTASK_CLEAN<br />PMO_DEFERRED_GIDX_MAINT_JOB<br />PURGE_LOG<br />RSE$CLEAN_RECOVERABLE_SCRIPT<br />SM$CLEAN_AUTO_SPLIT_MERGE</pre>  |  <pre>FGR$AUTOPURGE_JOB<br />FILE_WATCHER<br />HM_CREATE_OFFLINE_DICTIONARY<br />LOAD_OPATCH_INVENTORY<br />ORA$PREPLUGIN_BACKUP_JOB<br />XMLDB_NFS_CLEANUP_JOB</pre>  | 
| Oracle Database 21c |  <pre>BSLN_MAINTAIN_STATS_JOB<br />CLEANUP_NON_EXIST_OBJ<br />CLEANUP_ONLINE_IND_BUILD<br />CLEANUP_ONLINE_PMO<br />CLEANUP_TAB_IOT_PMO<br />CLEANUP_TRANSIENT_PKG<br />CLEANUP_TRANSIENT_TYPE<br />DRA_REEVALUATE_OPEN_FAILURES<br />FILE_SIZE_UPD<br />ORA$AUTOTASK_CLEAN<br />PMO_DEFERRED_GIDX_MAINT_JOB<br />PURGE_LOG</pre>  |  <pre>FGR$AUTOPURGE_JOB<br />FILE_WATCHER<br />HM_CREATE_OFFLINE_DICTIONARY<br />LOAD_OPATCH_INVENTORY<br />ORA$PREPLUGIN_BACKUP_JOB<br />ORA$_ATSK_AUTOSTS<br />XMLDB_NFS_CLEANUP_JOB</pre>  | 

## Oracle Scheduler 프로시저용 공통 파라미터
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters"></a>

Oracle Scheduler를 사용하여 작업을 수행하려면 Amazon RDS 패키지 `rdsadmin.rdsadmin_dbms_scheduler`의 프로시저를 사용합니다. 이 패키지에서 몇 가지 파라미터는 프로시저에 공통됩니다. 이 패키지에는 다음과 같은 공통 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `name`  |  varchar2  |  [Oracle DB 인스턴스에 대한 공통 스케줄링 작업 수행](#Appendix.Oracle.CommonDBATasks.Scheduler)의 테이블에 나열된 프로시저   |  —  |  예  |  수정할 작업의 이름입니다.  | 
|  `attribute`  |  varchar2  |  `'REPEAT_INTERVAL'`,`'SCHEDULE_NAME'`  |  –  |  예  |  수정할 속성입니다. 작업에 대한 반복 간격을 수정하려면 `'REPEAT_INTERVAL'`을 지정합니다. 작업에 대한 일정 이름을 수정하려면 `'SCHEDULE_NAME'`을 지정합니다.  | 
|  `value`  |  varchar2  |  사용하는 속성에 따라 유효한 일정 간격 또는 일정 이름입니다.  |  –  |  예  |  속성의 새로운 값입니다.  | 

## DBMS\$1SCHEDULER 작업 변경
<a name="Appendix.Oracle.CommonDBATasks.ModifyScheduler"></a>

Oracle Scheduler의 특정 구성 요소를 수정하려면 Oracle 프로시저 `dbms_scheduler.set_attribute`를 사용합니다. 자세한 내용은 Oracle 문서의 [DBMS\$1SCHEDULER](https://docs.oracle.com/database/121/ARPLS/d_sched.htm#ARPLS72235)와 [SET\$1ATTRIBUTE Procedure](https://docs.oracle.com/database/121/ARPLS/d_sched.htm#ARPLS72399) 단원을 참조하세요.

Amazon RDS DB 인스턴스를 작업할 때는, 스키마 이름 `SYS`를 객체 이름 앞에 붙이십시오. 다음은 월요일 창 객체에 자원 계획 속성을 설정하는 예제입니다.

```
BEGIN
    DBMS_SCHEDULER.SET_ATTRIBUTE(
        name      => 'SYS.MONDAY_WINDOW',
        attribute => 'RESOURCE_PLAN',
        value     => 'resource_plan_1');
END;
/
```

## AutoTask 유지 관리 기간 수정
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.maintenance-windows"></a>

Amazon RDS for Oracle 인스턴스는 유지 관리 기간에 대한 기본 설정을 사용하여 생성됩니다. 이러한 기간 동안 옵티마이저 통계 수집과 같은 자동화된 유지 관리 태스크가 실행됩니다. 기본적으로 유지 관리 기간은 Oracle 데이터베이스 리소스 관리자를 활성화합니다.

이 기간을 수정하려면 `DBMS_SCHEDULER` 패키지를 사용합니다. 다음과 같은 이유로 유지 관리 기간 설정을 수정해야 할 수 있습니다.
+ 유지 관리 작업을 다른 시간에 실행하거나, 다른 설정으로 실행하거나, 전혀 실행하지 않고자 할 수 있습니다. 예를 들어 이 기간의 지속 시간을 수정하거나, 반복 시간 및 간격을 변경할 수 있습니다.
+ 유지 관리 중에 리소스 관리자를 사용하도록 활성화할 경우 성능에 미치는 영향을 피하고자 할 수 있습니다. 예를 들어 기본 유지 관리 계획이 지정되어 있고 데이터베이스의 부하가 클 때 유지 관리 기간이 시작되면 `resmgr:cpu quantum`과 같은 대기 이벤트가 발생할 수 있습니다. 이 대기 이벤트는 데이터베이스 리소스 관리자와 관련이 있습니다. 다음과 같은 옵션이 있습니다.
  + DB 인스턴스의 사용량이 적은 시간 동안 유지 관리 기간이 활성화되는지 확인합니다.
  + `resource_plan`속성을 빈 문자열로 설정하여 기본 유지 관리 계획을 비활성화합니다.
  + 파라미터 그룹에서 `resource_manager_plan` 파라미터를 `FORCE:`로 설정합니다. 인스턴스가 Enterprise Edition을 사용하는 경우 이 설정을 사용하면 데이터베이스 리소스 관리자 계획이 활성화되지 않습니다.

**유지 관리 기간 설정을 수정하려면**

1. Oracle SQL 클라이언트를 사용하여 데이터베이스에 연결합니다.

1. 스케줄러 기간에 대한 현재 구성을 쿼리합니다.

   다음 예에서는 `MONDAY_WINDOW`의 구성을 쿼리합니다.

   ```
   SELECT ENABLED, RESOURCE_PLAN, DURATION, REPEAT_INTERVAL
   FROM   DBA_SCHEDULER_WINDOWS 
   WHERE  WINDOW_NAME='MONDAY_WINDOW';
   ```

   다음 출력은 이 기간이 기본값을 사용하고 있음을 보여줍니다.

   ```
   ENABLED         RESOURCE_PLAN                  DURATION         REPEAT_INTERVAL
   --------------- ------------------------------ ---------------- ------------------------------
   TRUE            DEFAULT_MAINTENANCE_PLAN       +000 04:00:00    freq=daily;byday=MON;byhour=22
                                                                   ;byminute=0; bysecond=0
   ```

1. `DBMS_SCHEDULER` 패키지를 사용하여 이 기간을 수정합니다.

   다음 예에서는 리소스 관리자가 유지 관리 기간 동안 실행되지 않도록 리소스 계획을 null로 설정합니다.

   ```
   BEGIN
     -- disable the window to make changes
     DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE);
   
     -- specify the empty string to use no plan
     DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'RESOURCE_PLAN', value=>'');
   
     -- re-enable the window
     DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"');
   END;
   /
   ```

   다음 예는 이 기간의 최대 지속 시간을 2시간으로 설정합니다.

   ```
   BEGIN
     DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE);
     DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'DURATION', value=>'0 2:00:00');
     DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"');
   END;
   /
   ```

   다음 예는 반복 간격을 매주 월요일 오전 10시로 설정합니다.

   ```
   BEGIN
     DBMS_SCHEDULER.DISABLE(name=>'"SYS"."MONDAY_WINDOW"',force=>TRUE);
     DBMS_SCHEDULER.SET_ATTRIBUTE(name=>'"SYS"."MONDAY_WINDOW"', attribute=>'REPEAT_INTERVAL', value=>'freq=daily;byday=MON;byhour=10;byminute=0;bysecond=0');
     DBMS_SCHEDULER.ENABLE(name=>'"SYS"."MONDAY_WINDOW"');
   END;
   /
   ```

## Oracle Scheduler 작업의 시간대 설정
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.TimeZone"></a>

Oracle Scheduler의 시간대를 수정하려면 Oracle 프로시저 `dbms_scheduler.set_scheduler_attribute`를 사용할 수 있습니다. `dbms_scheduler` 패키지에 대한 자세한 내용은 Oracle 설명서의 [DBMS\$1SCHEDULER](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html) 및 [SET\$1SCHEDULER\$1ATTRIBUTE](https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_SCHEDULER.html#GUID-2AB97BF7-7154-4E6C-933F-B2659B18A907)를 참조하세요.

**현재 시간대 설정을 수정하려면**

1. SQL Developer와 같은 클라이언트를 사용하여 데이터베이스에 연결합니다. 자세한 내용은 [Oracle SQL Developer를 사용하여 DB 인스턴스에 연결](USER_ConnectToOracleInstance.SQLDeveloper.md) 섹션을 참조하세요.

1. `time_zone_name`의 시간대를 대체하여 기본 시간대를 다음과 같이 설정합니다.

   ```
   BEGIN
     DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE(
       attribute => 'default_timezone',
       value => 'time_zone_name'
     );
   END;
   /
   ```

다음 예제에서는 시간대를 아시아/상하이로 변경합니다.

다음과 같이 현재 시간대를 쿼리하여 시작합니다.

```
SELECT VALUE FROM DBA_SCHEDULER_GLOBAL_ATTRIBUTE WHERE ATTRIBUTE_NAME='DEFAULT_TIMEZONE';
```

출력은 현재 시간대가 ETC/UTC임을 보여줍니다.

```
VALUE
-------
Etc/UTC
```

그런 다음 시간대를 아시아/상하이로 설정합니다.

```
BEGIN
  DBMS_SCHEDULER.SET_SCHEDULER_ATTRIBUTE(
    attribute => 'default_timezone',
    value => 'Asia/Shanghai'
  );
END;
/
```

시스템 시간대 변경에 대한 자세한 내용은 [Oracle 시간대](Appendix.Oracle.Options.Timezone.md) 단원을 참조하세요.

## SYS가 소유한 Oracle Scheduler 작업 해제
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Disabling"></a>

SYS 사용자가 소유한 Oracle Scheduler 작업을 비활성화하려면 `rdsadmin.rdsadmin_dbms_scheduler.disable` 프로시저를 사용해야 합니다.

이 프로시저는 Oracle Scheduler 작업에 `name` 공통 파라미터를 사용합니다. 자세한 내용은 [Oracle Scheduler 프로시저용 공통 파라미터](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters) 섹션을 참조하세요.

다음 예제는 `SYS.CLEANUP_ONLINE_IND_BUILD` Oracle Scheduler 작업을 비활성화합니다.

```
BEGIN
   rdsadmin.rdsadmin_dbms_scheduler.disable('SYS.CLEANUP_ONLINE_IND_BUILD');
END;
/
```

## SYS가 소유한 Oracle Scheduler 작업 켜기
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Enabling"></a>

SYS 소유 Oracle Scheduler 작업을 활성화하려면 `rdsadmin.rdsadmin_dbms_scheduler.enable` 프로시저를 사용해야 합니다.

이 프로시저는 Oracle Scheduler 작업에 `name` 공통 파라미터를 사용합니다. 자세한 내용은 [Oracle Scheduler 프로시저용 공통 파라미터](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters) 섹션을 참조하세요.

다음 예제는 `SYS.CLEANUP_ONLINE_IND_BUILD` Oracle Scheduler 작업을 활성화합니다.

```
BEGIN
   rdsadmin.rdsadmin_dbms_scheduler.enable('SYS.CLEANUP_ONLINE_IND_BUILD');
END;
/
```

## CALENDAR 형식 작업에 대한 Oracle Scheduler 반복 간격 수정
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Modifying_Calendar"></a>

`CALENDAR` 형식의 SYS 소유 Oracle Scheduler 작업을 수정하는 반복 간격을 수정하려면 `rdsadmin.rdsadmin_dbms_scheduler.disable` 프로시저를 사용합니다.

이 프로시저에서는 Oracle Scheduler 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `name`
+ `attribute`
+ `value`

자세한 내용은 [Oracle Scheduler 프로시저용 공통 파라미터](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters) 섹션을 참조하세요.

다음 예제는 `SYS.CLEANUP_ONLINE_IND_BUILD` Oracle Scheduler 작업의 반복 간격을 수정합니다.

```
BEGIN
     rdsadmin.rdsadmin_dbms_scheduler.set_attribute(
          name      => 'SYS.CLEANUP_ONLINE_IND_BUILD', 
          attribute => 'repeat_interval', 
          value     => 'freq=daily;byday=FRI,SAT;byhour=20;byminute=0;bysecond=0');
END;
/
```

## NAMED 형식 작업에 대한 Oracle Scheduler 반복 간격 수정
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.Modifying_Named"></a>

일부 Oracle Scheduler 작업은 간격 대신 일정 이름을 사용합니다. 이 유형의 작업에서는 마스터 사용자 스키마에서 이름이 지정된 새 일정을 생성해야 합니다. 이렇게 하려면 표준 Oracle `sys.dbms_scheduler.create_schedule` 프로시저를 사용합니다. 또한 `rdsadmin.rdsadmin_dbms_scheduler.set_attribute procedure`를 사용하여 새 명명된 일정을 할당합니다.

이 프로시저에서는 Oracle Scheduler 작업을 위해 다음과 같은 공통 파라미터를 사용합니다.
+ `name`
+ `attribute`
+ `value`

자세한 내용은 [Oracle Scheduler 프로시저용 공통 파라미터](#Appendix.Oracle.CommonDBATasks.Scheduler.CommonParameters) 섹션을 참조하세요.

다음 예제는 `SYS.BSLN_MAINTAIN_STATS_JOB` Oracle Scheduler 작업의 반복 간격을 수정합니다.

```
BEGIN
     DBMS_SCHEDULER.CREATE_SCHEDULE (
          schedule_name   => 'rds_master_user.new_schedule',
          start_date      => SYSTIMESTAMP,
          repeat_interval => 'freq=daily;byday=MON,TUE,WED,THU,FRI;byhour=0;byminute=0;bysecond=0',
          end_date        => NULL,
          comments        => 'Repeats daily forever');
END;
/
 
BEGIN
     rdsadmin.rdsadmin_dbms_scheduler.set_attribute (
          name      => 'SYS.BSLN_MAINTAIN_STATS_JOB', 
          attribute => 'schedule_name',
          value     => 'rds_master_user.new_schedule');
END;
/
```

## Oracle Scheduler 작업 생성을 위한 자동 커밋 해제
<a name="Appendix.Oracle.CommonDBATasks.Scheduler.autocommit"></a>

`DBMS_SCHEDULER.CREATE_JOB`에서 Oracle Scheduler 작업을 생성하면, 작업이 즉시 생성되고 변경 사항이 커밋됩니다. 다음을 수행하려면 Oracle Scheduler 작업 생성을 사용자 트랜잭션에 통합해야 할 수 있습니다.
+ 사용자 트랜잭션이 롤백될 때 Oracle Schedule 작업을 롤백합니다.
+ 기본 사용자 트랜잭션이 커밋될 때 Oracle Scheduler 작업을 생성합니다.

프로시저 `rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag`를 사용하여 이 동작을 설정할 수 있습니다. 이 프로시저에는 파라미터가 없습니다. 이 절차는 다음 RDS for Oracle 릴리스에서 사용할 수 있습니다.
+ 21.0.0.0.ru-2022-07.rur-2022-07.r1 이상
+ 19.0.0.0.ru-2022-07.rur-2022-07.r1 이상

다음 예에서는 Oracle Scheduler의 자동 커밋을 해제하고 Oracle Scheduler 작업을 생성한 다음 트랜잭션을 롤백합니다. 자동 커밋이 해제된 상태이기 때문에 데이터베이스는 Oracle Scheduler 작업 생성을 롤백합니다.

```
BEGIN
  rdsadmin.rdsadmin_dbms_scheduler.set_no_commit_flag;
  DBMS_SCHEDULER.CREATE_JOB(job_name   => 'EMPTY_JOB', 
                            job_type   => 'PLSQL_BLOCK', 
                            job_action => 'begin null; end;',
                            auto_drop  => false);
  ROLLBACK;
END;
/

PL/SQL procedure successfully completed.

SELECT * FROM DBA_SCHEDULER_JOBS WHERE JOB_NAME='EMPTY_JOB';

no rows selected
```

# RDS for Oracle DB 인스턴스 문제 진단
<a name="Appendix.Oracle.CommonDBATasks.Diagnostics"></a>

Oracle 데이터베이스에는 데이터베이스 문제를 조사하는 데 사용할 수 있는 결함 진단 가능성 인프라가 포함되어 있습니다. Oracle 용어에서 *문제*는 코드 버그 또는 데이터 손상과 같은 중대한 오류입니다. *인시던트*는 문제의 발생입니다. 동일한 오류가 세 번 발생하면 인프라에 이 문제의 세 가지 인시던트가 표시됩니다. 자세한 내용은 Oracle 데이터베이스 설명서의 [문제 진단 및 해결](https://docs.oracle.com/en/database/oracle/oracle-database/19/admin/diagnosing-and-resolving-problems.html#GUID-8DEB1BE0-8FB9-4FB2-A19A-17CF6F5791C3)을 참조하세요.

ADRCI(자동 진단 리포지토리 명령 인터프리터) 유틸리티는 진단 데이터를 관리하는 데 사용하는 Oracle 명령줄 도구입니다. 예를 들어, 이 도구를 사용하여 문제를 조사하고 진단 데이터를 패키징할 수 있습니다. *인시던트 패키지*에는 한 인시던트 또는 특정 문제를 참조하는 모든 인시던트에 대한 진단 데이터가 포함됩니다. .zip 파일로 구현된 인시던트 패키지를 Oracle Support에 업로드할 수 있습니다.

관리형 서비스 환경을 제공하기 위해 Amazon RDS는 ADRCI에 대한 shell 액세스를 제공하지 않습니다. RDS for Oracle 인스턴스에 대한 진단 작업을 수행하려면 Amazon RDS 패키지 `rdsadmin.rdsadmin_adrci_util`을 사용합니다.

`rdsadmin_adrci_util`의 함수를 사용하여 문제와 인시던트를 나열하고 패키지징할 수 있으며 추적 파일도 표시할 수 있습니다. 모든 함수는 작업 ID를 반환합니다. 이 ID는 `dbtask-task_id.log`와 같이 ADRCI 출력이 포함된 로그 파일 이름의 일부를 구성합니다. 로그 파일은 BDUMP 디렉터리에 상주합니다. [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md)에 설명된 절차에 따라 로그 파일을 다운로드할 수 있습니다.

## 진단 절차에 대한 공통 파라미터
<a name="Appendix.Oracle.CommonDBATasks.CommonDiagParameters"></a>

진단 작업을 수행하려면 Amazon RDS 패키지 `rdsadmin.rdsadmin_adrci_util`의 함수를 사용합니다. 이 패키지에는 다음과 같은 공통 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `incident_id`  |  숫자  |  유효한 인시던트 ID 또는 null   |  Null  |  아니요  |  값이 null이면 이 함수는 모든 인시던트를 표시합니다. 값이 null이 아니고 유효한 인시던트 ID를 나타내면 이 함수는 지정된 인시던트를 표시합니다.   | 
|  `problem_id`  |  숫자  |  유효한 문제 ID 또는 null  |  Null  |  아니요  |  값이 null이면 이 함수에 모든 문제를 표시합니다. 값이 null이 아니고 유효한 문제 ID를 나타내면 이 함수는 지정된 문제를 표시합니다.  | 
|  `last`  |  숫자  |  0보다 큰 유효한 정수 또는 null  |  Null  |  아니요  |  값이 null이면 이 함수는 50개 이하의 항목을 표시합니다. 값이 null이 아니면 이 함수는 지정된 숫자를 표시합니다.  | 

## 인시던트 나열
<a name="Appendix.Oracle.CommonDBATasks.Incidents"></a>

Oracle에 대한 진단 인시던트를 나열하려면 Amazon RDS 함수 `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents`를 사용합니다. 기본 또는 세부 모드로 인시던트를 나열할 수 있습니다. 기본적으로 이 함수는 가장 최근 인시던트 50개를 나열합니다.

이 함수는 다음과 같은 공통 파라미터를 사용합니다.
+  `incident_id`
+  `problem_id`
+  `last`

`incident_id` 및 `problem_id`를 지정하면 `incident_id`가 `problem_id`를 재정의합니다. 자세한 내용은 [진단 절차에 대한 공통 파라미터](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters) 섹션을 참조하세요.

이 함수는 다음과 같은 추가 파라미터를 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `detail`  |  부울  | TRUE 또는 FALSE |  `FALSE`  |  아니요  |  `TRUE`이면 이 함수는 세부 모드에서 인시던트를 나열합니다. `FALSE`이면 이 함수는 기본 모드에서 인시던트를 나열합니다.  | 

모든 인시던트를 나열하려면 인수 없이 `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents` 함수를 쿼리합니다. 쿼리는 작업 ID를 반환합니다.

```
SQL> SELECT rdsadmin.rdsadmin_adrci_util.list_adrci_incidents AS task_id FROM DUAL;

TASK_ID
------------------
1590786706158-3126
```

또는 인수 없이 `rdsadmin.rdsadmin_adrci_util.list_adrci_incidents` 함수를 호출하고 출력을 SQL 클라이언트 변수에 저장합니다. 다른 문에서 변수를 사용할 수 있습니다.

```
SQL> VAR task_id VARCHAR2(80);
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents;

PL/SQL procedure successfully completed.
```

로그 파일을 읽으려면 Amazon RDS 프로시저 `rdsadmin.rds_file_util.read_text_file`을 호출합니다. 작업 ID를 파일 이름의 일부로 제공합니다. 다음 출력은 53523, 53522 및 53521이라는 세 가지 인시던트를 보여줍니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
-------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:11:46.193 UTC [INFO ] Listing ADRCI incidents.
2020-05-29 21:11:46.256 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
INCIDENT_ID PROBLEM_KEY                                                 CREATE_TIME
----------- ----------------------------------------------------------- ----------------------------------------
53523       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 2020-05-29 20:15:20.928000 +00:00
53522       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 2020-05-29 20:15:15.247000 +00:00
53521       ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_001 2020-05-29 20:15:06.047000 +00:00
3 rows fetched


2020-05-29 21:11:46.256 UTC [INFO ] The ADRCI incidents were successfully listed.
2020-05-29 21:11:46.256 UTC [INFO ] The task finished successfully.

14 rows selected.
```

특정 인시던트를 나열하려면 `incident_id` 파라미터를 사용하여 ID를 지정합니다. 다음 예제에서는 인시던트 53523에 대한 로그 파일만 쿼리합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_incidents(incident_id=>53523);

PL/SQL procedure successfully completed.

SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
------------------------------------------------------------------------------------------------------------------
2020-05-29 21:15:25.358 UTC [INFO ] Listing ADRCI incidents.
2020-05-29 21:15:25.426 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
INCIDENT_ID          PROBLEM_KEY                                                 CREATE_TIME
-------------------- ----------------------------------------------------------- ---------------------------------
53523                ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 2020-05-29 20:15:20.928000 +00:00
1 rows fetched


2020-05-29 21:15:25.427 UTC [INFO ] The ADRCI incidents were successfully listed.
2020-05-29 21:15:25.427 UTC [INFO ] The task finished successfully.

12 rows selected.
```

## 문제 나열
<a name="Appendix.Oracle.CommonDBATasks.Problems"></a>

Oracle에 대한 진단 문제를 나열하려면 Amazon RDS 함수 `rdsadmin.rdsadmin_adrci_util.list_adrci_problems`를 사용합니다.

기본적으로 이 함수는 가장 최근 문제 50개를 나열합니다.

이 함수는 공통 파라미터 `problem_id` 및 `last`를 사용합니다. 자세한 내용은 [진단 절차에 대한 공통 파라미터](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters) 섹션을 참조하세요.

모든 문제에 대한 작업 ID를 가져오려면 인수 없이 `rdsadmin.rdsadmin_adrci_util.list_adrci_problems` 함수를 호출하고 출력을 SQL 클라이언트 변수에 저장합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems;

PL/SQL procedure successfully completed.
```

로그 파일을 읽으려면 `rdsadmin.rds_file_util.read_text_file` 함수를 호출하여 작업 ID를 파일 이름의 일부로 제공합니다. 다음 출력에서 로그 파일에는 1, 2 및 3이라는 세 가지 문제가 표시됩니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
----------------------------------------------------------------------------------------------------------------------
2020-05-29 21:18:50.764 UTC [INFO ] Listing ADRCI problems.
2020-05-29 21:18:50.829 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
PROBLEM_ID   PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
---------- ----------------------------------------------------------- ------------- ---------------------------------
2          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_003 53523         2020-05-29 20:15:20.928000 +00:00
3          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 53522         2020-05-29 20:15:15.247000 +00:00
1          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_001 53521         2020-05-29 20:15:06.047000 +00:00
3 rows fetched


2020-05-29 21:18:50.829 UTC [INFO ] The ADRCI problems were successfully listed.
2020-05-29 21:18:50.829 UTC [INFO ] The task finished successfully.

14 rows selected.
```

다음 예제에서는 문제 3만 나열합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.list_adrci_problems(problem_id=>3);

PL/SQL procedure successfully completed.
```

문제 3에 대한 로그 파일을 읽으려면 `rdsadmin.rds_file_util.read_text_file`을 호출합니다. 작업 ID를 파일 이름의 일부로 제공합니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
-------------------------------------------------------------------------
2020-05-29 21:19:42.533 UTC [INFO ] Listing ADRCI problems.
2020-05-29 21:19:42.599 UTC [INFO ]
ADR Home = /rdsdbdata/log/diag/rdbms/orcl_a/ORCL:
*************************************************************************
PROBLEM_ID PROBLEM_KEY                                                 LAST_INCIDENT LASTINC_TIME
---------- ----------------------------------------------------------- ------------- ---------------------------------
3          ORA 700 [EVENT_CREATED_INCIDENT] [942] [SIMULATED_ERROR_002 53522         2020-05-29 20:15:15.247000 +00:00
1 rows fetched


2020-05-29 21:19:42.599 UTC [INFO ] The ADRCI problems were successfully listed.
2020-05-29 21:19:42.599 UTC [INFO ] The task finished successfully.

12 rows selected.
```

## 인시던트 패키지 생성
<a name="Appendix.Oracle.CommonDBATasks.IncPackages"></a>

Amazon RDS 함수 `rdsadmin.rdsadmin_adrci_util.create_adrci_package`를 사용하여 인시던트 패키지를 생성할 수 있습니다. 출력은 Oracle Support에 제공할 수 있는.zip 파일입니다.

이 함수는 다음과 같은 공통 파라미터를 사용합니다.
+ `problem_id`
+ `incident_id`

앞의 파라미터 중 하나를 지정해야 합니다. 두 파라미터를 모두 지정하면 `incident_id`가 `problem_id`를 재정의합니다. 자세한 내용은 [진단 절차에 대한 공통 파라미터](#Appendix.Oracle.CommonDBATasks.CommonDiagParameters) 섹션을 참조하세요.

특정 인시던트에 대한 패키지를 생성하려면 `rdsadmin.rdsadmin_adrci_util.create_adrci_package` 파라미터를 사용하는 Amazon RDS 함수 `incident_id`를 호출합니다. 다음 예제에서는 인시던트 53523에 대한 패키지를 생성합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(incident_id=>53523);

PL/SQL procedure successfully completed.
```

로그 파일을 읽으려면 `rdsadmin.rds_file_util.read_text_file`을 호출합니다. 작업 ID를 파일 이름의 일부로 제공할 수 있습니다. 출력은 인시던트 패키지 `ORA700EVE_20200529212043_COM_1.zip`을 생성했음을 보여줍니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
--------------------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:20:43.031 UTC [INFO ] The ADRCI package is being created.
2020-05-29 21:20:47.641 UTC [INFO ] Generated package 1 in file /rdsdbdata/log/trace/ORA700EVE_20200529212043_COM_1.zip, mode complete
2020-05-29 21:20:47.642 UTC [INFO ] The ADRCI package was successfully created.
2020-05-29 21:20:47.642 UTC [INFO ] The task finished successfully.
```

특정 문제에 대한 진단 데이터를 패키징하려면 `problem_id` 파라미터를 사용하여 ID를 지정합니다. 다음 예제에서는 문제 3에 대한 데이터만 패키징합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.create_adrci_package(problem_id=>3);

PL/SQL procedure successfully completed.
```

작업 출력을 읽으려면 `rdsadmin.rds_file_util.read_text_file`을 호출하여 작업 ID를 파일 이름의 일부로 제공합니다. 출력은 인시던트 패키지 `ORA700EVE_20200529212111_COM_1.zip`을 생성했음을 보여줍니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log'));

TEXT
------------------------------------------------------------------------------------------------------------------------------------------------------------
2020-05-29 21:21:11.050 UTC [INFO ] The ADRCI package is being created.
2020-05-29 21:21:15.646 UTC [INFO ] Generated package 2 in file /rdsdbdata/log/trace/ORA700EVE_20200529212111_COM_1.zip, mode complete
2020-05-29 21:21:15.646 UTC [INFO ] The ADRCI package was successfully created.
2020-05-29 21:21:15.646 UTC [INFO ] The task finished successfully.
```

또한 로그 파일을 다운로드할 수 있습니다. 자세한 내용은 [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md) 섹션을 참조하세요.

## 추적 파일 표시
<a name="Appendix.Oracle.CommonDBATasks.ShowTrace"></a>

Amazon RDS 함수 `rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile`을 사용하여 추적 디렉터리 아래에 추적 파일을 나열하고 현재 ADR 홈 아래에 모든 인시던트 디렉터리를 나열할 수 있습니다. 추적 파일 및 인시던트 추적 파일의 내용을 표시할 수도 있습니다.

이 함수는 다음 파라미터를 사용합니다.


****  

| 파라미터 이름 | 데이터 형식 | 유효한 값 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | --- | 
|  `filename`  |  varchar2  | 유효한 추적 파일 이름 |  Null  |  아니요  |  값이 null이면 이 함수는 모든 추적 파일을 표시합니다. 값이 null이 아니면 이 함수는 지정된 파일을 표시합니다.  | 

추적 파일을 표시하려면 Amazon RDS 함수 `rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile`을 호출합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile;

PL/SQL procedure successfully completed.
```

추적 파일 이름을 나열하려면 Amazon RDS 프로시저 `rdsadmin.rds_file_util.read_text_file`을 호출하여 작업 ID를 파일 이름의 일부로 제공합니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')) WHERE TEXT LIKE '%/alert_%';

TEXT
---------------------------------------------------------------
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-28
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-27
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-26
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-25
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-24
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-23
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-22
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log.2020-05-21
     diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log

9 rows selected.
```

다음 예제에서는 `alert_ORCL.log`에 대한 출력을 생성합니다.

```
SQL> EXEC :task_id := rdsadmin.rdsadmin_adrci_util.show_adrci_tracefile('diag/rdbms/orcl_a/ORCL/trace/alert_ORCL.log');

PL/SQL procedure successfully completed.
```

로그 파일을 읽으려면 `rdsadmin.rds_file_util.read_text_file`을 호출합니다. 작업 ID를 파일 이름의 일부로 제공합니다. 출력에는 alert\$1ORCL.log의 처음 10줄이 표시됩니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'dbtask-'||:task_id||'.log')) WHERE ROWNUM <= 10;

TEXT
-----------------------------------------------------------------------------------------
2020-05-29 21:24:02.083 UTC [INFO ] The trace files are being displayed.
2020-05-29 21:24:02.128 UTC [INFO ] Thu May 28 23:59:10 2020
Thread 1 advanced to log sequence 2048 (LGWR switch)
  Current log# 3 seq# 2048 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_3_hbl2p8xs_.log
Thu May 28 23:59:10 2020
Archived Log entry 2037 added for thread 1 sequence 2047 ID 0x5d62ce43 dest 1:
Fri May 29 00:04:10 2020
Thread 1 advanced to log sequence 2049 (LGWR switch)
  Current log# 4 seq# 2049 mem# 0: /rdsdbdata/db/ORCL_A/onlinelog/o1_mf_4_hbl2qgmh_.log
Fri May 29 00:04:10 2020

10 rows selected.
```

또한 로그 파일을 다운로드할 수 있습니다. 자세한 내용은 [데이터베이스 로그 파일 다운로드](USER_LogAccess.Procedural.Downloading.md) 섹션을 참조하세요.

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

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

**Topics**
+ [

## 메인 데이터 스토리지 공간에서 디렉터리 생성 및 삭제
](#Appendix.Oracle.CommonDBATasks.NewDirectories)
+ [

## DB 인스턴스 디렉터리의 파일 목록 표시
](#Appendix.Oracle.CommonDBATasks.ListDirectories)
+ [

## DB 인스턴스 디렉터리의 파일 목록 읽기
](#Appendix.Oracle.CommonDBATasks.ReadingFiles)
+ [

## Opatch 파일 액세스
](#Appendix.Oracle.CommonDBATasks.accessing-opatch-files)
+ [

## Advisor 작업 관리
](#Appendix.Oracle.CommonDBATasks.managing-advisor-tasks)
+ [

# 테이블스페이스 전송
](rdsadmin_transport_util.md)

## 메인 데이터 스토리지 공간에서 디렉터리 생성 및 삭제
<a name="Appendix.Oracle.CommonDBATasks.NewDirectories"></a>

디렉터리를 생성하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.create_directory`를 사용합니다. 디렉터리를 최대 10,000개까지 만들어 메인 데이터 스토리지 공간에 저장할 수 있습니다. 디렉터리를 삭제하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.drop_directory`를 사용합니다.

`create_directory` 및 `drop_directory` 프로시저에는 다음과 같은 필수 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  VARCHAR2  |  —  |  예  |  디렉터리의 이름입니다.  | 

다음 예제에서는 `PRODUCT_DESCRIPTIONS`라는 새 디렉터리를 생성합니다.

```
EXEC rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'product_descriptions');
```

데이터 딕셔너리는 디렉터리 이름을 대문자로 저장합니다. `DBA_DIRECTORIES`에 쿼리를 실행하면 디렉터리 목록을 표시할 수 있습니다. 실제 호스트 경로 이름은 시스템이 자동으로 선택합니다. 다음은 `PRODUCT_DESCRIPTIONS`라는 디렉터리의 디렉터리 경로를 얻는 예제입니다.

```
SELECT DIRECTORY_PATH 
  FROM DBA_DIRECTORIES 
 WHERE DIRECTORY_NAME='PRODUCT_DESCRIPTIONS';
        
DIRECTORY_PATH
----------------------------------------
/rdsdbdata/userdirs/01
```

DB 인스턴스의 마스터 사용자 이름은 새로운 디렉터리에서도 읽기/쓰기 권한이 있으며, 다른 사용자에게 액세스 권한을 부여할 수도 있습니다. `EXECUTE` 권한은 DB 인스턴스의 디렉터리에 사용할 수 없습니다. 디렉터리는 메인 데이터 스토리지 공간에 생성되어 일정 공간과 I/O 대역폭을 사용합니다.

다음 예제에서는 `PRODUCT_DESCRIPTIONS`라는 디렉터리를 삭제합니다.

```
EXEC rdsadmin.rdsadmin_util.drop_directory(p_directory_name => 'product_descriptions');
```

**참고**  
Oracle SQL 명령 `DROP DIRECTORY`를 사용하여 디렉터리를 삭제할 수도 있습니다.

디렉터리를 삭제해도 그 내용은 제거되지 않습니다. `rdsadmin.rdsadmin_util.create_directory` 프로시저가 경로 이름을 재사용하므로 삭제된 디렉터리의 파일이 새로 생성된 디렉터리에 나타날 수도 있습니다. 디렉터리를 삭제하기 전에 `UTL_FILE.FREMOVE`를 사용하여 디렉터리에서 파일을 제거하는 것이 좋습니다. 자세한 내용은 Oracle 설명서의 [FREMOVE 프로시저](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924)를 참조하세요.

## DB 인스턴스 디렉터리의 파일 목록 표시
<a name="Appendix.Oracle.CommonDBATasks.ListDirectories"></a>

디렉터리의 파일을 나열하려면 Amazon RDS 프로시저 `rdsadmin.rds_file_util.listdir`을 사용합니다. Oracle 복제본의 경우 이 프로시저가 지원되지 않습니다. `listdir` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_directory`  |  varchar2  |  —  |  예  |  목록을 표시할 디렉터리의 이름입니다.  | 

다음 예에서는 사용자 `rdsadmin`에게 디렉터리 `PRODUCT_DESCRIPTIONS`에 대한 읽기/쓰기 권한을 부여한 다음 이 디렉터리에 있는 파일을 나열합니다.

```
GRANT READ,WRITE ON DIRECTORY PRODUCT_DESCRIPTIONS TO rdsadmin;
SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => 'PRODUCT_DESCRIPTIONS'));
```

## DB 인스턴스 디렉터리의 파일 목록 읽기
<a name="Appendix.Oracle.CommonDBATasks.ReadingFiles"></a>

텍스트 파일을 읽으려면 Amazon RDS 프로시저 `rdsadmin.rds_file_util.read_text_file`을 사용합니다. `read_text_file` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_directory`  |  varchar2  |  —  |  예  |  파일이 포함된 디렉터리의 이름입니다.  | 
|  `p_filename`  |  varchar2  |  —  |  예  |  읽을 파일의 이름입니다.  | 

다음 예제에서는 `rice.txt` 디렉터리에 `PRODUCT_DESCRIPTIONS` 파일을 생성합니다.

```
declare
  fh sys.utl_file.file_type;
begin
  fh := utl_file.fopen(location=>'PRODUCT_DESCRIPTIONS', filename=>'rice.txt', open_mode=>'w');
  utl_file.put(file=>fh, buffer=>'AnyCompany brown rice, 15 lbs');
  utl_file.fclose(file=>fh);
end;
/
```

다음 예제에서는 `rice.txt` 디렉터리에서 `PRODUCT_DESCRIPTIONS` 파일을 읽습니다.

```
SELECT * FROM TABLE
    (rdsadmin.rds_file_util.read_text_file(
        p_directory => 'PRODUCT_DESCRIPTIONS',
        p_filename  => 'rice.txt'));
```

## Opatch 파일 액세스
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files"></a>

Opatch는 Oracle 소프트웨어에 패치를 적용하고 롤백할 수 있는 Oracle 유틸리티입니다. 데이터베이스에 적용된 패치를 확인하는 Oracle 메커니즘이 `opatch lsinventory` 명령입니다. BYOL(Bring Your Own Licence) 고객에 대한 서비스 요청을 개시하기 위해 Oracle Support는 해당 `lsinventory` 파일 및 Opatch 에서 생성된 `lsinventory_detail` 파일을 요청합니다.

관리형 서비스 환경을 제공하기 위해 Amazon RDS는 Opatch에 대한 shell 액세스를 제공하지 않습니다. 그 대신, BDUMP 디렉터리의 `lsinventory-dbv.txt`에는 현재 엔진 버전과 관련한 패치 정보가 포함되어 있습니다. 마이너 또는 메이저 업그레이드를 수행하면 Amazon RDS가 패치를 적용한 후 1 시간 이내에 `lsinventory-dbv.txt`를 업데이트합니다. 적용된 패치를 확인하려면 `lsinventory-dbv.txt`를 확인하세요. 이 작업은 `opatch lsinventory` 명령을 실행하는 것과 유사합니다.

**참고**  
이 단원의 예제에서는 BDUMP 디렉터리의 이름이 `BDUMP`라고 가정합니다. 읽기 전용 복제본에서는 BDUMP 디렉터리 이름이 다릅니다. 읽기 전용 복제본에서 `V$DATABASE.DB_UNIQUE_NAME`을 쿼리하여 BDUMP 이름을 가져오는 방법에 대한 자세한 내용은 [파일 나열](USER_LogAccess.Concepts.Oracle.md#USER_LogAccess.Concepts.Oracle.WorkingWithTracefiles.ViewingBackgroundDumpDest) 단원을 참조하세요.

인벤토리 파일은 Amazon RDS 명명 규칙 `lsinventory-dbv.txt` 및 `lsinventory_detail-dbv.txt`를 사용합니다. 여기서 *dbv*는 DB 버전의 전체 이름입니다. `lsinventory-dbv.txt` 파일은 모든 DB 버전에서 사용할 수 있습니다. 해당 `lsinventory_detail-dbv.txt`는 19.0.0.0, ru-2020-01.rur-2020-01.r1 이상 버전에서 사용할 수 있습니다.

예를 들어 DB 버전이 19.0.0.0.ru-2021-07.rur-2021-07.r1인 경우 인벤토리 파일의 이름은 다음과 같습니다.

```
lsinventory-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt
lsinventory_detail-19.0.0.0.ru-2021-07.rur-2021-07.r1.txt
```

DB 엔진의 현재 버전과 일치하는 파일을 다운로드해야 합니다.

### 콘솔
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.console"></a>

**콘솔을 사용하여 인벤토리 파일을 다운로드하려면**

1. [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)에서 Amazon RDS 콘솔을 엽니다.

1. 탐색 창에서 **데이터베이스**를 선택합니다.

1. 보고자 하는 로그 파일을 보유한 DB 인스턴스의 이름을 선택합니다.

1. **로그 및 이벤트** 탭을 선택합니다.

1. 아래로 스크롤하여 [**Logs**] 섹션을 찾습니다.

1. **로그** 섹션에서 `lsinventory`를 검색합니다.

1. 액세스할 파일을 선택한 다음 **다운로드**를 선택합니다.

### SQL
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.sql"></a>

SQL 클라이언트에서 `lsinventory-dbv.txt`를 읽으려면 `SELECT` 문을 사용하면 됩니다. 이 기술에서는 `rdsadmin` 함수인 `rdsadmin.rds_file_util.read_text_file` 또는 `rdsadmin.tracefile_listing`을 사용합니다.

다음 예제 쿼리에서 *dbv*를 Oracle DB 버전으로 바꿉니다. 예를 들어, DB 버전은 19.0.0.0.ru-2020-04.rur-2020-04.r1일 수 있습니다.

```
SELECT text
FROM   TABLE(rdsadmin.rds_file_util.read_text_file('BDUMP', 'lsinventory-dbv.txt'));
```

### PL/SQL
<a name="Appendix.Oracle.CommonDBATasks.accessing-opatch-files.plsql"></a>

SQL 클라이언트에서 `lsinventory-dbv.txt`를 읽으려면 PL/SQL 프로그램을 작성하면 됩니다. 이 프로그램은 `utl_file`을 사용하여 파일을 읽고 `dbms_output`을 사용하여 인쇄합니다. 이는 Oracle에서 제공하는 패키지입니다.

다음 예제 프로그램에서 *dbv*를 Oracle DB 버전으로 바꿉니다. 예를 들어, DB 버전은 19.0.0.0.ru-2020-04.rur-2020-04.r1일 수 있습니다.

```
SET SERVEROUTPUT ON
DECLARE
  v_file              SYS.UTL_FILE.FILE_TYPE;
  v_line              VARCHAR2(1000);
  v_oracle_home_type  VARCHAR2(1000);
  c_directory         VARCHAR2(30) := 'BDUMP';
  c_output_file       VARCHAR2(30) := 'lsinventory-dbv.txt';
BEGIN
  v_file := SYS.UTL_FILE.FOPEN(c_directory, c_output_file, 'r');
  LOOP
    BEGIN
      SYS.UTL_FILE.GET_LINE(v_file, v_line,1000);
      DBMS_OUTPUT.PUT_LINE(v_line);
    EXCEPTION
      WHEN no_data_found THEN
        EXIT;
    END;
  END LOOP;
END;
/
```

또는 `rdsadmin.tracefile_listing`을 쿼리하고 출력을 파일로 스풀링합니다. 다음 예제에서는 출력을 `/tmp/tracefile.txt`로 스풀링합니다.

```
SPOOL /tmp/tracefile.txt
SELECT * 
FROM   rdsadmin.tracefile_listing 
WHERE  FILENAME LIKE 'lsinventory%';
SPOOL OFF;
```

## Advisor 작업 관리
<a name="Appendix.Oracle.CommonDBATasks.managing-advisor-tasks"></a>

Oracle Database에는 다양한 Advisor가 포함되어 있습니다. 각 Advisor는 자동화 및 수동 작업을 지원합니다. `rdsadmin.rdsadmin_util` 패키지의 프로시저를 사용하여 일부 Advisor 작업을 관리할 수 있습니다.

Advisor 작업 프로시저는 다음 엔진 버전에서 사용할 수 있습니다.
+ Oracle Database 21c(21.0.0)
+ 19.0.0.0.ru-2021-01.rur-2021-01.r1 이상의 Oracle Database 19c 버전 

  자세한 내용은 *Amazon RDS for Oracle 릴리스 정보*의 [버전 19.0.0.0.ru-2021-01.rur-2021-01.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2021-01.rur-2021-01.r1)을 참조하세요.

**Topics**
+ [

### Advisor 작업에 대한 파라미터 설정
](#Appendix.Oracle.CommonDBATasks.setting-task-parameters)
+ [

### AUTO\$1STATS\$1ADVISOR\$1TASK 비활성화
](#Appendix.Oracle.CommonDBATasks.dropping-advisor-task)
+ [

### AUTO\$1STATS\$1ADVISOR\$1TASK 다시 활성화
](#Appendix.Oracle.CommonDBATasks.recreating-advisor-task)

### Advisor 작업에 대한 파라미터 설정
<a name="Appendix.Oracle.CommonDBATasks.setting-task-parameters"></a>

일부 Advisor 작업에 대한 파라미터를 설정하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.advisor_task_set_parameter`를 사용합니다. `advisor_task_set_parameter` 프로시저에는 다음과 같은 파라미터가 있습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_task_name`  |  varchar2  |  —  |  예  |  파라미터를 변경할 Advisor 작업의 이름입니다. 유효한 값은 다음과 같습니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.Misc.html)  | 
|  `p_parameter`  |  varchar2  |  —  |  예  |  작업 파라미터의 이름입니다. Advisor 작업에 유요한 파라미터를 찾으려면 다음 쿼리를 실행합니다. *p\$1task\$1name*을 `p_task_name`의 유효한 값으로 바꿉니다. <pre>COL PARAMETER_NAME FORMAT a30<br />COL PARAMETER_VALUE FORMAT a30<br />SELECT PARAMETER_NAME, PARAMETER_VALUE<br />FROM DBA_ADVISOR_PARAMETERS<br />WHERE TASK_NAME='p_task_name'<br />AND PARAMETER_VALUE != 'UNUSED'<br />ORDER BY PARAMETER_NAME;</pre>  | 
|  `p_value`  |  varchar2  |  —  |  예  |  작업 파라미터의 값입니다. 작업 파라미터의 유효한 값을 찾으려면 다음 쿼리를 실행합니다. *p\$1task\$1name*을 `p_task_name`의 유효한 값으로 바꿉니다. <pre>COL PARAMETER_NAME FORMAT a30<br />COL PARAMETER_VALUE FORMAT a30<br />SELECT PARAMETER_NAME, PARAMETER_VALUE<br />FROM DBA_ADVISOR_PARAMETERS<br />WHERE TASK_NAME='p_task_name'<br />AND PARAMETER_VALUE != 'UNUSED'<br />ORDER BY PARAMETER_NAME;</pre>  | 

다음 PL/SQL 프로그램은 `ACCEPT_PLANS`에 대해 `FALSE`를 `SYS_AUTO_SPM_EVOLVE_TASK`로 설정합니다. SQL Plan Management 자동화 작업은 계획을 확인하고 결과에 대한 보고서를 생성하지만 계획을 자동으로 개선하지는 않습니다. 보고서를 사용하여 새 SQL 계획 기준을 식별하고 수동으로 적용할 수 있습니다.

```
BEGIN 
  rdsadmin.rdsadmin_util.advisor_task_set_parameter(
    p_task_name => 'SYS_AUTO_SPM_EVOLVE_TASK',
    p_parameter => 'ACCEPT_PLANS',
    p_value     => 'FALSE');
END;
```

다음 PL/SQL 프로그램은 `EXECUTION_DAYS_TO_EXPIRE`에 대해 `10`를 `AUTO_STATS_ADVISOR_TASK`로 설정합니다. 미리 정의된 작업 `AUTO_STATS_ADVISOR_TASK`는 유지 관리 기간 동안 하루에 한 번 자동으로 실행됩니다. 이 예에서는 작업 실행의 보존 기간을 10일로 설정합니다.

```
BEGIN 
  rdsadmin.rdsadmin_util.advisor_task_set_parameter(
    p_task_name => 'AUTO_STATS_ADVISOR_TASK',
    p_parameter => 'EXECUTION_DAYS_TO_EXPIRE',
    p_value     => '10');
END;
```

### AUTO\$1STATS\$1ADVISOR\$1TASK 비활성화
<a name="Appendix.Oracle.CommonDBATasks.dropping-advisor-task"></a>

`AUTO_STATS_ADVISOR_TASK`를 비활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.advisor_task_drop`을 사용합니다. `advisor_task_drop` 프로시저는 다음 파라미터를 받습니다.


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_task_name`  |  varchar2  |  —  |  예  |  비활성화할 Advisor 작업의 이름입니다. 유일한 유효 값은 `AUTO_STATS_ADVISOR_TASK`입니다.  | 

다음 명령은 `AUTO_STATS_ADVISOR_TASK`를 삭제합니다.

```
EXEC rdsadmin.rdsadmin_util.advisor_task_drop('AUTO_STATS_ADVISOR_TASK')
```

`rdsadmin.rdsadmin_util.dbms_stats_init`를 사용하여 `AUTO_STATS_ADVISOR_TASK`를 다시 활성화할 수 있습니다.

### AUTO\$1STATS\$1ADVISOR\$1TASK 다시 활성화
<a name="Appendix.Oracle.CommonDBATasks.recreating-advisor-task"></a>

`AUTO_STATS_ADVISOR_TASK`를 다시 활성화하려면 Amazon RDS 프로시저 `rdsadmin.rdsadmin_util.dbms_stats_init`를 사용합니다. `dbms_stats_init` 프로시저에는 파라미터가 없습니다.

다음 명령은 `AUTO_STATS_ADVISOR_TASK`를 다시 활성화합니다.

```
EXEC rdsadmin.rdsadmin_util.dbms_stats_init()
```

# 테이블스페이스 전송
<a name="rdsadmin_transport_util"></a>

Amazon RDS 패키지 `rdsadmin.rdsadmin_transport_util`을 사용하여 온프레미스 Oracle 데이터베이스의 테이블스페이스 세트를 RDS for Oracle DB 인스턴스로 복사합니다. 물리적 수준에서 전송 가능한 테이블스페이스 기능은 소스 데이터 파일과 메타데이터 파일을 대상 인스턴스에 점진적으로 복사합니다. Amazon EFS 또는 Amazon S3를 사용하여 파일을 전송할 수 있습니다. 자세한 내용은 [Oracle 전송 가능한 테이블스페이스를 사용한 마이그레이션](oracle-migrating-tts.md) 단원을 참조하십시오.

**Topics**
+ [

# 전송된 테이블스페이스를 DB 인스턴스로 가져오기
](rdsadmin_transport_util_import_xtts_tablespaces.md)
+ [

# 전송 가능한 테이블스페이스를 DB 인스턴스로 가져오기
](rdsadmin_transport_util_import_xtts_metadata.md)
+ [

# 테이블스페이스 가져오기 후 분리된 파일 나열
](rdsadmin_transport_util_list_xtts_orphan_files.md)
+ [

# 테이블스페이스 가져오기 후 분리된 파일 삭제
](rdsadmin_transport_util_cleanup_incomplete_xtts_import.md)

# 전송된 테이블스페이스를 DB 인스턴스로 가져오기
<a name="rdsadmin_transport_util_import_xtts_tablespaces"></a>

`rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces` 프로시저를 사용하여 원본 DB 인스턴스에서 이전에 내보낸 테이블스페이스를 복원합니다. 전송 단계에서는 읽기 전용 테이블스페이스를 백업하고 Data Pump 메타데이터를 내보내고 이러한 파일을 대상 DB 인스턴스로 전송하고 테이블스페이스를 가져옵니다. 자세한 내용은 [4단계: 테이블스페이스 전송](oracle-migrating-tts.md#oracle-migrating-tts.final-br-phase) 섹션을 참조하세요.

## 구문
<a name="rdsadmin_transport_util_import_xtts_tablespaces-syntax"></a>

```
FUNCTION import_xtts_tablespaces(
    p_tablespace_list IN CLOB,
    p_directory_name  IN VARCHAR2,
    p_platform_id     IN NUMBER DEFAULT 13,
    p_parallel        IN INTEGER DEFAULT 0) RETURN VARCHAR2;
```

## 파라미터
<a name="rdsadmin_transport_util_import_xtts_tablespaces-parameters"></a>


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_tablespace_list`  |  `CLOB`  |  —  |  예  |  가져올 테이블스페이스 목록입니다.  | 
|  `p_directory_name`  |  `VARCHAR2`  |  —  |  예  | 테이블스페이스 백업이 포함된 디렉터리입니다. | 
|  `p_platform_id`  |  `NUMBER`  |  `13`  |  아니요  |  백업 단계에서 지정한 것과 일치하는 플랫폼 ID를 입력합니다. 플랫폼 목록을 찾으려면 `V$TRANSPORTABLE_PLATFORM`을 쿼리하세요. 기본 플랫폼은 little endian인 Linux x86 64비트입니다.  | 
|  `p_parallel`  |  `INTEGER`  |  `0`  |  아니요  |  병렬 처리의 정도입니다. 기본적으로 병렬 처리는 비활성화됩니다.  | 

## 예제
<a name="rdsadmin_transport_util_import_xtts_tablespaces-examples"></a>

다음 예에서는 *DATA\$1PUMP\$1DIR* 디렉터리에서 *TBS1*, *TBS2* 및 *TBS3* 테이블스페이스를 가져옵니다. 소스 플랫폼은 플랫폼 ID가 `6`인 AIX 기반 시스템(64비트)입니다. `V$TRANSPORTABLE_PLATFORM` 쿼리를 통해 플랫폼 ID를 찾을 수 있습니다.

```
VAR task_id CLOB

BEGIN
  :task_id:=rdsadmin.rdsadmin_transport_util.import_xtts_tablespaces(
        'TBS1,TBS2,TBS3',
        'DATA_PUMP_DIR',
        p_platform_id => 6);
END;
/

PRINT task_id
```

# 전송 가능한 테이블스페이스를 DB 인스턴스로 가져오기
<a name="rdsadmin_transport_util_import_xtts_metadata"></a>

`rdsadmin.rdsadmin_transport_util.import_xtts_metadata` 프로시저를 사용하여 전송 가능한 테이블스페이스 메타데이터를 RDS for Oracle DB 인스턴스로 가져옵니다. 작업 중에 메타데이터 가져오기 상태가 `rdsadmin.rds_xtts_operation_info` 테이블에 표시됩니다. 자세한 내용은 [5단계: 대상 DB 인스턴스에 테이블스페이스 메타데이터 가져오기](oracle-migrating-tts.md#oracle-migrating-tts.transport.import-dmp) 섹션을 참조하세요.

## 구문
<a name="rdsadmin_transport_util_import_xtts_metadata-syntax"></a>

```
PROCEDURE import_xtts_metadata(
    p_datapump_metadata_file IN SYS.DBA_DATA_FILES.FILE_NAME%TYPE,
    p_directory_name         IN VARCHAR2,
    p_exclude_stats          IN BOOLEAN DEFAULT FALSE,
    p_remap_tablespace_list  IN CLOB DEFAULT NULL,
    p_remap_user_list        IN CLOB DEFAULT NULL);
```

## 파라미터
<a name="rdsadmin_transport_util_import_xtts_metadata-parameters"></a>


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_datapump_metadata_file`  |  `SYS.DBA_DATA_FILES.FILE_NAME%TYPE`  |  —  |  예  |  전송 가능한 테이블스페이스에 대한 메타데이터가 포함된 Oracle Data Pump 파일의 이름입니다.  | 
|  `p_directory_name`  |  `VARCHAR2`  |  —  |  예  |  Data Pump 파일이 포함된 디렉터리입니다.  | 
|  `p_exclude_stats`  |  `BOOLEAN`  |  `FALSE`  |  아니요  |  통계 제외 여부를 나타내는 플래그입니다.  | 
|  `p_remap_tablespace_list`  |  `CLOB`  |  NULL  |  아니요  |  메타데이터를 가져오는 동안 재매핑할 테이블스페이스 목록입니다. `from_tbs:to_tbs` 형식을 사용합니다. 예를 들어, `users:user_data`를 지정합니다.  | 
|  `p_remap_user_list`  |  `CLOB`  |  NULL  |  아니요  |  메타데이터를 가져오는 동안 재매핑할 사용자 스키마 목록입니다. `from_schema_name:to_schema_name` 형식을 사용합니다. 예를 들어, `hr:human_resources`를 지정합니다.  | 

## 예제
<a name="rdsadmin_transport_util_import_xtts_metadata-examples"></a>

이 예시에서는 *DATA\$1PUMP\$1DIR*에 위치한 *xttdump.dmp* 파일에서 테이블스페이스 메타데이터를 가져옵니다.

```
BEGIN
  rdsadmin.rdsadmin_transport_util.import_xtts_metadata('xttdump.dmp','DATA_PUMP_DIR');
END;
/
```

# 테이블스페이스 가져오기 후 분리된 파일 나열
<a name="rdsadmin_transport_util_list_xtts_orphan_files"></a>

`rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 프로시저를 사용하여 테이블스페이스 가져오기 후 분리된 데이터 파일을 나열합니다. 데이터 파일을 식별한 후 `rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import`를 호출하여 삭제할 수 있습니다.

## 구문
<a name="rdsadmin_transport_util_list_xtts_orphan_files-syntax"></a>

```
FUNCTION list_xtts_orphan_files RETURN xtts_orphan_files_list_t PIPELINED;
```

## 예제
<a name="rdsadmin_transport_util_list_xtts_orphan_files-examples"></a>

다음 예에서는 `rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 프로시저를 호출합니다. 출력에는 분리된 두 개의 데이터 파일이 표시됩니다.

```
SQL> SELECT * FROM TABLE(rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files);

FILENAME       FILESIZE
-------------- ---------
datafile_7.dbf 104865792
datafile_8.dbf 104865792
```

# 테이블스페이스 가져오기 후 분리된 파일 삭제
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import"></a>

`rdsadmin.rdsadmin_transport_util.list_xtts_orphan_files` 프로시저를 사용하여 테이블스페이스 가져오기 후 분리된 데이터 파일을 삭제합니다. 이 명령을 실행하면 `rds-xtts-delete_xtts_orphaned_files-YYYY-MM-DD.HH24-MI-SS.FF.log` 이름 형식을 사용하는 로그 파일이 `BDUMP` 디렉터리에 생성됩니다. `rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import` 프로시저를 사용하여 분리된 파일을 찾습니다. `rdsadmin.rds_file_util.read_text_file` 프로시저를 호출하여 로그 파일을 읽을 수 있습니다. 자세한 내용은 [6단계: 남은 파일 정리](oracle-migrating-tts.md#oracle-migrating-tts.cleanup) 섹션을 참조하세요.

## 구문
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import-syntax"></a>

```
PROCEDURE cleanup_incomplete_xtts_import(
    p_directory_name IN VARCHAR2);
```

## 파라미터
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import-parameters"></a>


****  

| 파라미터 이름 | 데이터 형식 | 기본값 | 필수 | 설명 | 
| --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  `VARCHAR2`  |  —  |  예  |  분리된 데이터 파일이 포함된 디렉터리입니다.  | 

## 예제
<a name="rdsadmin_transport_util_cleanup_incomplete_xtts_import-examples"></a>

다음 예시에서는 *DATA\$1PUMP\$1DIR*에서 분리된 데이터 파일을 삭제합니다.

```
BEGIN
  rdsadmin.rdsadmin_transport_util.cleanup_incomplete_xtts_import('DATA_PUMP_DIR');
END;
/
```

다음 예시에서는 이전 명령으로 생성된 로그 파일을 읽습니다.

```
SELECT * 
FROM TABLE(rdsadmin.rds_file_util.read_text_file(
       p_directory => 'BDUMP',
       p_filename  => 'rds-xtts-delete_xtts_orphaned_files-2023-06-01.09-33-11.868894000.log'));

TEXT
--------------------------------------------------------------------------------
orphan transported datafile datafile_7.dbf deleted.
orphan transported datafile datafile_8.dbf deleted.
```