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 |