################################################################
1. Backup 하기
################################################################
1. 백업 가능대상
- database (all datafile 과 현재 control file)
- tablespace
- datafile (current 또는 image copy)
- archived redo log
- control file (current 또는 image copy)
* 백업이 되는 않는 대상( init.ora, password file. listener.ora, tnsnames.ora, BFILES등)
2. 백업 분류
RMAN을 통한 백업은 대상 DB가 open 혹은 close된 시점에서 백업이 가능하며, open된 상태에서의 백업은 항상 Inconsistent 이며, consistent 백업은 항상 mount상태에서 백업을 받은 것을 말하며 이전에 DB가 crash되거나 비 정상 종료가 되지 않아야 한다. ( NOARCHIVE MODE에서는 INCONSISTENT 백업을 허용하지 않는다)
- consistent vs Inconsistent 백업
allocate channel c1 device type disk; backup database format ‘/data/backup/rman/%d_%p_%t’; }
3. 백업 방법
3.1 전체 database 백업
run {
allocate channel c1 device type disk; allocate channel c2 device type disk; allocate channel c3 device type disk; backup filesperset=3 ## 한 백업set에 datafile 3개를 넘어서 백업받지 않는 조건 tablespace example , users,system include current controlfile; ## 현재 control file도 같이 백업 }
run {
3.3 datafile 백업
allocate channel c1 device type disk; backup datafile 1, 2, 3, 4, 5, 6 ; }
run {
allocate channel c1 device type disk; backup datafilecopy ‘/home/oracle/oradata/testdb/users01.dbf’ format ‘/data/backup/rman/users01.bak’; }
run {
allocate channel ch1 type disk; backup current controlfile tag = mondayPMbackup; }
run {
allocate channel ch1 type disk; backup tablespace users include current controlfile; ## users 라는 tablespace 백업시 currnet control file 포함 }
run {
allocate channel ch1 type disk; backup archivelog all ## archive된 모든 redo log 백업 delete input; ## 백업받은 archive log 삭제 } * archived redo log 백업시 time, SCN, log sequence number 조건을 사용해서 백업 받을수 있다. 예) time 조건 run { allocate channel ch1 type disk; backup archivelog from time ‘SYSDATE-2’ until time ‘SYSDATE-1’; ## 2일전부터 1일전까지 발생한 archived redolog }
run {
4. incremental 백업
allocate channel ch1 type disk; backup incremental level=0 ## level 0 으로 database incremental backup database; } run { allocate channel ch1 type disk; backup incremental level=1 ## level 1로 system tablespace와 sale.f datafile 을 백업 tablespace system ## 하는데 level 0 또는 1이후로 변경된 사항만 datafile ‘/home/oracle/oradata/testdb/example01.dbf’; ## 백업받는다. } run { allocate channel ch1 type disk; backup incremental level=2 cumulative ## level 2로 tbs_1 tablespace 백업하는데 level 0 또는 1 tablespace example; ## 이후로 변경된 사항만 백업(cumulative 옵션사용) }
run {
5. image copies
2. archived redo log 3. control file
1. datafile
run { allocate channel ch1 type disk; copy datafile 1 to ‘/data/backup/rman/df_1.bak, datafile 2 to ‘/data/backup/rman/df_2.bak’, datafile 3 to ‘/data/backup/rman/df_3.bak’, datafile 4 to ‘/data/backup/rman/df_4.bak’, current controlfile to ‘/data/backup/rman/control.bak; }
예1)
################################################################
Restore
################################################################
1. Restore Datafile, Controlfile, Archived redo log file - restore 명령으로 백업set이나 image copy본에서 restore가능하다. (image copy본은 disk에서만 가능)
2. restore database
shutdown immediate startup mount ex) 기존의 datafile 위치에 database를 restore 하는경우 run { allocate channel ch1 type disk; allocate channel ch2 type disk; allocate channel ch2 type disk; restore database; }
- database restore시에는 db는 항상 close상태이어야 한다. (db가 open된 상태라면 아래와 같이
3. tablespace 와 datafile restore
3.1 기존위치에 tablespace restore
sql ‘alter tablespace example offline ’; allocate channel ch1 type disk; restore tablespace example; }
run {
allocate channel ch1 type disk; sql ‘alter tablespace example offline’ ; ## 새로운 위치에 datafile restore set newname for datafile ‘/home/oracle/oradata/testdb/example01.dbf’ restore tablespace example; ## 변경된 위치로 control file이 인식할 수 있게 함 switch datafile all; }
run {
to ‘/home/oracle/temp/example01.dbf’;
4. control file restore
run { allocate channel ch1 type disk; restore controlfile; alter database mount; }
- nomount 단계에서 restore 해야함
5. Archived redo log restore
run { ## init.ora 에 명시되어있는 log_archive_dest 위치가 아니 다른 위치에 restore하고자 할때 set archivelog destination to ‘/oracle/temp_restore’; allocate channel ch1 type disk; restore archivelog all; }
- mount 단계에서 restore
################################################################
Recovery
################################################################
1. Complete Recovery startup mount; run { allocate channel ch1 type disk; restore database; recover database; }
1.1 recover database
shutdown immediate;
run { allocate channel ch1 type ‘sbt_tape’; restore controlfile; alter database mount; restore database; recover database; alter database open resetlogs; } * resetlogs로 database를 open한 경우 reset database명령수행이 필요하며, 다시 database를 백업받는다.
startup nomount;
1.3.1 database가 close상태이고 tablespace위치에 접근가능할 때
allocate channel ch1 type disk; restore tablespace tbs_3; recover tablespace tbs_3; }
run {
(datafile 위치를 바꿀 필요가 있을때)
allocate channel ch1 type disk; set newname for datafile ‘/disk1/oracle/tbs_1.f’ to ‘/disk2/oracle/tbs_1.f’; restore tablespace tbs_1; switch datafile all; recover tablespace tbs_1; }
run {
sql ‘alter tablespace user_data offline temporary’; allocate channel ch1 type disk; set archivelog destination to ‘/oracle/temp/arc1_restore’; restore tablespace user_data; recover tablespace user_data; sql ‘alter tablespace user_data online’; }
run {
1.3.4 database가 open된 상태이고 tablespace위치에 접근불가능할 때
sql ‘alter tablespace tbs_1 offline temporary’; allocate channel ch1 type disk; set newname for datafile ‘/disk1/oracle/tbs_1.f’ to ‘/disk2/oracle/tbs_2.f’; restore tablespace tbs_1; switch datafile all; recover tablespace tbs_1; sql ‘alter tablespace tbs_1 online’; }
run {
2. Incomplete Recovery
2.1 time base Incomplete Recovery
(필요시 time format설정 변경) 예) NLS_LANG=american NLS_DATE_FORMAT=’Mon DD YYYY HH24:MI:SS’ database open시는 반드시 shutdown후 작업 shutdown immediate; startup mount; run { set until time ‘Nov 15 1998 allocate channel ch1 type ‘sbt_tape’; restore database; recover databse; alter database open resetlogs; } resetlogs로 database open후 반드시 recovery catalog database에 reset database 명령으로
time base로 Incomplete Recovery를 하고자 할 때는 time format을 확인한 후 작업해야 한다.
2.2 특정 SCN까지 recovery
shutdown immediate; startup mount; run { set until scn 1000; allocate channel ch1 type ‘sbt_tape’; restore database; recover database; alter database open resetlogs; } resetlogs로 database open후 반드시 recovery catalog database에 reset database 명령으로
database open시는 반드시 shutdown후 작업
2.3 특정 log sequence까지 recovery
database open시는 반드시 shutdown후 작업 shutdown immediate; startup mount; ## thread 1에 대해 log sequence 6 까지 recovery하는 예 run { set until logseq 6 on thread 1; allocate channel ch1 type ‘sbt_tape’; restore database; recover database; alter database open resetlogs; } resetlogs로 database open후 반드시 recovery catalog database에 reset database 명령으로
어느시점까지 recovery할것인지는 v$log_history view 조회를 통해서 결정
3. recovery catalog 없이 DBPITR(DataBase Point In Time Recovery)할때
- control file은 별도로 백업을 받아 두도록 한다. database 백업시 control file도 자동으로 백업을 받아지기는 하지만 그때 발생한 database backup database; backup current controlfile tag = ‘database backup’; controlfile 백업시 tag 옵션을 사용하여 향후에 특정시점에 백업받은 controlfile을 사용할 - tablespace 변경 시나 datafile 추가시 백업을 수행하도록 한다.(control file도 포함) 예) catalog없이 rman 시작 rman target / nocatalog 만일 database가 open된 상태라면 shutdown후 mount시킨다. startup force mount; 특정 임시위치에 control file restore run { set until time ‘Jun 18 1998 allocate channel ch1 type disk; restore controlfile to ‘/tmp/cf.tmp’ from tag = ‘database backup’; } 백업받은 특정 controlfile을 restore할 수 없을 때는 rman을 통해 restore받은 controlfile을 아래와 같은 sql 명령으로 백업받은 후 init.ora 관련 파라미터를 조정한후 다음단계를 수행하도록 한다. - database shutdown - init.ora 에 명시된 CONTROL_FILES 파라미터를 적절히 조정 - 백업받은 controlfile을 적당한 위치에 copy - startup mount run { set until time ‘Jun 18 1998 allocate channel ch1 type disk; restore database; recover database noredo; ## database가 Noarchive Mode일때 noredo 옵션사용 alter database open resetlogs; ## Archive Mode일때는 noredo 옵션없이 recover한다. }
- recovery catalog 없이 DBPITR 수행을 하고자 할때는 아래와 같은 몇가지 필요한 사항들이 있다
- sql > alter database backup controlfile to ‘/tmp/original_cf’;
출처 : cafe.naver.com/prodba
'Database > ORACLE' 카테고리의 다른 글
오라클 클론 디비로 복구 하기 (0) | 2010.07.13 |
---|---|
PL/SQL Exception (0) | 2010.07.06 |
오라클 암호화 기능 (0) | 2010.07.02 |
오라클 pump 관련 자료 (0) | 2010.06.30 |
오라클 기본 유저 정보 (0) | 2010.06.30 |