online backup(archive log mode)

2010.05.12 08:31

조인상 조회 수:19439

원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어

Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++


online backup(archive log mode)
Oracle: Oracle 8.1.7 EE

complete recovery를 보장하는 online backup(hot backup)을 하는 방법을 설명한다.
이 백업은 DB의 downtime을 허용하지 못하는 환경에서 사용된다.
처음의 백업엔 offline backup과 병용하여 사용하기를 권하고 있다.

1.
svrmgrl에서 'archive log list' 하여 'Oldest online log sequence' 의 값을 파악

SVRMGR> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/admin/dev2/arch
Oldest online log sequence 1044
Next log sequence to archive 1046
Current log sequence 1046
SVRMGR>



2.
백업할 tablespace목록, 각 tablespace에 할당된 datafile을 파악하기 위해 다음 질의를 실행

SVRMGR> select t.name, d.name from v$tablespace t, v$datafile d where t.ts# = d.ts#;
NAME NAME
------------------------------ --------------------------------------------------------------------------------
SYSTEM /u01/app/oracle/oradata/dev2/system01.dbf
TOOLS /u01/app/oracle/oradata/dev2/tools01.dbf
RBS /u01/app/oracle/oradata/dev2/rbs01.dbf
TEMP /u01/app/oracle/oradata/dev2/temp01.dbf
USERS /u01/app/oracle/oradata/dev2/users01.dbf
INDX /u01/app/oracle/oradata/dev2/indx01.dbf
TS_TEST /u01/app/oracle/oradata/dev2/ts_test01.dbf
TS_TEST /u01/app/oracle/oradata/dev2/ts_test02.dbf



3.
각각의 테이블스페이스를 백업모드로 변경하면서, tablespace별로 속한 데이터파일을 백업(복사)한다.
svrmgrl에서 'alter tablespace 테이블스페이스명 begin backup' 실행
이는 데이터파일 헤더를 동결(checkpoint기록을 중지)하여 테이블스페이스를 백업 준비상태로 둔다.
해당 테이블스페이스 백업이 완료되었다면, 'alter tablespace 테이블스페이스명 end backup' 실행하여
테이블스페이스가 사용될 수 있도록 변경한다.

SVRMGR> alter tablespace ts_test begin backup;
Statement processed.
SVRMGR> !cp /u01/app/oracle/oradata/dev2/ts_test01.dbf /backup/oracle/
SVRMGR> !cp /u01/app/oracle/oradata/dev2/ts_test02.dbf /backup/oracle/
SVRMGR> alter tablespace ts_test end backup;

나머지 테이블스페이스들도 위의 과정대로 실행한다.

SVRMGR> @tablespace_backup

[tablespace_backup.sql]
alter tablespace SYSTEM begin backup;
!cp /u01/app/oracle/oradata/dev2/system01.dbf /backup/oracle/
alter tablespace SYSTEM end backup;

alter tablespace TOOLS begin backup;
!cp /u01/app/oracle/oradata/dev2/tools01.dbf /backup/oracle/
alter tablespace TOOLS end backup;

alter tablespace RBS begin backup;
!cp /u01/app/oracle/oradata/dev2/rbs01.dbf /backup/oracle/
alter tablespace RBS end backup;

alter tablespace TEMP begin backup;
!cp /u01/app/oracle/oradata/dev2/temp01.dbf /backup/oracle/
alter tablespace TEMP end backup;

alter tablespace USERS begin backup;
!cp /u01/app/oracle/oradata/dev2/users01.dbf /backup/oracle/
alter tablespace USERS end backup;

alter tablespace INDX begin backup;
!cp /u01/app/oracle/oradata/dev2/indx01.dbf /backup/oracle/
alter tablespace INDX end backup;


* 테이블스페이스의 backup모드를 보려면 v$backup을 조회하면 된다.
status가 active로 되어 있으면 해당 테이블스페이스가 begin backup모드상태임을 의미한다.
SVRMGR> select t.name, d.name, d.file#
2> from v$tablespace t, v$datafile d
3> where
4> t.ts# = d.ts#
5> and
6> t.name = 'TS_TEST';
NAME NAME FILE#
------------------------------ --------------------------------------------- ----------
TS_TEST /u01/app/oracle/oradata/dev2/ts_test01.dbf 29
TS_TEST /u01/app/oracle/oradata/dev2/ts_test02.dbf 30
2 rows selected.
SVRMGR> select * from v$backup where file# in (29,30);
FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- ---------
29 NOT ACTIVE 230427 19-DEC-01
30 NOT ACTIVE 230427 19-DEC-01
2 rows selected.
SVRMGR> alter tablespace ts_test begin backup;
Statement processed.
SVRMGR> select * from v$backup where file# in (29,30);
FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- ---------
29 ACTIVE 230498 19-DEC-01
30 ACTIVE 230498 19-DEC-01
2 rows selected.
SVRMGR> alter tablespace ts_test end backup;
Statement processed.
SVRMGR> select * from v$backup where file# in (29,30);
FILE# STATUS CHANGE# TIME
---------- ------------------ ---------- ---------
29 NOT ACTIVE 230498 19-DEC-01
30 NOT ACTIVE 230498 19-DEC-01
2 rows selected.




4.
svrmgrl에서 archive log list를 수행하여 'Current log sequence' 값을 파악

SVRMGR> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/admin/dev2/arch
Oldest online log sequence 1044
Next log sequence to archive 1046
Current log sequence 1046


5.
오라클이 현재 redo로그에 대한 archive를 생성하도록 하고,
위에서 구한 Oldest online log sequence인 1044에서 바로 위에서 구한 Current log sequence까지의
아카이브로그를 백업한다.

컨트롤파일 헤더를 갱신하기 위해 log switch를 실시한다.
SVRMGR> alter system switch logfile;
Statement processed.

SVRMGR> archive log list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/admin/dev2/arch
Oldest online log sequence 1045
Next log sequence to archive 1047
Current log sequence 1047

[oracle@dev2 arch]$ pwd
/u01/app/oracle/admin/dev2/arch
[oracle@dev2 arch]$ ls
arch_1_1000.arc arch_1_1007.arc arch_1_1014.arc arch_1_1021.arc arch_1_1028.arc arch_1_1035.arc arch_1_1042.arc arch_1_1001.arc arch_1_1008.arc arch_1_1015.arc arch_1_1022.arc arch_1_1029.arc arch_1_1036.arc arch_1_1043.arc arch_1_1002.arc arch_1_1009.arc arch_1_1016.arc arch_1_1023.arc arch_1_1030.arc arch_1_1037.arc arch_1_1044.arc
arch_1_1003.arc arch_1_1010.arc arch_1_1017.arc arch_1_1024.arc arch_1_1031.arc arch_1_1038.arc arch_1_1045.arc arch_1_1004.arc arch_1_1011.arc arch_1_1018.arc arch_1_1025.arc arch_1_1032.arc arch_1_1039.arc arch_1_1046.arc arch_1_1005.arc arch_1_1012.arc arch_1_1019.arc arch_1_1026.arc arch_1_1033.arc arch_1_1040.arc arch_1_1006.arc arch_1_1013.arc arch_1_1020.arc arch_1_1027.arc arch_1_1034.arc arch_1_1041.arc

[oracle@dev2 arch]$ cp arch_1_1044.arc /backup/oracle
[oracle@dev2 arch]$ cp arch_1_1045.arc /backup/oracle
[oracle@dev2 arch]$ cp arch_1_1046.arc /backup/oracle


백업받은 아카이브로그 이외의 로그는 삭제한다.
SCN이 순서대로 부여되므로 1044이전의 SCN을 가지는 로그들을 삭제해준다.
모든 archive log를 삭제해도 상관없다.

SVRMGR> select sequence#, archived, status from v$log;
SEQUENCE# ARC STATUS
---------- --- ----------------
1045 YES INACTIVE
1046 YES INACTIVE
1047 NO CURRENT
3 rows selected.

[oracle@dev2 arch]$ rm arch_1_10[0,1,2,3]*
[oracle@dev2 arch]$ ls -l
total 2791
-rw-r----- 1 oracle oinstall 512512 Dec 18 17:10 arch_1_1040.arc
-rw-r----- 1 oracle oinstall 512512 Dec 18 17:10 arch_1_1041.arc
-rw-r----- 1 oracle oinstall 512512 Dec 18 17:10 arch_1_1042.arc
-rw-r----- 1 oracle oinstall 512512 Dec 18 17:10 arch_1_1043.arc
-rw-r----- 1 oracle oinstall 512512 Dec 18 20:33 arch_1_1044.arc
-rw-r----- 1 oracle oinstall 230912 Dec 19 12:26 arch_1_1045.arc
-rw-r----- 1 oracle oinstall 44032 Dec 19 13:55 arch_1_1046.arc
[oracle@dev2 arch]$ rm arch_1_1040.arc arch_1_1041.arc arch_1_1042.arc arch_1_1043.arc
[oracle@dev2 arch]$ ls -l
total 775
-rw-r----- 1 oracle oinstall 512512 Dec 18 20:33 arch_1_1044.arc
-rw-r----- 1 oracle oinstall 230912 Dec 19 12:26 arch_1_1045.arc
-rw-r----- 1 oracle oinstall 44032 Dec 19 13:55 arch_1_1046.arc


6. 컨트롤 파일을 백업

SVRMGR> select * from v$controlfile;
STATUS NAME
------- --------------------------------------------------------------------------------
/u01/app/oracle/oradata/dev2/control01.ctl
/u02/app/oracle/oradata/dev2/control02.ctl
2 rows selected.
SVRMGR> alter database backup controlfile to '/backup/oracle/control_20011219.ctl';
Statement processed.

% 컨트롤파일을 스크립트로 형식으로 백업하려면 위 문장대신 아래와 같이 한다.
init.ora의 background_dump_dest에 지정한 위치에 저장된다.

alter database backup conrolfile to trace

백업디렉토리인 /bakup/oracle에는 다음과 같이 백업된 파일들이 있다.
이 디렉토리에 있는 파일들을 테이프등으로 이동시켜 보관한다.
번호 제목 글쓴이 날짜 조회 수
35 오라클 캐릭터셋 변경 조인상 2010.07.30 13491
34 time-based recovery 조인상 2010.08.24 7417
33 오라클 exp 유틸리티를 이용한 백업 조인상 2010.09.15 16900
32 오라클 패치후 각 컴퍼넌트들 버전 확인 쿼리 조인상 2010.10.05 46338
31 imp 시의 속도향상을 위한 팁 조인상 2010.10.13 14038
30 롤백세그먼트 부족에 대한 관리법 (ORA-01555) 조인상 2010.10.13 12455
29 ORA-12705: Cannot access NLS data files or invalid environment specified 조인상 2011.01.01 16481
28 HP-UX 에 오라클 설치 조인상 2011.02.18 15746
27 오라클 10g 이상의 SGA영역 자동화(sga_target 파라미터) 조인상 2011.04.05 18430
26 오라클 11g - ADR/ADRCI : 새로운 alertlog 위치 조인상 2011.05.17 29718
25 Unix/Linux 에서 exp 동시에 gzip 으로 압축하기 조인상 2011.06.10 10198
24 10G: ORA-6512 AT SYS.OLAPIHISTORYRETENTION [ID 266728.1] 조인상 2011.06.23 12365
23 Oracle 7.3.4 for Windows file 조인상 2011.08.31 11885
22 성능분석을 위한 v$sysstat, v$sesstat, v$system_event 조회 조인상 2011.09.27 50449
21 Master Note for Diagnosing ORA-4030 (Oracle Metalink) 조인상 2011.10.31 12667
20 Diagnosing and Resolving ORA-4030 errors (Oracle Metalink) 조인상 2011.10.31 13205
19 AIO on HP-UX filesystem 조인상 2011.11.01 13222
18 ORA-04063: package body "EXFSYS.DBMS_EXPFIL_EXP" has errors 조인상 2012.01.04 20766
17 AIX 6.1에 오라클 9i 설치 조인상 2012.03.24 17337
16 Oracle 설치문서에서 보는 ASM file 조인상 2012.03.30 19747
서버에 요청 중입니다. 잠시만 기다려 주십시오...