온라인 백업방법 begin~end backup

2010.05.12 08:23

조인상 조회 수:20669

원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어

Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++


      < Online Tablespace and Datafile Backups>
1.    Hot Backup
ð      핫 백업(Hot Backup) 은  오라클이 기동중에 데이타베이스를 백업하는 방법이다.
백업하는 중에 데이타를 조회할 수도 있고 변경할 수도 있다. 백업중에 변경하는
데이타는 모두 Rollback Segment 와 아카이브 로그 화일에 저장된다.
데이타 화일과 제어 화일만 백업할 수 있고, 온라인 로그 화일은 백업할 수 없다. 
ð     
2. Perform an Online Backup
ð      Online tablespace backup 의 시작을 mark하라.
Alter Tablespace USERS begin backup;
cf)  backup status를 파악하기 위해 V$BACKUP을 query할 수 있다.
    Select file#, status from v$backup;  =>  active
ð      OS 명령어로 online datafile을 backup하라
cp ‘AAA’ ‘BBB’
ð      Online tablespace backup의 끝을 mark하라. (begin backup과 end backup사이에는 data
file과 redo log file에는 변경사항이 기록되지만, header에 setting되는 checkpoint값이
나 SCN값은 고정된다. backup이 끝난후 header에 setting된다.)
Alter Tablespace USERS end backup;
만약 mark하는 것을 잊으면 다음 startup시에 media recovery가 필요.

3.    주의 사항
ð      DB를 반드시 Archive log mode에서 운영해야 한다.
ð      가장 최근에 콜드 백업한 이후의 모든 아카이브 화일이 있어야 한다.
복구를 시작하는 싯점이 가장 최근에 콜드 백업한 이후부터이거나  콜드 백업한 이
후에 핫 백업 한 이후이지만 가장 안전한 방법은 가장  최근에  콜드 백업한 이후부터
생긴 아카이브 로그 화일을  모두 관리하는 것이다.
만약, 중간에 하나의  아카이브 로그 화일이라도  없으면, 손상된 아카이브 로그 화일
까지 밖에  복구할 수 없다.
ð      Online log file을 Mirroring한다.
아카이브 모드로 운영한다는 것은 그 만큼  100 % 복구를 목적으로 한다.
그러나, 현재 사용중인 온라인 로그 화일(Current Online Redo Log File)이 손상되면
복구 불능 상태가  될 수 있다.  그러므로 온라인 로그 화일을  여러 디바이스에  분산
하여 미러링한다.

3. SCN
핫 백업을 수행할 수 있는 이유는 datafile header에 scn정보가 저장된다. 이 SCN은
한 싯점에서 모든 데이타 화일을 똑같은 값으로 동기화시키기 위해 시스템이 발생하
는 값이다. Oracle을 startup할때 scn이 일치하지 않으면 archive log file을 이용해
recover. 한다.




예제) begin backup

#!/usr/bin/csh
clear
echo 'CRYSTAL1 Database Backup BEGIN Start..'
date

# server manager start
svrmgrl << EOF >> /dev/null
connect internal

spool backup.dat

#for Monitor

#for RDBMS
alter tablespace RBS begin backup;

alter tablespace SYSTEM begin backup;

alter tablespace TEMP begin backup;

#for TOOLS tablespace
alter tablespace TOOLS begin backup;

#for USERS tablespace
alter tablespace USERS begin backup;

#for INDX tablespace
alter tablespace INDX begin backup;

#for user index datafile
alter tablespace CR_CH_I_MST begin backup;

alter tablespace CR_CH_I_TCOM begin backup;

#for table
alter tablespace CR_CH_D_MST begin backup;

alter tablespace CR_CH_D_TCOM begin backup;

#for control file
alter database backup controlfile
          to '/data/ControlBACKUP/back_control.ctl' reuse;

#for redoLog file

#for config file

EOF

echo 'CRYSTAL1 Database Backup BEGIN  Completed..'
date



예제) end backup

#!/usr/bin/csh
clear
echo 'CRYSTAL1 Database Backup END  Start..'
date

# server manager start
svrmgrl << EOF >> /dev/null
connect internal

spool backup.dat

#for Monitor

#for RDBMS
alter tablespace RBS end backup;

alter tablespace SYSTEM end backup;

alter tablespace TEMP end backup;

#for TOOLS tablespace
alter tablespace TOOLS end backup;

#for USERS tablespace
alter tablespace USERS end backup;

#for INDX tablespace
alter tablespace USERS end backup;

#for user index datafile
alter tablespace CR_CH_I_MST end backup;

alter tablespace CR_CH_I_TCOM end backup;

#for table
alter tablespace CR_CH_D_MST end backup;

alter tablespace CR_CH_D_TCOM end backup;

#for control file

#for redoLog file

#for config file

EOF

echo 'CRYSTAL1 Database Backup END Completed..'
서버에 요청 중입니다. 잠시만 기다려 주십시오...