Amazon RDS for Oracle DB 인스턴스의 테이블스페이스 크기를 조정하려면 어떻게 해야 합니까?
Amazon Relational Database Service(Amazon RDS) for Oracle DB 인스턴스의 테이블스페이스를 관리하거나 크기를 조정하는 방법을 알고 싶습니다.
간략한 설명
Amazon RDS for Oracle 인스턴스의 기본 테이블스페이스 유형은 bigfile입니다. RDS for Oracle DB 인스턴스에 smallfile 테이블스페이스를 사용하는 것은 모범 사례가 아닙니다.
smallfile 테이블스페이스를 사용하는 RDS for Oracle DB 인스턴스에는 다음과 같은 제한 사항이 있습니다.
- ALTER DATABASE 명령을 실행하여 데이터 파일 구성의 크기를 조정하거나 변경할 수 없습니다. 자세한 내용은 RDS for Oracle의 DBA 권한 제한 사항을 참조하십시오.
- 데이터베이스의 최대 데이터 파일 수를 정의하려면 db_files 파라미터를 수동으로 관리해야 합니다. 데이터 파일 수가 할당량에 가까우면 db_files 파라미터를 변경해야 합니다.
테이블스페이스를 만들고 데이터 파일 크기를 지정하지 않으면 Amazon RDS는 기본적으로 AUTOEXTEND ON을 활성화합니다. bigfile 테이블스페이스의 최대 크기는 16TiB입니다. 테이블스페이스에 데이터를 삽입하면 테이블스페이스 크기가 구성한 최대 할당량 또는 할당된 스토리지의 최대 할당량까지 증가합니다.
RDS for Oracle DB 인스턴스에 할당된 스토리지가 가득 차면 인스턴스가 STORAGE_FULL 상태로 전환되고 테이블스페이스를 확장할 수 없습니다. 이 문제를 해결하려면 인스턴스에 스토리지 공간을 추가해야 합니다. 자세한 내용은 Amazon RDS DB 인스턴스의 스토리지가 부족할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.
테이블스페이스에서 데이터를 삭제할 때 테이블스페이스의 크기는 줄어들지 않습니다. 새 데이터를 삽입하면 여유 블록을 재사용할 수 있습니다. 사용하지 않는 공간을 확보하려면 테이블스페이스의 크기를 수동으로 조정해야 합니다.
해결 방법
참고: 다음 명령에서 TABLESPACE_NAME 또는 example-tablespace를 테이블스페이스의 이름으로 바꾸십시오.
테이블스페이스 구성 확인
테이블스페이스 유형을 식별하려면 다음 쿼리를 실행합니다.
SELECT TABLESPACE_NAME, CONTENTS, BIGFILE FROM DBA_TABLESPACES;
위 명령은 다음과 같은 출력을 반환할 수 있습니다.
- BIGFILE 열의 값은 BIGFILE의 경우 YES, SMALL FILE의 경우 NO일 수 있습니다.
- CONTENTS 열은 영구, 실행 취소 또는 임시일 수 있습니다.
데이터 파일의 크기, 구성한 최대 할당량, autoextend 기능의 활성화 여부를 확인하려면 다음 쿼리 중 하나를 실행합니다.
영구 및 실행 취소 테이블스페이스의 경우 다음 쿼리를 실행합니다.
SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*1024*1024),2) SUM_GB, ROUND(MAXBYTES/(1024*1024*1024),2) MAX_GB, AUTOEXTENSIBLE FROM DBA_DATA_FILES GROUP BY TABLESPACE_NAME, MAXBYTES,AUTOEXTENSIBLE;
임시 테이블스페이스의 경우 다음 쿼리를 실행합니다.
SELECT TABLESPACE_NAME, ROUND(SUM(BYTES)/(1024*1024*1024),2) SUM_GB, ROUND(MAXBYTES/(1024*1024*1024),2) MAX_GB, AUTOEXTENSIBLE FROM DBA_TEMP_FILES GROUP BY TABLESPACE_NAME, MAXBYTES,AUTOEXTENSIBLE;
위 명령은 다음과 같은 출력을 반환할 수 있습니다.
- autoextend 기능이 활성화되어 있지 않은 경우 MAX_GB 값은 0입니다.
- 테이블스페이스 유형이 smallfile인 경우 MAX_GB 값은 테이블스페이스를 만드는 데 사용한 블록 크기에 따라 달라집니다. 예를 들어 블록 크기가 8K인 경우 MAX_GB 값은 32GB입니다. 자세한 내용은 Oracle 웹 사이트의 비표준 블록 크기를 참조하십시오.
- 테이블스페이스 유형이 bigfile인 경우 MAX_GB 값은 32TB로 표시됩니다. RDS for Oracle DB 인스턴스에 있는 단일 파일의 최대 크기는 16TiB입니다.
DDL(데이터 설명 언어)에서 테이블스페이스에 대한 필수 정보를 검색하려면 다음 명령을 실행합니다.
SET LINESIZE 400;
SET LONG 99999;
SELECT DBMS_METADATA.GET_DDL('TABLESPACE','example-tablespace') FROM DUAL;
테이블스페이스 크기 늘리기
autoextend 기능을 활성화하면 테이블스페이스의 크기를 늘릴 필요가 없습니다.
그러나 autoextend 기능을 활성화한 다음, 테이블스페이스의 크기를 조정하는 경우 크기를 조정할 때 다음 작업을 수행해야 합니다.
-
bigfile 테이블스페이스의 경우 다음 명령을 실행하여 테이블스페이스의 크기를 조정합니다.
ALTER TABLESPACE example-tablespace RESIZE 50G;참고: 크기를 킬로바이트, 메가바이트, 기가바이트 또는 테라바이트로 지정합니다. bigfile 테이블스페이스에는 단일 데이터 파일이 있으며 ALTER TABLESPACE 명령은 테이블스페이스에 속한 데이터 파일의 크기를 조정합니다. 자세한 내용은 Oracle 웹 사이트의 ALTER TABLESPACE를 참조하십시오.
-
smallfile 테이블스페이스의 경우 다음 명령을 실행하여 테이블스페이스 크기를 늘리도록 데이터 파일을 추가합니다.
ALTER TABLESPACE example-tablespace ADD DATAFILE SIZE 1G AUTOEXTEND ON; -
smallfile 테이블스페이스의 경우 다음 명령을 실행하여 원본 데이터 파일의 크기를 조정할 수 있도록 rdsadmin_util.resize_datafile 프로시저를 사용합니다.
select file_id,file_name, bytes/1024/1024/1024 gb from dba_data_files where tablespace_name='TEST';참고: TEST를 테이블스페이스 이름으로 바꾸십시오.
프로시저 출력 예시:
FILE_ID FILE_NAME GB ======================================================================= 6 /rdsdbdata/db/TESTDB_A/datafile/o1_mf_test_m03xlfq8_.dbf 1 SQL> exec rdsadmin.rdsadmin_util.resize_datafile(6,'2G') PL/SQL procedure successfully completed. SQL> select file_id,file_name, bytes/1024/1024/1024 gb from dba_data_files where tablespace_name='TEST'; FILE_ID FILE_NAME GB ========================================================================= 6 /rdsdbdata/db/TESTDB_A/datafile/o1_mf_test_m03xlfq8_.dbf 2
smallfile 테이블스페이스의 크기 줄이기
smallfile 테이블스페이스의 크기를 줄이려면 다음 단계를 완료하십시오.
- rdsadmin_util.resize_datafile 프로시저를 사용합니다.
참고: 데이터 파일 크기는 데이터 파일의 상위 워터마크보다 작은 값으로 줄일 수 없습니다. - 새 테이블스페이스를 만든 다음, 요구 사항에 맞게 공간을 구성합니다.
- 수동으로 모든 데이터를 새 테이블스페이스로 이동합니다.
bigfile 테이블스페이스의 크기 줄이기
bigfile 테이블스페이스를 사용하는 경우 다음 방법 중 하나를 선택하여 테이블스페이스의 크기를 줄이십시오.
영구 테이블스페이스
영구 테이블스페이스 크기를 테이블스페이스의 상위 워터마크보다 작은 값으로 줄이려고 하면 크기 조정 작업이 실패합니다. 그러면 다음과 같은 오류 메시지가 표시됩니다.
"ORA-03297: file contains used data beyond requested RESIZE value."
테이블스페이스 크기가 워터마크보다 큰 경우 영구 테이블스페이스의 크기를 워터마크 값으로 줄일 수 있습니다.
예를 들어 상위 워터마크가 40GB이고 테이블스페이스 크기가 50GB인 경우 테이블스페이스를 40GB로 줄입니다.
테이블스페이스 크기를 조정하는 명령 예:
ALTER TABLESPACE example-tablespace RESIZE 40G;
테이블스페이스 크기를 상위 워터마크와 같은 값으로 줄일 수 없는 경우 다음 작업을 수행하십시오.
- 테이블스페이스의 객체를 재구성합니다.
- 새 테이블스페이스를 만들고 모든 객체를 새 테이블스페이스로 이동합니다. 그런 다음, 이전 테이블스페이스를 삭제합니다.
임시 테이블스페이스
다음 명령을 실행하여 임시 테이블스페이스를 줄입니다.
ALTER TABLESPACE example-tablespace SHRINK SPACE KEEP 100M;
읽기 전용 복제본에서 임시 테이블스페이스의 크기를 조정하려면 다음 명령에 rdsadmin.rdsadmin_util.resize_temp_tablespace를 포함합니다.
EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('example-tablespace','100M');
또는 다른 임시 테이블스페이스를 만들고 새 테이블스페이스를 기본값으로 설정합니다.
다음 단계를 완료하십시오.
-
다음 쿼리를 실행하여 현재 기본 임시 테이블스페이스를 확인합니다.
SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';참고: 자세한 내용은 Oracle 웹 사이트에서 테이블스페이스에 대한 정보 보기를 참조하십시오.
-
다음 명령을 실행하여 다른 임시 테이블스페이스를 만들고 필요한 크기를 구성합니다.
CREATE TEMPORARY TABLESPACE example-tablespace TEMPFILE SIZE 100M; -
다음 명령을 실행하여 새 임시 테이블스페이스를 기본 임시 테이블스페이스로 설정합니다.
EXEC RDSADMIN.RDSADMIN_UTIL.ALTER_DEFAULT_TEMP_TABLESPACE(TABLESPACE_NAME => 'example-tablespace');
특정 사용자의 임시 테이블스페이스를 수정하려면 다음 단계를 완료하십시오.
-
다음 쿼리를 실행하여 사용자의 현재 기본 임시 테이블스페이스를 확인합니다.
SELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS where USERNAME='example_username'; -
다음 명령을 실행하여 기본 임시 테이블스페이스를 변경합니다.
ALTER USER example_username TEMPORARY TABLESPACE example-tablespace;
실행 취소 테이블스페이스
다음 단계를 완료하십시오.
-
다음 쿼리를 실행하여 현재 사용 중인 실행 취소 테이블스페이스를 식별합니다.
SHOW PARAMETER UNDO_TABLESPACE; -
다음 명령을 실행하여 실행 취소 테이블스페이스의 크기를 줄입니다.
`ALTER TABLESPACE example-tablespace RESIZE 40G;`
쿼리가 실행되지 않으면 다음 단계를 완료하십시오.
-
다음 명령을 실행하여 새 실행 취소 테이블스페이스를 만듭니다.
CREATE UNDO TABLESPACE example-new-tablespace DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 100G;참고: example-new-tablespace를 새 실행 취소 테이블스페이스의 이름으로 바꾸십시오.
-
다음 명령을 실행하여 실행 취소 테이블스페이스를 파라미터 그룹의 기본 테이블스페이스로 설정합니다.
UNDO_TABLESPACE = example-new-tablespace참고: UNDO_TABLESPACE는 동적 파라미터이므로 이를 수정할 때 가동 중지 시간이 발생하지 않습니다. 그러나 파라미터를 수정한 후에는 DB 인스턴스를 재부팅하는 것이 좋습니다. 자세한 내용은 Oracle 웹 사이트의 실행 취소 관리를 참조하십시오.
-
다음 쿼리를 실행하여 새 실행 취소 테이블스페이스 파라미터가 기본 테이블스페이스인지 확인합니다.
SHOW PARAMETER UNDO_TABLESPACE; -
다음 명령을 실행하여 이전 실행 취소 테이블스페이스를 삭제합니다.
DROP TABLESPACE example-tablespace INCLUDING CONTENTS AND DATAFILES;
관련 정보
Amazon RDS의 여유 스토리지 공간을 모니터링하고 스토리지 가득 참 문제를 방지하기 위해 CloudWatch 경보를 만들려면 어떻게 해야 합니까?
Amazon RDS 스토리지 자동 조정을 통한 자동 용량 관리
Amazon RDS for Oracle DB 인스턴스가 예상보다 많은 스토리지를 사용하는 이유는 무엇입니까?

