본문 바로가기

오라클 백업/복구

Oracle Backup


백업 대상


1. Data File

- 실제 데이터가 저장되어 있는 파일

- 현재 사용중인 Data File을 확인 후, 자주 백업 받아야 함

- 조회방법

SELECT name, status FROM v$datafile ;

또는

SELECT a.file#, a.name, b.name tsname, a.status

FROM v$datafile a, v$tablespace b

WHERE a.ts# = b.ts# ;



2. Control File

- DB를 운영하는데 중요한 내용이 들어있는 파일

- 현재 사용중인 Control File만 쓸 수 있음, 과거에 썼던 파일은 백업 받아도 소용 없음

- 조회방법

SELECT name FROM v$controlfile ;



3. Redo Log File

- 데이터에 변경이 일어난 내용을 복구에 사용하기 위해 저장하고 있는 파일

- 조회방법

SELECT a.group#, a.member, b.bytes/1024/1024 MB, b.archived, b.status

FROM v$logfile a, v$log b

WHERE a.group# = b.group#

ORDER BY 1, 2 ;



4. Parameter File

- 오라클 서버를 운영하는데 필요한 각종 설정 정보를 저장 하고 있는 파일

- 이 파일이 손실되면 오라클 서버가 시작되지 않음

- 필수 백업 파일은 아니지만 백업 받아 두는 것이 훨씬 유용

- 위치는 $ORACLE_HOME/dbs

- pfile은 initSID.ora / spfile은 spfileSID.ora

- 조회방법

show parameter spfile ;



5. Password File

- 암호파일, sys계정의 암호를 저장하는 일반 파일 

- 파라미터 파일과 동일한 디렉토리에 저장되어 있음 = $ORACLE_HOME/dbs

- 이름은 orapwSID

- 역시 필수 백업 파일은 아니지만 백업을 권장






백업 종류


1. 닫힌 백업 

= Cold Backup = Closed Backup


- 데이터베이스를 종료 시킨 후에 전체 파일들을 백업 받는 것

- 모든 파일은 동일한 checkpoint SCN을 가져야 함, 즉, shutdown 한 시점이 같아야 한다.

- shutdown abort나 instance crush등 비정상 종료가 되면 안됨

- Archive log / No archive log mode 상관없이 사용 가능

- Data File, Redo Log File, Control File 모두를 백업 받을 수 있다.

- tablespace를 offline 시키고 백업 받는 것도 일종의 closed backup


- 닫힌 백업 과정

백업 대상 조회 및 확인 --> DB 종료 (정상종료) --> 파일들 백업 수행 --> DB Open


$ cp -av 백업할파일경로 백업경로

-a : 속성, 링크 정보 등을 그대로 유지하면서 복사 (백업할때 꼭 써야하는 옵션)

-v : 각 파일의 복사나 상태를 자세히 보여줌


[실습]






2. 열린 백업

= Hot Backup = Open Backup = Begin Backup


- DB open 상태에서 백업 가능

- 닫힌 백업의 치명적 단점인 DB 종료하고 수행한다는 점을 해결 할 수 있음 (DB를 절대로 중단 할수 없는 상황에서 백업 가능)

- 열린 백업을 받기 위해서는 반드시 DB가 Archived Log Mode 여야 한다!

why? Hot Backup 동안 DML 작업이 일어나면, 백업하는 동안에 변경된 내용들은 전부 redo log file에 저장됨, 

그것도 row 단위가 아닌 block 전체가 redo log에 저장되었다가 백업이 끝나야지만 다시 data file 에 적용하기 때문

원래 checkpoint가 일어나면 해당 row가 아닌 속해있는 block 전체가 DB buffer에서 data file로 저장된다.

begin backup 시에는 redo log에 기록될 때 처음부터 block 전체로 저장이 되기 때문에

log switch와 checkpoint가 빈번히 발생 -->> 속도 저하,

그리고 redo log와 archive log 파일의 용량이 어마어마해짐 -->> 이것들이 hot backup 의 단점 

- Data File과 Control File은 열린 백업 가능하지만, Online Redo Log File은 백업 못 받음

why? Online Redo Log File에는 Data File이 변경되는 내용을 저장하는 용도로 사용 중이기 때문에 백업 ㄴㄴ


- 백업 방법

Data File 백업 방법

ALTER TABLESPACE t/s이름 BEGIN BACKUP ;

! cp dbf파일경로 백업할경로

ALTER TABLESPACE t/s이름 END BACKUP ;


Control File 백업 방법

ALTER DATABASE BACKUP CONTROLFILE TO 'ctl파일경로' ;


End Backup 수행 되었는지 확인 하는 쿼리 (Data File 만 가능)

SELECT a.file#, a.name, b.status, to_char(b.time,'YYYY-MM-DD:HH24:MI:SS') as time

FROM v$datafile a, v$backup b

WHERE a.file# = b.file# ;


STATUS 부분에 ACTIVE: begin backup 상태

    INACTIVE: end backup 상태이거나 begin backup을 수행하지 않았다는 의미

TIME은 가장 마지막에 begin backup 받은 시간


[실습]




※백업 시 주의사항

- 정기적으로 closed backup 받아놓기

- 데이터베이스의 구조가 변하게 될 경우 Control File을 백업 받고, 그 전에는 꼭 closed backup 받아야 함

- Data File의 백업은 현재 운영중인 Data File 과는 다른 경로에 저장하기

- Control File 과 Redo Log File은 다중화 시켜놓기