RMAN
$ rman TARGET /
[ CONFIGURE ]
http://cafe.daum.net/_c21_/bbs_search_read?grpid=1Njrd&fldid=FrKk&datanum=10&docid=1NjrdFrKk1020110816154200
RMAN> SHOW ALL;
# 보유정책(retention policy)
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS; # recovery window 옵션을 사용하는 보유정책(retention policy)의 설정: 3일이상 지난 RMAM 백업은 데이터베이스 복구를 위해 저장 해야 한다는 것을 의미한다
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 7; # redundancy 옵션을 사용하는 보유정책(retention policy)의 설정: 7일이상 지난 RMAN 백업은 더이상 저장할 필요가 없다
RMAN> REPORT OBSOLETE; # 보유정책 확인
RMAN> DELETE OBSOLETE; # 보유정책 위반 하는 백업제거
RMAN> CONFIGURE RETENTION POLICY CLEAR; # 기존에 설정된 보유정책 제거
RMAN> CONFIGURE BACKUP OPTIMAIZATION ON; # 이미백업한 파일이 존재할경우 백업하지 않는다
[ BACKUP ]
RMAN> BACKUP AS BACKUPSET FULL DATABASE PLUS ARCHIVELOG TAG 'SIDM_RCU';
RMAN> BACKUP CURRENT CONTROLFILE TAG 'SIDM_RCU';
[ RESTORE / RECOVERY ]
RMAN> STARTUP FORCE MOUNT; # MOUNT 단계
RMAN> VALIDATE DATABASE; # 데이터베이스의 유효성 검사
RMAN> REPORT SCHEMA; # 데이터베이스 파일의 확인
RMAN> RESTORE DATABASE PREVIEW SUMMARY; # 복구 준비
RMAN> RESTORE DATABASE; # 전체 백업 데이터를 대상 데이터베이스로 복사
RMAN> RECOVER DATABASE; # 복사된 백업 데이터를 복구함
RMAN> ALTER DATABASE OPEN RESETLOGS;
RMAN> LIST BACKUP SUMMARY;
RMAN> LIST BACKUPSET;
RMAN> LIST BACKUPSET OF CONTROLFILE;
RMAN> LIST BACKUP OF DATABASE BY BACKUP;
RMAN> DELETE BACKUPSET <숫자>; # Delete BackupSet
RMAN> DELETE BACKUPSET TAG=''; # Delete BackupSet by TAG
delete expired backupset;
delete noprompt expired backupset;
delete noprompt ARCHIVELOG UNTIL TIME 'SYSDATE-1'
RMAN> CROSSCHECK BACKUPSET; 전체 backupset 과 target 서버에 저장된 backupset의 정보 비교하기
RMAN> RESTORE CONTROLFILE;
*******************************************************************************************
DB 생성 후 다음과 같이 하지 않으면 backupset이 Filesystem에 저장되어 Restore 시에 문제 발생.
SQL> ALTER SYSTEM SET DB_CREATE_FILE_DEST='+DATA_KRV2' SID='*';
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=100G SID='*';
SQL> ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='+RECO_KRV2' SID='*';
---------------
http://radiocom.kunsan.ac.kr/lecture/oracle/backup_restore/rman.html
백업카피 파일을 사용한 데이터베이스 복구
http://radiocom.kunsan.ac.kr/lecture/oracle/backup_restore/backup_as_copy_restore.html
1) 백업카피가 저장되어질 위치를 변경한다.
RMAN> configure channel device type disk format '/export/home0/oracle/backup/bk_%t_%s';
+DATA_KRV2/sidm
2) disk backup type을 기본적으로 copy로 설정한다.
RMAN> configure device type disk backup type to copy;
3) parallelism 옵션을 1보다 크게 설정한다.
RMAN> configure device type disk parallelism 3;
4) backup 명령을 사용하여 백업카피를 생성하는 과정을 수행한다.
RMAN> BACKUP AS COPY database;
5) switch database to copy 명령의 실행
RMAN> shutdown immediate
RMAN> startup mount
RMAN> switch database to copy;
[ DROP DATABASE ]
RMAN> CONNECT TARGET /
RMAN> STARTUP FORCE MOUNT
RMAN> SQL 'ALTER SYSTEM ENABLE RESTRICTED SESSION';
RMAN> DROP DATABASE INCLUDING BACKUPS NOPROMPT;
------------------------
http://ss64.com/ora/rman_backup.html
RMAN Backup Clause
Back up database files, archive logs, backups, or copies.
Syntax:
BACKUP FULL Options
BACKUP FULL AS (COPY | BACKUPSET) Options
BACKUP INCREMENTAL LEVEL [=] integer Options
BACKUP INCREMENTAL LEVEL [=] integer AS (COPY | BACKUPSET) Options
BACKUP AS (COPY | BACKUPSET) Options
BACKUP AS (COPY | BACKUPSET) (FULL | INCREMENTAL LEVEL [=] integer) Options
Options:
[backupOperand [backupOperand]…]
backupSpec [backupSpec]…
[PLUS ARCHIVELOG [backupSpecOperand [backupSpecOperand]…]];
backupOperand::=
{ FORMAT [=] 'format_string' [, 'format_string']…
| CHANNEL ['] channel_id [']
| CUMULATIVE
| MAXSETSIZE [=] integer [ K | M | G ]
| TAG [=] ['] tag_name [']
| keepOption
| SKIP { OFFLINE | READONLY | INACCESSIBLE }
| VALIDATE
| NOT BACKED UP [SINCE TIME [=] 'date_string']
| COPIES [=] integer
| DEVICE TYPE deviceSpecifier
.
.
.
}
backupSpec::=
[(]
{ BACKUPSET
{ {ALL | completedTimeSpec }
| primary_key) [, primary_key]…
}
| COPY OF { DATABASE
| TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name
[']]…
| DATAFILE datafileSpec [, datafileSpec]…
}
| DATAFILE datafileSpec [, datafileSpec]…
| DATAFILECOPY 'filename' [, 'filename']…
| DATAFILECOPY FROM TAG [=] ['] tag_name ['] [, ['] tag_name [']]…
| DATAFILECOPY { ALL | LIKE 'string_pattern' }
| TABLESPACE ['] tablespace_name ['] [, ['] tablespace_name [']]…
| DATABASE
| archivelogRecordSpecifier
| CURRENT CONTROLFILE [FOR STANDBY]
| CONTROLFILECOPY 'filename'
| SPFILE
}
[backupSpecOperand [backupSpecOperand]…]
backupSpecOperand::=
{ FORMAT [=] 'format_string' [, 'format_string']…
| CHANNEL ['] channel_id [']
| CUMULATIVE
| MAXSETSIZE [=] integer [ K | M | G ]
| TAG [=] ['] tag_name [']
| keepOption
| SKIP { OFFLINE | READONLY | INACCESSIBLE }
| NOT BACKED UP [ SINCE TIME [=] 'date_string'
| integer TIMES
]
| DELETE [ALL] INPUT
.
.
.
}
.
You should configure default devices and channels in advance of running RMAN Backup.
Examples
Back up the database, and then the control file:
(which contains a record of the backup)
RMAN> BACKUP DATABASE;
RMAN> BACKUP CURRENT CONTROLFILE;
Backup datafiles:
RMAN> BACKUP AS BACKUPSET DATAFILE
'ORACLE_HOME/oradata/trgt/users01.dbf',
'ORACLE_HOME/oradata/trgt/tools01.dbf';
Backup all datafiles in the database:
(bit-for-bit copies, created on disk)
RMAN> BACKUP AS COPY DATABASE;
Backup archive logs:
RMAN> BACKUP ARCHIVELOG COMPLETION TIME BETWEEN 'SYSDATE-28' AND 'SYSDATE-7';
Backup tablespace:
RMAN> BACKUP TABLESPACE system, users, tools;
Backup controlfile:
RMAN> BACKUP CURRENT CONTROLFILE TO '/backup/cntrlfile.copy';
Backup parameter file:
RMAN> BACKUP SPFILE;
Backup everything:
RMAN> BACKUP BACKUPSET ALL;
Create a consistent backup and keep the backup for 1 year:
(exempt from the retention policy)
RMAN> SHUTDOWN;
RMAN> STARTUP MOUNT;
RMAN> BACKUP DATABASE UNTIL 'SYSDATE+365' NOLOGS;
Backup Validation confirms that a backup could be run, by confirming that all database files exist and are free of physical and logical corruption, this does not generate any output.
Example:
RMAN> BACKUP VALIDATE DATABASE ARCHIVELOG ALL;
"It's a very sobering feeling to be up in space and realize that one's safety factor was determined by the lowest bidder on a government contract" - Alan Shepherd
-------------
cd $ORACLE_HOME/oui/bin
./runInstaller -silent -detachHome ORACLE_HOME="/u01/DBMS/EIDM/product/11.2.0" ORACLE_HOME_NAME="OraDb11g_home2"
------------------------------------------------------
INCREMENTAL MERGE BACKUP & RECOVERY
=====================================
1) 개요
RMAN을 이용하여 database의 Image copy를 Backup하고 그 Backup에 retention policy만큼의 Incremental Backup을 적용하여서 복구의 시간을 단축한 Backup의 방법입니다.
즉 retention policy에 설정되어있는 시간 전의 최후의 시간까지 Image Copy를 보장하는 방법이며 Disk Space는 Incremental Backup만 사용하는 방법보다는 Image Copy를 사용하는 것임으로 많이 소요됩니다.
물론 Backup & Recovery 정책에 따라서 Retention Policy를 Recovery Window나 Redundancy 2이상으로 설정할 수 있으나, Incremental Merge Backup & Recovery의 장점을 극대화 하기 위해서는 Redundancy 1 (Default)로 설정하는 것을 권해드립니다.
2) 장점
- Recovery 시에 최근 Incremental Backup의 정보들이 적용이 되어있기 때문에 최소한의 시간으로 Recovery 작업을 진행하실 수 있습니다. 물론 장점을 극대화 하시기 위해서는 Retention Policy를 redundancy 1로 설정해 주시길 권해드립니다.
- Datafile들의 Destination을 Backup된 Image Copy가 있는 곳으로 Switch 하여 Restore하는 시간을 단축하셔서 Recovery를 진행하실 수도 있으나 Recovery 후의 관리의 용이성을 위해 부득히한 경우를 재외하고는 권장하지 않습니다.
3) Syntax
- Backup
RMAN> BACKUP INCREMENTAL LEVEL 1
FOR RECOVER OF COPY
WITH TAG WEEKLY DATABASE;
위 명령어를 사용하시면 WEEKLY라는 Tag로 생성된 Copy가 없을 시에는 Image Copy를 Weekly라는 Tag로 구분하여 Backup을 받게 됩니다.
* 여기서 Copy라 함은 FOR RECOVER OF COPY라는 구문을 사용하여서 만든 Image Copy를 뜻합니다.
RMAN> RECOVER COPY OF DATABASE WITH TAG WEEKLY;
위 명령어를 사용하시면 현재 받았던 Incremental Backup을 Weekly라는 Tag를 가지고 있는 Database Copy에 적용을 하게 됩니다.
RMAN> Delete Obsolete;
위 명령어를 사용하시면 현재의 Image Copy에 적용된 Incremental Backup을 재외한 나머지 Incremental Backup들이 Delete됩니다.
-Recovery
RMAN> switch database to copy;
문제가 발생하셨을 때 위 명령어를 사용하시면 모든 datafile의 pointer들은 image backup copy를 바라보게 됨으로 Restore의 시간을 절약할 수 있습니다.
4) Retention Policy에 따른 Syntax 변화
* 기본적으로 INCREMENTAL MERGE BACKUP & RECOVERY의 장점인 Recovery 시간을 극대화 하기 위해서는 Retention Policy를 redundancy 1(Default)로 설정하시는 것을 권장해드립니다.
하지만 User가 Backup & Recovery 계획을 변경하여 retention policy를 recovery window 또는 redundancy 1 이상으로 설정해 주시면 Obsolete한 Backupset을 Delete하는 부분과 Backupset을 적용시키는 부분을 수정해 주셔야합니다.
- Recovery Window of 2
Recovery Window를 2일로 설정해 놓으시면 Backup시에는 똑같은 Syntax를 사용하실 수 있으나 Recover copy of database 명령어는 아래와 같이 바뀌어야 합니다.
RMAN> BACKUP INCREMENTAL LEVEL 1
FOR RECOVER OF COPY
WITH TAG WEEKLY DATABASE;
RMAN> RECOVER COPY OF DATABASE WITH TAG WEEKLY until time 'sysdate-2';
왜냐하면 retention policy에 마춰서 image copy도 2일전의 상태로 보관되어야하며 그에 따라서 2일동안의 Backupset들도 보관되어야하기 때문입니다. 만약 until time을 사용하지 않으시면 incremental backup들이 obsolete 상태로 안변하게 됩니다.
- Redundancy 2 이상
Redundancy 2이상으로 설정해 주시면 2개 이상의 Tag를 보관하는 효과로서 역시 예상대로 Obsolete로 안 변하는 현상이 발생됩니다.
DAY 1)
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG DAILY DATABASE;
-위와 같이 실행하시면 한개의 Database Copy (Tag DAILY)가 생성됩니다.
DAY 2)
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG DAILY DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG WEEKLY DATABASE;
-위와 같이 실행하시면 한개의 Database Copy (Tag WEEKLY)와 한개의 Backupset (Tag DAILY)가 생성됩니다.
DAY 3)
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG DAILY DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG WEEKLY DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG MONTHLY DATABASE;
-위와 같이 실행하시면 한개의 Database Copy (Tag MONTHLY)와 두개의 Backupset (Tag DAILY, Tag WEEKLY)가 생성됩니다.
DAY 4)
RMAN> Delete Obsolete;
- 위와 같이 실행하시면 DAILY Tag와 관련된 부분이 Delete 됩니다. (최신 2개의 Tag관련 Backup만 보관)
RMAN> Delete Obsolete redundancy 1
- 위와 같이 실행하시면 DAYLY Tag와 WEEKLY Tag 관련된 부분이 Delete 됩니다. (Redundancy 1로 설정한 것과 똑같은 효과)
Reference:
Article-ID: Note 351455.1
Title: Oracle Suggested Strategy & Backup Retention
Article-ID: Note 303861.1
Title: Incrementally Updated Backup In 10G
--------------
13 Creating and Updating Duplicate Databases with RMAN
http://docs.oracle.com/cd/B19306_01/backup.102/b14191/rcmdupdb.htm#sthref943
댓글 없음:
댓글 쓰기