

# 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` 파일이 데이터로 채워집니다.