반응형

1 . 닫힌 백업 ( cold backup , close backup )

- Database가 close 된 상태에서 수행 하는 백업 ( 백업 시점이 동일해야함, 다르면 scn이 달라서 백업이 안됨 )

- data file, online redo log file , control file 백업 가능

- open 상태에서 백업 불가

- archive mode, no arcive mode 상관없음


백업 실습

순서 : 1. 백업받을 파일의 경로 확인후 db 셧다운 -> 2. 원하는 경로에 파일 복사 -> 3. db오픈 

SQL> shutdown immediate 


SQL> !

[oracle@testdb ~] $ cp -av /app/oracle/oradata/testdb/*.dbf /data/backup/close 

[oracle@testdb ~] $ cp -av /app/oracle/oradata/testdb/*.ctl /data/backup/close 

[oracle@testdb ~] $ cp -av /app/oracle/oradata/testdb/*.log /data/backup/close 

[oracle@testdb ~] $ cp -av $ORACLE_HOME/dbs /data/backup/close


[oracle@testdb ~] $ ls /data/backup/close

ctrl01.ctl  ctrl03.ctl  example01.dbf  redo02.log  sysaux01.dbf  temp01.dbf     users01.dbf

ctrl02.ctl  dbs         redo01.log     redo03.log  system01.dbf  undotbs01.dbf



2. 열린 백업 ( hot backup, begin backup , open backup )

- database 가 open 된 상태에서 수행하는 백업

- archive log mode 에서만 수행가능

- 많은 양의 redo log 가 발생

- data file , control file 만 백업 가능

백업 실습

순서 : 1. 백업 해야할 tablespace 를 백업모드로 변경 -> 2. os 명령어로 해당 tablespace의 datafile 을 백업장소로 복사 -> 3. 파일 복사 완료후 백업모드 종료


SQL> archive log list            <-- archive log mode 인지 확인     아닐경우 archive log mode 로 변경


SQL> !vi /app/oracle/open_backup.sql


alter tablespace users begin backup;                   <-- 백업모드로 변경

! cp -av /app/oracle/oradata/testdb/users01.dbf /data/backup/open/                 <-- 파일 백업장소로 복사

alter tablespace users end backup;                      <-- 백업모드 종료


alter tablespace sysaux begin backup;

!cp -av /app/oracle/oradata/testdb/sysaux01.dbf  /data/backup/open/

alter tablespace sysaux end backup;


alter tablespace undotbs1 begin backup;

!cp -av /app/oracle/oradata/testdb/undotbs01.dbf  /data/backup/open/

alter tablespace undotbs1 end backup;


alter tablespace system begin backup;

!cp -av /app/oracle/oradata/testdb/system01.dbf  /data/backup/open/

alter tablespace system end backup;


alter tablespace example begin backup;

!cp -av /app/oracle/oradata/testdb/example01.dbf /data/backup/open/

alter tablespace example end backup;


alter database backup controlfile to /data/backup/open/control01.ctl;

:wq!


SQL> @/app/oracle/open_backup.sql



백업 상태여부 조회 

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

  2   from v$datafile a, v$backup b

  3   where a.file#=b.file# ;


     FILE#       NAME                                                               STATUS             TIME

--------    -----------------------------------         -----------     --------------------

         1         /app/oracle/oradata/testdb/system01.dbf          NOT ACTIVE         2014-10-16:01:21:27

         2         /app/oracle/oradata/testdb/sysaux01.dbf           NOT ACTIVE         2014-10-16:01:20:47

         3         /app/oracle/oradata/testdb/undotbs01.dbf         NOT ACTIVE         2014-10-16:01:21:11

         4         /app/oracle/oradata/testdb/users01.dbf             NOT ACTIVE          2014-10-16:01:20:43

         5         /app/oracle/oradata/testdb/example01.dbf         NOT ACTIVE         2014-10-16:01:21:55


위 상태에서 STATUS 가 NOT ACTIVE 면 end backup 상태 ACTIVE 면 begin backup 상태 이므로 백업이 끝나면 확인해서 반드시 NOT ACTIVE 상태로 만들어 줘야 함


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


※ Hot backup 구동 원리



- scn3 까지의 데이터를 Hot backup 중인 상태 -


이때 DML 작업이 일어나 D,E 가 추가되는 상황에서 data file 이 백업중이니 변경되는 내용은 Redo Log File 에 저장된다.

이때 Redo Log File 에 필요한 데이터만 저장되는게 아니라 블록 단위로 저장되어서 많은 양의 Redo Log 가 발생한다.

그래서 백업이 오래 지속되면 그 동안의 변경내용이 모두 리두로그파일에 저장되었다가 백업이 끝난후 다시 데이터파일에 적용해야 하기 때문에 데이터 손실을 막기 위해 아카이브 모드로 작동해야 한다.


End backup 을 해야 리두로그 파일에 블록단위로 안들어가고 필요한 데이터만 들어가므로 다량의 리두로그를 쌓지 않기 위해 반드시 begin 백업후에 end 백업을 해줘야 한다.



반응형

'오라클 > 백업/복구' 카테고리의 다른 글

Redo log flle 장애 처리방법  (0) 2014.11.05
Log Miner 활용하기  (0) 2014.11.05
control file, data file 연습문제  (0) 2014.11.04
Control file 복구  (0) 2014.11.04
Data file Recovery (불완전 복구)  (0) 2014.11.04
Data File Recovery  (0) 2014.10.30
사용자 암호설정/ Archive log mode, No Archive log mode  (0) 2014.10.29

+ Recent posts