Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
Amazon RDS for Oracle DB 인스턴스의 테이블스페이스 크기를 조정하려면 어떻게 해야 합니까?
Amazon Relational Database Service(Amazon RDS) for Oracle DB 인스턴스의 테이블스페이스를 관리하거나 크기를 조정하는 방법을 알고 싶습니다.
간략한 설명
Amazon RDS for Oracle 인스턴스의 기본 테이블스페이스 유형은 bigfile입니다. RDS for Oracle 인스턴스에 smallfile 테이블스페이스를 사용하는 것은 모범 사례가 아닙니다.
smallfile 테이블스페이스를 사용하는 RDS for Oracle 인스턴스에는 다음과 같은 제한 사항이 있습니다.
- RDS for Oracle에서 ALTER DATABASE 명령이 지원되지 않으므로 ALTER DATABASE 쿼리를 실행하여 데이터 파일 구성의 크기를 조정하거나 변경할 수 없습니다. 자세한 내용은 Oracle DBA 권한에 대한 제한 사항을 참조하십시오.
- 데이터베이스의 최대 데이터 파일 수를 정의하려면 db_files 파라미터를 수동으로 관리해야 합니다. 데이터 파일 수가 이 제한에 가까워지면 db_files 파라미터를 변경합니다.
데이터 파일 크기를 지정하지 않으면 테이블스페이스를 생성할 때 AUTOEXTEND ON이 기본적으로 활성화됩니다. bigfile 테이블스페이스의 최대 크기는 16TiB(테비바이트)입니다. 테이블스페이스에 데이터를 삽입할 때 테이블스페이스는 테이블스페이스에 필요한 구성된 최대 제한까지 그 크기가 커집니다. 또는 테이블스페이스가 RDS 인스턴스에 할당된 스토리지의 최대 한도까지 커집니다.
RDS 인스턴스에 할당된 스토리지가 가득 차면 인스턴스가 STORAGE_FULL 상태로 전환되고 테이블스페이스를 확장할 수 없습니다. 이 문제를 해결하려면 인스턴스에 스토리지 공간을 추가해야 합니다. 자세한 내용은 Amazon RDS DB 인스턴스의 스토리지가 부족할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?를 참조하십시오.
테이블스페이스에서 데이터를 삭제해도 테이블스페이스의 크기는 줄어들지 않습니다. 빈 블록은 새 데이터를 삽입할 때 재사용할 수 있습니다. 사용하지 않는 공간을 비우려면 테이블스페이스의 크기를 수동으로 조정해야 합니다.
해결 방법
RDS for Oracle 인스턴스의 테이블스페이스 크기를 조정하려면 다음 단계를 완료하십시오.
테이블스페이스 구성 확인
다음 단계를 완료하십시오.
- 테이블스페이스 유형을 식별하려면 다음 예와 비슷한 쿼리를 실행합니다.
테이블스페이스 유형은 permanent, undo, temporary, smallfile 또는 bigfile일 수 있습니다.SQL> SELECT TABLESPACE_NAME, CONTENTS, BIGFILE FROM DBA_TABLESPACES;
- 데이터 파일의 크기, 구성된 최대 제한을 확인하고 autoextend 기능이 활성화되어 있는지 확인하려면 다음 쿼리를 실행합니다. permanent 및 undo 테이블스페이스의 경우 다음 쿼리를 실행합니다.
temporary 테이블스페이스의 경우 다음 쿼리를 실행합니다.SQL> 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;
SQL> 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)를 검색하려면 다음 쿼리를 실행합니다.
SQL> SET LINESIZE 400
SQL> SET LONG 99999
SQL> SELECT DBMS_METADATA.GET_DDL('TABLESPACE','example-tablespace') FROM DUAL;
반환된 DDL에서 테이블스페이스에 대한 필수 정보를 검색할 수 있습니다.
테이블스페이스 크기 늘리기
autoextend 기능을 활성화하면 테이블스페이스의 크기를 늘릴 필요가 없습니다.
그러나 autoextend 기능을 활성화한 다음 테이블스페이스의 크기를 조정할 때는 다음 요구 사항을 완료해야 합니다.
bigfile 테이블스페이스의 경우 테이블스페이스의 크기를 조정하려면 ALTER TABLESPACE 명령을 실행합니다.
SQL> ALTER TABLESPACE example-tablespace RESIZE 50G;
자세한 내용은 Oracle 웹 사이트의 ALTER TABLESPACE를 참조하십시오. 크기를 킬로바이트(K), 메가바이트(M), 기가바이트(G) 또는 테라바이트(T) 로 지정합니다. bigfile 테이블스페이스에는 단일 데이터 파일이 있으며 ALTER TABLESPACE 명령은 테이블스페이스에 속한 데이터 파일의 크기를 조정합니다.
smallfile 테이블스페이스의 경우 데이터 파일을 추가하여 테이블스페이스의 크기를 늘립니다.
SQL> ALTER TABLESPACE example-tablespace ADD DATAFILE SIZE 1G AUTOEXTEND ON;
smallfile 테이블스페이스에서 원본 데이터 파일의 크기를 조정하려면 rdsadmin_util.resize_datafile을 실행합니다.
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 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인 경우 테이블스페이스 유형에 따라 테이블스페이스의 크기를 줄이려면 다음 방법 중 하나를 선택합니다.
permanent 테이블스페이스의 경우 테이블스페이스의 상위 워터마크보다 작은 값으로 permanent 테이블스페이스의 크기를 줄일 수 없습니다. permanent 테이블스페이스의 크기를 조정하려고 하면 크기 조정 작업이 실패합니다. 그러면 다음과 같은 오류가 표시됩니다.
ORA-03297: file contains used data beyond requested RESIZE value
하지만 테이블스페이스의 크기가 50GB이고 상위 워터마크가 40GB인 경우 테이블스페이스의 크기를 40GB로 줄이려면 다음 쿼리를 실행합니다.
SQL> ALTER TABLESPACE example-tablespace RESIZE 40G;
테이블스페이스의 크기를 상위 워터마크보다 작은 값으로 줄일 수 없는 경우 다음 옵션을 고려해 보십시오.
- 테이블스페이스의 객체를 재구성합니다.
- 새 테이블스페이스를 생성하고 모든 객체를 새 테이블스페이스로 이동합니다.
- 이전 테이블스페이스를 삭제합니다.
temporary 테이블스페이스의 경우 SHRINK 명령을 실행하여 temporary 테이블스페이스의 크기를 줄입니다.
SQL> ALTER TABLESPACE example-tablespace SHRINK SPACE KEEP 100M;
읽기 전용 복제본에서 temporary 테이블스페이스의 크기를 조정하려면 rdsadmin.rdsadmin_util.resize_temp_tablespace를 실행합니다.
SQL> EXEC rdsadmin.rdsadmin_util.resize_temp_tablespace('example-tablespace','100M');
-또는-
다른 temporary 테이블스페이스를 생성하고 필요한 크기를 구성합니다. 그런 다음 새 temporary 테이블스페이스를 기본 temporary 테이블스페이스로 설정합니다.
-
현재 기본 temporary 테이블스페이스를 보려면 다음 쿼리를 실행합니다.
SQL> SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME = 'DEFAULT_TEMP_TABLESPACE';
자세한 내용은 Oracle 웹 사이트에서 테이블스페이스에 대한 정보 보기를 참조하십시오.
-
새 temporary 테이블스페이스를 생성하려면 다음 쿼리를 실행합니다.
SQL> CREATE TEMPORARY TABLESPACE example-tablespace TEMPFILE SIZE 100M;
-
새 temporary 테이블스페이스를 기본 temporary 테이블스페이스로 설정하려면 다음 쿼리를 실행합니다.
SQL> EXEC RDSADMIN.RDSADMIN_UTIL.ALTER_DEFAULT_TEMP_TABLESPACE(TABLESPACE_NAME => 'example-tablespace');
특정 사용자의 temporary 테이블스페이스를 수정하려면 다음 단계를 완료하십시오.
-
사용자의 현재 기본 temporary 테이블스페이스를 보려면 다음 쿼리를 실행합니다.
SQL> SELECT USERNAME, TEMPORARY_TABLESPACE FROM DBA_USERS where USERNAME='example_username';
-
사용자의 기본 temporary 테이블스페이스를 변경하려면 다음 쿼리를 실행합니다.
SQL> ALTER USER example_username TEMPORARY TABLESPACE example-tablespace;
undo 테이블스페이스의 경우 ALTER TABLESPACE 명령을 사용하여 undo 테이블스페이스의 크기를 줄입니다.
현재 사용 중인 undo 테이블스페이스를 확인하려면 다음 쿼리를 실행합니다.
SQL> SHOW PARAMETER UNDO_TABLESPACE;
undo 테이블스페이스의 크기를 줄이려면 다음 예시 쿼리와 비슷한 쿼리를 실행합니다.
쿼리가 성공적으로 실행되지 않으면 다음 단계를 완료하십시오.
-
SQL> CREATE UNDO TABLESPACE example-new-tablespace DATAFILE SIZE 1G AUTOEXTEND ON MAXSIZE 100G;
-
새로 생성된 테이블스페이스를 기본 undo 테이블스페이스로 설정:
UNDO_TABLESPACE = example-new-tablespace
파라미터 그룹의 UNDO_TABLESPACE 초기화 파라미터가 새로 생성된 테이블스페이스를 가리키도록 설정합니다.
자세한 내용은 파라미터 그룹 작업을 참조하십시오.
UNDO_TABLESPACE 초기화 파라미터는 동적 파라미터이며 수정을 적용할 때 가동 중지 시간이 발생하지 않습니다. 하지만 변경한 후에는 DB 인스턴스를 재부팅하는 것이 모범 사례입니다. 자세한 내용은 Oracle 웹 사이트의 실행 취소 관리를 참조하십시오.
새 undo 테이블스페이스가 기본 테이블스페이스인지 확인하려면 다음 쿼리를 실행합니다.SQL> SHOW PARAMETER UNDO_TABLESPACE;
-
이전 undo 테이블스페이스를 삭제하려면 테이블스페이스 삭제 쿼리를 실행합니다.
SQL> DROP TABLESPACE example-tablespace INCLUDING CONTENTS AND DATAFILES;
관련 정보
CloudWatch 경보를 생성해 Amazon RDS에 남은 스토리지 공간을 모니터링하고 스토리지 부족 문제를 예방하려면 어떻게 해야 합니까?
Amazon RDS 스토리지 자동 확장을 통한 자동 용량 관리
Amazon RDS for Oracle DB 인스턴스가 예상보다 많은 스토리지를 사용하는 이유는 무엇입니까?

관련 콘텐츠
- 질문됨 10달 전lg...
- 질문됨 10달 전lg...
- 질문됨 일 년 전lg...
- 질문됨 한 달 전lg...
- AWS 공식업데이트됨 4달 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 일 년 전
- AWS 공식업데이트됨 일 년 전