Oracle 백업/복구 툴인 RMAN (Recovery Manager) 에 대한 개괄적인 설명을 유튜브 영상으로 만들었습니다.
그리고, 관련해서 주요 RMAN 커맨드를 아래와 같이 모아서 정리했습니다.
* === 백업 세트형식의 백업 ===
RMAN> backup database;
RMAN> backup database format '/u02/backup/%U';
RMAN> backup as compressed backupset database; -- 압축
RMAN> backup tablespace USERS;
RMAN> backup datafile 1,2;
RMAN> backup archivelog all;
* === 이미지 카피형식의 백업 ===
RMAN> backup as copy database;
RMAN> backup as copy database format '/u02/backup/%U';
RMAN> backup as copy datafile 1,2;
-- 아카이브도 as copy 로 백업 가능
RMAN> backup as copy archivelog from sequence 71 until sequence 73;
RMAN> backup as copy archivelog from sequence 71 until sequence 73 format '/u02/backup/%h_%e_resetlogs.arc';
* === 증분 백업 ===
RMAN> backup incremental level 0 database;
RMAN> backup as copy incremental level 0 database;
-- 첫회는 레벨0 으로 해야 함. but, 레벨0의 이미지 복사본이 없으면 자동으로 생성
RMAN> backup incremental level 1 database;
RMAN> backup incremental level 1 cumulative database;
RMAN> backup incremental level 1 for recover of copy with tag 'incr_update' database;
* === 스크립트 형태 백업 ===
RMAN> run {
allocate channel d1 type disk;
allocate channel d2 type disk;
backup format '/u02/backups/%U' database plus archivelog;
release channel d1;
release channel d2;
}
* === Target DB에서 Auxiliary DB로 데이타파일 복사 ===
$ rman target sys/oracle@orclprmy auxiliary sys/oracle@orclsby1
RMAN> report schema;
RMAN> backup as copy reuse datafile 5 auxiliary format '+DATA';
- 아래에 해당되는 커맨드를 rman으로 한번에 실행한 경우임
1. "alter tablespace test begin backup;" 실행
2. OS copy 명령에 의해 백업
3. "alter tablespace test end backup;" 실행
4. FTP 등을 이용하여 Standby 로 전송
* === show all; ===
CONFIGURE BACKUP OPTIMIZATION OFF; # default
-- ON: 이미 백업된 동일한(checkpoint SCN등) datafile, archive log, backup set이 있다면 skip
CONFIGURE CONTROLFILE AUTOBACKUP ON; # default
-- RMAN의 BACKUP이나 COPY 명령등의 수행후 자동으로 control file backup을 수행
-- spfile은 컨트롤파일 백업시 같은 파일에 함께 자동 백업됨. 별도 파일 없음.
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
-- 디폴트로 $ORACLE_HOME/dbs 디렉토리에 백업됨.
-- 바꾸려면, RMAN> configure controlfile autobackup format for device type disk to '/u02/backup/%F';
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/data/orabackup/%U';
-- 백업파일저장 경로 설정
-- channel 1,2 device 별로 따로 format(위치)을 지정할 수도 있음. Disk에서는 위치를 달리하여 I/O 분산.
-- backupset 파일 이름 형식 (FORMAT)
%c : backup piece 의 copy number
%p : backup piece number, 1부터 시작하고 1씩 증가
%s : backup set number, control file내의 counter, set이 생성될때 마다 증가
%d : database name
%n : database name, padded on the right with x char to total length oh 8 char
%t : fixed reference time 이후 경과한 시간(초)을 4byte로 나타낸 값
%u : backup set 번호와 생성시간에 대한 단축 표기법, 8자 이름 지정
%U : %u_%p_%c (default)
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
-- Disk로 백업, 테입은 sbt
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
-- 특정 device에 automatic channel allocation 될때 channel의 갯수를 지정
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
-- datafile, control file의 backup set의 copy본 갯수를 지정
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
-- archivelog file의 backup set의 copy본 갯수를 지정
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE; # default
-- 압축 옵션으로 basic만 무료이고, low, medium, high 의 경우 ACO 옵션 구매가 필요함.
-- 변경시, RMAN> configure compression algorithm 'medium';
-- 비압축 4.0G 279s
-- basic 636M 419s
-- low 797M 189s
-- medium 674M 238s
-- high 485M 3129s
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
-- 사용할 수 있는 알고리즘은 아래 SQL로 조회 가능
-- SQL> select algorithm_name from V$RMAN_ENCRYPTION_ALGORITHMS;
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
-- backupset의 maximum size를 설정한다.
-- 바꾸려면, RMAN> configure maxsetsize to 10G;
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
-- 유지할 백업본의 갯수를 설정
-- 동일한 데이타파일에 대해 백업본이 1개를 넘으면 최신 1개를 제외한 나머지는 obsolete로 인식.
-- obsolete로 인식되는 백업본은 delete obsolete; 커맨드로 제거됨.
CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default
-- 이 값이 0 이 아닌 경우, 해당 기간만큼의 RMAN Output Log가 RC_RMAN_OUTPUT, V$RMAN_OUTPUT 뷰에 기록됨.
-- 기록을 끄려면, RMAN> configure rman output to keep for 0 days;
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
-- flash recovery area의 archive log에 대한 삭제 여부를 설정 (ADG에서 사용)
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/12.2.0/dbhome_1/dbs/snapcf_ORA12R2.f'; # default
-- RMAN은 resync시 생성되는 임시 snapshot control file의 이름을 지정
* === 셸커맨드 실행 ===
RMAN> host 'date';
* === 백업 정보의 표시 ===
> show all; -- 파라메타 설정정보 확인
> report schema; -- 백업 대상 DB의 TS, datafile 정보 확인
> list backup; -- 백업셋 백업인 경우
> list copy; -- 이미지 백업인 경우
> list archivelog all;
> list archivelog until time 'SYSDATE -7';
> list backup of controlfile;
> list backup of spfile;
> list backup summary; -- summary 로 볼때
> list failure; -- 데이터·리커버리·어드바이저에 의해서 기록된 장애 표시
> report need backup; -- 백업이 필요한 데이터 파일을 표시
> report unrecoverable; -- nologging 작업 등으로 백업이 필요한 걸 찾아줌
* === 삭제 가능한(obsolete, expired) 백업파일 삭제 ===
-- obsolete 는 백업을 받아서 더이상 필요 없는 것. expired 는 os상에서 지워진 것.
> report obsolete;
> delete obsolete; -- 불필요한 백업의 삭제
> delete noprompt obsolete; -- 확인없이 바로 삭제
> crosscheck backup;
> crosscheck copy;
> delete expired backup;
> delete expired copy;
> crosscheck archivelog all;
> delete noprompt expired archivelog all;
* === archive log 파일 삭제 ===
> delete noprompt archivelog until time 'sysdate-14' all;
> delete noprompt archivelog sequence 1 thread 2; -- RAC는 thread까지 필요
> delete noprompt archivelog like '%2013_10_29%';
> crosscheck archivelog all;
> delete noprompt expired archivelog all;
* === 백업받고, 백업된 모든 archive log 삭제 ===
> backup archivelog all delete input;
* === control file 복구 ===
RMAN> restore controlfile to '/u02/ctrl_gom1';
* === spfile 복구 ===
RMAN> restore spfile to '/u02/spfile_gom1';
RMAN> restore spfile to pfile '/u02/init_gom1.ora';
-- spfile은 컨트롤파일 백업시 같은 파일에 함께 자동 백업됨. 별도 파일 없음.
* === archive 복구 ===
RMAN> restore archivelog from logseq 65 until logseq 67;
* === 데이타베이스 전체의 restore, recover ===
RMAN> shutdown;
RMAN> startup mount;
RMAN> restore database;
RMAN> recover database;
RMAN> alter database open;
* === 테이블스페이스 단위의 restore, recover ===
RMAN> sql "alter tablespace users offline";
RMAN> sql "alter tablespace data offline";
RMAN> restore tablespace USERS, DATA;
RMAN> recover tablespace USERS, DATA;
RMAN> sql "alter tablespace users online";
RMAN> sql "alter tablespace data online";
-- datafile 에대한 restore, recover 도 같은 명령을 실행
* === 블록 단위의 리커버리(RECOVER … BLOCK) ===
-- 데이터 블록의 장애 위치의 확인
SQL> select * from v$database_block_corruption;
-- 블록·미디어·리커버리의 실행
RMAN> recover datafile 6 block 108;
-- v$database_block_corruption 에 기록된 모든 블록을 리커버리
RMAN> recover corruption list;
'IT관련' 카테고리의 다른 글
리눅스 가상머신에 Oracle RAC 19c 설치 유튜브 영상 및 스크립트 (1) | 2023.10.04 |
---|---|
자바 에러 java: error: package javax.jms does not exist, import ... (0) | 2023.08.11 |
오라클 Alertlog 로그 모니터링 프로그램 - Oracle 무료 DB관리툴 (0) | 2023.07.12 |
오라클 에러 정보 (ORA-01031) - 권한부족에 의한 단순 에러 (insufficient privileges) (0) | 2023.07.12 |
오라클 DB 세션, 락 정보 모니터링 프로그램 (LockSession) - Oracle 무료 DB관리툴 (0) | 2023.05.26 |