RDS for Oracle의 스토리지 볼륨 간에 데이터 이동 - Amazon Relational Database Service

RDS for Oracle의 스토리지 볼륨 간에 데이터 이동

기본 스토리지 볼륨과 추가 스토리지 볼륨 간에 데이터 파일과 데이터베이스 객체를 이동할 수 있습니다. 데이터를 이동하기 전에 다음 사항을 고려하세요.

  • 소스 및 대상 볼륨에는 충분한 여유 공간이 있어야 합니다.

  • 데이터 이동 작업은 두 볼륨 모두에서 I/O를 사용합니다.

  • 대규모 데이터 이동은 데이터베이스 성능에 영향을 미칠 수 있습니다.

  • 스냅샷을 복원할 때 EBS 지연 로드의 영향을 받으면 스토리지 볼륨 간에 데이터를 이동하는 속도가 느려질 수 있습니다.

RDS for Oracle의 볼륨 간에 데이터 파일 이동

스토리지 볼륨 간에 데이터 파일을 이동하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.move_datafile을 사용합니다. 다음과 같은 요구 사항을 확인합니다.

  • Oracle Enterprise Edition을 사용하여 move_datafile 프로시저를 실행해야 합니다.

  • 테이블스페이스 SYSTEMRDSADMIN은 이동할 수 없습니다.

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의 볼륨 간에 테이블 데이터 및 인덱스 이동

추가 스토리지 볼륨에 테이블스페이스를 생성하여 데이터베이스 스토리지를 최적화할 수 있습니다. 그런 다음 표준 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 스토리지 관리

데이터베이스에는 상당한 스토리지를 사용하지만 자주 액세스하지 않는 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);