DB BACKUP

DB BACKUP(DB복구) 도구

  • USER 관리방식의 backup : 운영체제 명령어(CP)를 사용한 백업과 복구
  • RMAN 관리방식의 backup : RMAN(알맨)프로그램과 RMAN명령어를 사용한 백업과 복구
    • RMAN = recovery manager의 약자
    • 오라클이 제공해주는 전문 리커버리 툴




백업(이하 bk) 전략

  • 전체 DB bk : 모든 Datafile과 하나이상의 Controlfile을 포함한 백업
  • 부분 DB bk : 특정 Datafile만, Controlfile만 백업




백업 모드

  • Offline bk(=cold bk) : DB가 꺼진 상태(shut, nomount, mount)에서의 백업
  • Online bk(=hot bk) : DB가 켜진 상태(open)에서의 백업




백업 유형(Datafile만 해당됨)

  • Full bk : Datafile의 모든 block을 포함한 백업
  • Incremental bk : 마지막 백업 이후 변경된 block만을 포함한 백업




백업 파일 유형

  • image copy : 복사본 형태의 백업 파일 유형 (원본:백업본 = 1:1)
    • 확장자명 .dbf
  • backupset : 파일들의 모음(묶음)형태의 백업 파일 유형 (원본:백업본 = n:1)
    • 확장자명 .bkp




DB백업 순서

  • 위의 4가지방식을 결정한 뒤 DB백업을 진행해야한다.
  • 실습 : USER 관리방식의 backup + 전체 DB bk + Offline bk(=cold bk) + Full bk + image copy
  1. 현재 가지고 있는 datafile과 controlfile 정보조회
    • 현재 내가 가지고 있는 datafile 8개, controlfile 3개
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
SQL> select name from v$datafile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_system_fwvn49fw_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_hp871s7n_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_sysaux_fwvn5f1l_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_undotbs1_fwvn66mp_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_example_hp86s7s0_.dbf
/u01/app/oracle/oradata/ORCL/datafile/o1_mf_users_fwvn681o_.dbf
/u01/app/oracle/oradata/ORCL/datafile/appuser01.dbf
/u01/app/oracle/oradata/ORCL/datafile/appuser02.dbf

8 rows selected.

SQL> select name from v$controlfile;

NAME
--------------------------------------------------------------------------------
/u01/app/oracle/oradata/ORCL/controlfile/o1_mf_fwvn95xm_.ctl
/u01/app/oracle/fast_recovery_area/orcl/ORCL/controlfile/o1_mf_fwvn96cd_.ctl
/home/oracle/control103.ctl
  1. 백업을 위해 DB를 정상적으로 종료한다.
1
2
SQL> shut immediate
SQL> !
  1. 백업파일을 저장할 폴더를 생성한다.
1
[oracle@localhost oracle]$ mkdir backup
  1. controlfile백업하기
  • 백업할 컨트롤파일이 있는 곳으로 이동 후 copy명령어를 입력한다
  • 원본경로 안에서 cp명령어를 날릴경우 원본경로는 생략가능하다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//현재 컨트롤파일확인
[oracle@localhost oracle]$ cd /u01/app/oracle/oradata/ORCL/controlfile
[oracle@localhost oracle]$ ls
o1_mf_fwvn95xm_.ctl

$> cp 원본경로/이름 복사경로/이름

//컨트롤파일백업
[oracle@localhost oracle]$ cp cp o1_mf_fwvn95xm_.ctl /home/oracle/backup/conbk.ctl

//백업잘되었는지 확인
[oracle@localhost oracle]$ cd /home/oracle/backup
[oracle@localhost backup]$ ls
conbk.ctl
  1. datafile백업하기
  • .(점)의 의미 : 원본파일명 그대로 복사하겠다는 의미.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//현재 데이터파일 확인
[oracle@localhost backup]$ cd /u01/app/oracle/oradata/ORCL/datafile/
[oracle@localhost datafile]$ ls
appuser01.dbf o1_mf_sysaux_fwvn5f1l_.dbf o1_mf_undotbs1_fwvn66mp_.dbf redo1c.log redo4c.log
appuser02.dbf o1_mf_system_fwvn49fw_.dbf o1_mf_users_fwvn681o_.dbf redo2c.log
o1_mf_example_hp86s7s0_.dbf o1_mf_temp_fwvnbgvk_.tmp o1_mf_users_hp871s7n_.dbf redo3c.log

//데이터파일 전체 백업
[oracle@localhost datafile]$ cp *.dbf /home/oracle/backup/.

//백업완료되었는지 확인
[oracle@localhost datafile]$ cd /home/oracle/backup
[oracle@localhost backup]$ ls
appuser01.dbf conbk.ctl o1_mf_sysaux_fwvn5f1l_.dbf o1_mf_undotbs1_fwvn66mp_.dbf o1_mf_users_hp871s7n_.dbf
appuser02.dbf o1_mf_example_hp86s7s0_.dbf o1_mf_system_fwvn49fw_.dbf o1_mf_users_fwvn681o_.dbf
  1. 다시 DB로 복귀하기
1
2
3
4
[oracle@localhost backup]$ exit
exit

SQL>