| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- PostgreSQL
- 샤또 라 리보 메독 크뤼 브르주아
- mariaDB
- SQLP
- Cloudy Bay Sauvignon Blanc
- pg_basebackup
- Linux
- 복제테이블변경
- ADP시험일정
- chateau la ribaud 2018 medoc cre bourgeios
- dap
- pgBackRest
- 2026 ADP 시험일정
- 물리복제
- postgresql물리백업과 복구
- 물리복구
- 델타복원
- 논리복제
- 오블완
- 논리복구
- 티스토리챌린지
- 2026 ADsP 시험일정
- SQLD
- 리눅스
- dasp
- rds for oracle
- 오라클
- oracle
- 논리백업
- 물리백업
- Today
- Total
IT study
[RDS for ORACLE] RMAN(Recovery Manager) 로 데이터베이스 백업 본문

Amazon RDS ORACLE DB 인스턴스에서 Oracle RMAN(Recovery Manager) DBA 작업을 수행하는 방식을 알아보며
rdsadmin.rdsadmin_rman_util 패키지 사용하여 오라클 데이터베이스 백업을 진행 테스트를 진행
0. 테스트데이터 생성
CREATE TABLE xtmp_test (
id NUMBER PRIMARY KEY,
name VARCHAR2(100),
created_at DATE DEFAULT SYSDATE
);
BEGIN
FOR i IN 1..100 LOOP
INSERT INTO xtmp_test (id, name)
VALUES (i, 'User_' || i);
END LOOP;
COMMIT;
END;
/
1. RMAN 백업 사전 요구 사항 확인
--마스터계정에서
GRANT SELECT ANY DICTIONARY TO testdb;
--archivelog 모드 확인
SELECT log_mode FROM v$database;
--redo log 보존 기간 확인 (0이상)
SELECT name, value
FROM v$parameter
WHERE name LIKE '%retention%';
--redo log 보존 기간 설정 (--admin계정에서 실행)
begin
rdsadmin.rdsadmin_util.set_configuration(
name => 'archivelog retention hours',
value => '24');
end;
/
commit;
2. 데이터베이스 검증
BEGIN
rdsadmin.rdsadmin_rman_util.validate_database;
END;
--충분한 저장공간 확보
--freestoragespace로 요유공간 모니터링
--전체 백업 수행
BEGIN
rdsadmin.rdsadmin_rman_util.backup_database_full(
p_owner => 'SYS',
p_directory_name => 'DATA_PUMP_DIR',
p_section_size_mb => 1024,
p_tag => 'FULL_DB_BACKUP',
p_rman_to_dbms_output => FALSE);
END;
--증분 백업 수행
BEGIN
rdsadmin.rdsadmin_rman_util.backup_database_incremental(
p_owner => 'SYS',
p_directory_name => 'DATA_PUMP_DIR',
p_level => 1,
p_section_size_mb => 1024,
p_tag => 'MY_INCREMENTAL_BACKUP',
p_rman_to_dbms_output => FALSE);
END;
--파일확인
SELECT filename,type,filesize/1024/1024 size_megs,to_char(mtime,'DD-MON-YY HH24:MI:SS') timestamp
FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR'))) order by 4;
--파일 삭제
BEGIN
FOR rec IN (
SELECT filename
FROM TABLE(rdsadmin.rds_file_util.listdir(p_directory => upper('DATA_PUMP_DIR')))
WHERE TYPE='file' -- 필요한 경우 필터 조건
) LOOP
BEGIN
UTL_FILE.FREMOVE('DATA_PUMP_DIR', rec.filename);
DBMS_OUTPUT.PUT_LINE('Deleted: ' || rec.filename);
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('Failed to delete: ' || rec.filename || ' - ' || SQLERRM);
END;
END LOOP;
END;