행위

오라클 온라인 백업

DB CAFE

thumb_up 추천메뉴 바로가기


1 온라인 백업의 방법 과 절차[편집]

1.1 백업 전 DB 점검사항[편집]

  1. startup 명령어에 의해 정상적으로 시작되어야 하며
  2. 사용자들의 SELECT, UPDATE, INSERT, DELETE 작업이 정상적으로 수행 가능 해야 함.
  3. 반드시 아카이브 로그 모드 이어야 함.



1.1.1 DB Online 상태 확인[편집]

select status from v$instance;

1.1.2 아카이브 모드 확인[편집]

  1. 온라인 백업방법은 반드시 아카이브 모드이어야 합니다.
  2. 오라클 서버가 사용자들에 의해 사용되고 있는 와중에 백업되는 방법이기 때문에 노-아카이브 모드에서는 수행될 수 없기 때문.
SQL>  archive log list

1.1.3 백업 디렉토리 생성[편집]

$ mkdir /backup/

1.2 테이블스페이스 단위 온라인 백업 절차[편집]

  1. 온라인 백업은 테이블스페이스 단위로 관련된 데이터 파일 복사 가능
  2. 테이블스페이가 READONLY,OFFLINE 모드는 백업 불가



1.2.1 [ SYSTEM ] 테이블스페이스 온라인 백업 절차[편집]

1) SYSTEM 테이블스페이스 온라인 백업 시작

SQL> ALTER  TABLESPACE  SYSTEM  BEGIN  BACKUP;


2) 백업 파일 복사

SQL> HOST  cp /oracle/oradata/ora11g/system01.dbf  /backup/
  • host 명령어는 sql*plus 에서 쉘명령어를 호출하는 명령어 임.

3) SYSTEM 테이블스페이스에 대한 온라인 백업 종료

SQL> ALTER  TABLESPACE  SYSTEM  END  BACKUP;

1.2.2 [ TEMP ] 테이블스페이스에 대한 온라인 백업 절차[편집]

1) TEMP 테이블스페이스에 대한 온라인 백업 시작

SQL> ALTER  TABLESPACE  TEMP  BEGIN  BACKUP;

2) 백업 파일 복사

SQL> HOST  cp /oracle/oradata/ora11g/temp01.dbf  /backup/

3) TEMP 테이블스페이스에 대한 온라인 백업 종료

SQL> ALTER  TABLESPACE  TEMP  END  BACKUP;

1.2.3 [ UNDO ] 테이블스페이스에 대한 온라인 백업 절차[편집]

1) UNDO 테이블스페이스에 대한 온라인 백업

SQL> ALTER  TABLESPACE  UNDOTBS  BEGIN  BACKUP;

2) 백업 파일 복사

SQL> HOST  cp /oracle/oradata/ora11g/undotbs01.dbf  /backup/

3) UNDO 테이블스페이스에 대한 온라인 백업 종료

SQL> ALTER  TABLESPACE  UNDOTBS  END  BACKUP;

1.2.4 [ 일반 테이블 ] 테이블스페이스에 대한 온라인 백업 절차[편집]

1) TS_EMP 테이블스페이스 백업

SQL> ALTER  TABLESPACE TS_EMP  BEGIN  BACKUP;
SQL> HOST  cp /oracle/oradata/ora11g/query01.dbf  /backup/
SQL> ALTER  TABLESPACE  TS_EMP  END  BACKUP;


  1. 온라인 백업을 수행 시 가장 주의해야 할 점=> ALTER TABLESPACE ~ BEGIN BACKUP 명령문과 ALTER TABLESPACE ~ END BACKUP; 명령문을 수행하는 시간의 차이 임.
    1. BEGIN BACKUP 문을 실행하는 순간부터 관련 테이블스페이스의 모든 파일들에는 CHECKPOINT가 더 이상 발생하지 않게됨.
    2. END BACKUP문을 실행해야만 CHECKPOINT가 다시 발생
  2. 즉, 테이블스페이스를 생성할 때 너무 큰 크기의 데이터 파일을 생성하게 되면 온라인 백업을 수행할 때 CHECKPOINT의 시점관리에 문제가 발생하여 에러가 발생할 수도 있음.
    1. 너무 큰 크기의 데이터 파일들은 2~3개 정도로 나누어 스트라이핑(Striping) 하시는 것이 원활한 백업과 복구작업에 도움이 됨.



1.2.5 온라인 백업된 모든 데이터 파일 확인[편집]

$ cd /backup/
$ ls 
SYSTEM01.DBF
UNDOTBS01.DBF
TEMP01.DBF
QUERY01.DBF

1.3 DB 전체 백업 방법[편집]

  1. 테이블스페이스 단위 백업은 ALTER TABLESPACE ~ BEGIN BACKUP과 ALTER TABLESPACE ~ END BACKUP 명령어를 반복적으로 수행해야 하기 때문에 번거로움
  2. READ ONLY 모드의 테이블스페이스와 OFFLINE 모드의 테이블스페이스에 대해서는 수행할 수 없는 것이 단점
  3. DB 전체 백업으로 하면 READ ONLY,OFFLINE 테이블 스페이스도 백업 가능



1) 전체 DB 온라인 백업 시작

SQL> ALTER  DATABASE  BEGIN  BACKUP;

2) 파일 백업

SQL>  host cp /oracle/oradata/ora11g/system01.dbf  /backup/full_online_backup
SQL>  host cp /oracle/oradata/ora11g/undotbs01.dbf  /backup/full_online_backup
SQL>  host cp /oracle/oradata/ora11g/temp01.dbf  /backup/full_online_backup
SQL>  host cp /oracle/oradata/ora11g/temp02.dbf  /backup/full_online_backup
SQL>  host cp /oracle/oradata/ora11g/users01.dbf  /backup/full_online_backup
SQL>  host cp /oracle/oradata/ora11g/query01.dbf  /backup/full_online_backup

3) 전체 DB 온라인 백업의 종료

SQL> ALTER  DATABASE  END  BACKUP;

1.4 온라인 백업을 이용한 완전 복구 방법[편집]

  1. 오라클의 모든 복구방법은 백업된 파일이 오프라인 백업 파일이든, 온라인 백업 파일이든 상관없이 모두 동일한 방법과 절차에 의해 수행함.
  2. 복구작업을 수행할 때 온라인 백업된 파일을 이용하는 것
  3. 예시) - 컨트롤 파일들이 저장되어 있는 모든 디스크에 장애가 발생.
    - 모든 데이터 파일이 저장되어 있던 디스크에 치명적인 문제 발생.
  4. 온라인 백업 파일을 이용하여 완전 복구작업 수행.



1.4.1 오라클 상태 점검[편집]

1) 오라클 서버가 사용 가능한 상태인지 확인

$ sqlplus   "/as  sysdba"
SQL>  startup

2) 아카이브 파일들이 정상적으로 생성되는지 확인

alter system switch logfile;
insert into scott.dept values(1,'Personnel','Pusan');
insert into scott.dept values(2,'Account','Pusan');
insert into scott.dept values(3,'Q.C','Pusan');

alter system switch logfile;
insert into scott.dept values(4,'Personnel','Seoul');
insert into scott.dept values(5,'Account','Seoul');
insert into scott.dept values(6,'Q.C','Seoul');

alter system switch logfile;
insert into scott.dept values(7,'Personnel','Daejeon');
insert into scott.dept values(8,'Account','Daejeon');
insert into scott.dept values(9,'Q.C','Daejeon');

commit;

select count(*) from scott.dept;
SQL>  host  ls /oracle/dbs/arch/*.arc

1.4.2 장애 발생 시키기[편집]

  • 아래 장애 시나리오 수행 전 반드시 온라인 백업을 수행 하여 백업할것
  1. 모든 컨트롤 파일과 데이터 파일이 함께 장애가 발생했다고 가정 한다.

1) 갑작스런 정전상태를 만들기 위해 ABORT 옵션으로 오라클 서버를 강제 종료

SQL>  shutdown abort   
SQL>  exit

2) 모든 데이터 파일들에 장애가 발생합니다.

rm /oracle/oradata/ora11g/system01.dbf 
rm /oracle/oradata/ora11g/undotbs01.dbf
rm /oracle/oradata/ora11g/temp01.dbf
rm /oracle/oradata/ora11g/temp02.dbf
rm /oracle/oradata/ora11g/users01.dbf
rm /oracle/oradata/ora11g/query01.dbf

3) 컨트롤 파일 삭제

rm /oracle/oradata/ora11g/*.ctl

1.4.3 온라인 백업파일을 이용하여 완전복구 수행[편집]

1) 장애가 발생한 모든 컨트롤 파일과 데이터 파일에 대한 온라인 백업 파일들을 원본 경로로 복사

1-1) 백업된 데이터파일을 원본 경로로 복사

cp /backup/system01.dbf    /oracle/oradata/ora11g/
cp /backup/undotbs01.dbf   /oracle/oradata/ora11g/
cp /backup/temp01.dbf      /oracle/oradata/ora11g/
cp /backup/temp02.dbf      /oracle/oradata/ora11g/
cp /backup/users01.dbf     /oracle/oradata/ora11g/
cp /backup/query01.dbf     /oracle/oradata/ora11g/

1-2) 백업된 컨트롤 파일을 원본 경로로 복사

cp /backup/backup_control.ctl  /oracle/oradata/ora11g/control01.ctl

1-3) 장애가 발생한 모든 컨트롤 파일 복사

cp backup_control.ctl  /oracle/oradata/ora11g/control02.ctl
cp backup_control.ctl  /oracle/oradata/ora11g/control03.ctl
cp backup_control.ctl  /oracle/oradata/ora11g/control04.ctl

2) DB 마운트 모드 기동

$ sqlplus  "/as  sysdba"
SQL>  startup mount

3) control 파일 복구

SQL> recover database using BACKUP controlfile;
  • 복구해야 할 대상 파일에 이전의 컨트롤 파일이 포함되어 있으므로 USING BACKUP CONTROLFILE 옵션 절을 사용하여 복구작업 수행해야 합니다.
ORA-00279: Change 8050 generated at 01/20/98 15:22:26 needed
ORA-00280: Change 8050 for thread 1 is in sequence #5
Specify log: {=suggested | filename | AUTO | CANCEL}

AUTO ← AUTO 키워드를 사용하여 모든 아카이브 파일을 적용.

ORA-00279: Change 8050 generated at 01/20/98 15:22:26 needed 
ORA-00280: Change 8050 for thread 1 is in sequence  arch_n.arc

ERROR 발생 ← AUTO 키워드를 적용하여 아카이브를 적용했지만 마지막 아카이브 파일

               을 적용할 때 에러가 발생하는 경우가 있습니다. 왜냐하면, 적용해야 
               할 마지막 백업 데이터는 아카이브 파일에 저장되어 있지 않고 CURRENT 
               리두로그 파일에 존재하기 때문입니다.
  • 에러가 발생하는 경우에는 다시 RECOVER DATABASE ~ 명령어 실행
SQL> RECOVER DATABASE using BACKUP controlfile;

ORA-00279: Change 8050 generated at 01/20/98 15:22:26 needed 
ORA-00280: Change 8050 for thread 1 is in sequence  arch_n.arc
Specify log: {=suggested | filename | AUTO | CANCEL}

/oracle/oradata/ora11g/redo01.log  ← 마지막 백업 데이터가 저장되어 있는 CURRENT 리두로그 파일을 입력

Log  Applied.
Media Complete  Recovery.            ← 복구작업이 완료되었습니다.

4) DB OPEN RESETLOGS


  1. 백업된 컨트롤 파일을 이용한 완전복구 방법과 동일 하게 수행
  2. OPEN 단계에서 반드시 RESETLOGS 옵션을 사용해야 함.
    1. 컨트롤 파일은 현재 시점으로 복구되었지만 데이터베이스 내의 상태정보는 여전히 일치하지 않기 때문
  3. 반드시, 모든 상태정보를 초기화 해야만 데이터베이스를 OPEN 할 수 있음



SQL>  alter database open resetlogs;

5) 정상 복구 확인

SQL> select count(*) from scott.dept;
SQL> shutdown immediate;
SQL> startup;

1.5 오프라인 백업[편집]

  • 불완전 복구를 수행하고 나면 반드시 이전의 마지막 백업파일은 재 사용될 수 없기 때문에 다시 오프라인 백업을 수행해야 함.
  • 이전의 아카이브 파일, 트레이스 파일 제거
$ cp  /oracle/oradata/ora11g/*.*     /backup
$ cp  /oracle/admin/ora11g/init.ora  /backup
$ rm  /oracle/oradata/ora11g/arch/*.arc