database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 34983 게시물 읽기
No. 34983
백업과 복구시 archive 관련 질문드립니다.,
작성자
윤철민(magnaru)
작성일
2008-12-17 12:59
조회수
13,020

백업과 복구시 궁금한 점 3가지만 알려주세요~~
문제는 
1. archive log backup 한 내용을 유지하는 것
2. 폴더구조
3. 복구시 archive log
이렇게 3가지입니다. 

간단하게 설명을 드릴께요.
이번에 웹 서비스를 준비하고 있습니다.
DB는 오라클을 사용하고 있구요.
금전에 관련된 부분이 있어서 DB관리를 확실하게 해야 하는 필요성이 생겼습니다.
그래서 요즘 오라클의 백업 정책을 구상하고 있습니다.
예전에 즐겨찾기에 추가해 두었던 이 곳에 들어왔는데 좋은 정보들이 많더군요.
그동안 맨날 눈팅만 하면서 나름대로 내용을 만들어 보게되던 중에 궁금한점이 생겨시 이렇게 글을 남기게 되었습니다.

본론으로 들어가자면
테스트 중이라 Oracle 9i + window XP + 제 컴퓨터를 서버로 쓰고 있구요.
서비스의 특징은 자주 트랜잭션이 발생하고 항상 DB를 켜놓아야하고 손실되는 데이터가 없어야 하는 경우입니다.
이런경우는 모 게임들 처럼 정기점검일을 만들어서 DB를 내리고 백업을 하는게 좋겠죠?

백업은 기본적인 정책처럼
0. Archive Mode 로 운행을 하고 Redo log file, Controlfile, Archive log file 은 D와 E 드라이버에 저장되게 설정해놨구요.
1. 매달 Cold Backup을 하고
 -> datafile, controlfile, redo log file 정도
2. 매주 Hot Backup을 하고
 -> datafile, controlfile(trace) 정도
3. 매일 Archive log, 자주 사용되는 Tablespace를 Backup 하기
 -> archive log file, 사용자 기록이 남는 tablespace 정도
로 구상을 해보았습니다.

4. 폴더 구조
# archive log file의 백업을 저장할 폴더 생성.
MKDIR e:\ora\backup\daily\archive 
오프라인, 온라인, 날짜 별로 백업을 저장할 폴더 생성.
MKDIR e:\ora\backup\offline\20081215 오프라인 백업
MKDIR e:\ora\backup\offline\20081215\a_tablespace 오프라인 백업
MKDIR e:\ora\backup\offline\20081215\b_tablespace 오프라인 백업
온라인 백업
MKDIR e:\ora\backup\online\20081215\a_tablespace 온라인 백업
MKDIR e:\ora\backup\online\20081215\b_tablespace 온라인 백업 
redo log file의 멀티 사용을 위한 폴더 생성. (D드라이버에 오류발생시 사용할 파일)
MKDIR e:\ora\biz
아카이브 로그의 멀티 사용을 위한 폴더 생성
MKDIR d:\oracle\oradata\biz\archive
MKDIR e:\ora\biz\archive 

#
멀티 사용을 위한 Parameter 설정하기(Controlfile, Archive Log)
# Parameter 파일 위치 - d:\oracle\admin\biz\pfile\init.ora.113200814935
###########################################
# File Configuration Controlfile 설정 부분 수정(해당 위치에 control 파일들을 위치시킨다.)
###########################################
control_files=("D:\oracle\oradata\biz\CONTROL01.CTL", "D:\oracle\oradata\biz\CONTROL02.CTL", "D:\ora\biz\CONTROL03.CTL")

#

MKDIR e:\ora\backup\online\20081215

# controlfile

#

###########################################
# Archive Log 설정 부분 추가
###########################################
log_archive_start=true;
log_archive_dest_1="loaction=d:\oracle\oradata\biz mandatory"
l
og_archive_dest_2="loaction=e:\ora\biz\archive
log_archive_formet=arch_%T_%S.arc

# redo log file 도 그룹 3개를 만들어 그룹당 맴버 2개씩해서 D와 E에 하나씩 생성하였습니다.


백업까지는 이렇게 만들어 보았는데 문제는 
1. archive log backup 한 내용을 유지하는 것
2. 폴더구조
3. 복구
이렇게 3가지입니다. 

- 문제점1번
archive log는 datafile에 발생하는 트랜잭션을 redo log file에 기록되는데 용량이 넘어서 다음 그룹으로 넘어갈때 redo log를 아카이빙해서 남기는거잔요.
주기적으로 하는 Cold와 Hot Backup을 하게되는데 
첨에 생각했던건 1일에 cold백업을하고 아카이브를 보관하고 있다가
5일에 hot 백업을 한다음에 이전 archive log는 지우고 다시 다음 백업이 있을 때까지 보관하고 그런식으로 생각을 했는데요

문제
는 7일에 장애가 발생했는데
5일에 hot 백업한 내용을 사용하지 못할 경우에는 5일부터의 archive log와 1일에 cold backup한 내용을 가지고 7일의 장애시점 전까지 복구를 해야하자나요
여기서 제가 첨에 생각했던대로 한다면 cold 이후부터 archive log를 가지고 있는게 아니고 사용할 수 없는 hot 백업 부터 가지고있으니깐 
1일부터 5일사이의 데이터는 복구할 수가 없게 되는건데
이럴 경우에는 archive log를 어떤식으로 백업 받아놔야 하는건지 궁금합니다!!!!
폴더구분방법이나 유지기간이나 방법등...

- 문제점 2번
cold 백업과 hot 백업의 폴더 구조인데요
cold는 2~3회 전 기록을 유지하고 hot 백업은 7회 전 기록을 유지하려고 구상했습니다.
문제이런식으로 할 경우에 위에 적은 경로처럼 백업 작업을 한 날짜로 폴더명을 구분해서 사용하면 될까요?

- 문제점 3번
복구에는 완전 복구와 불완전 복구가 있다고 알고 있습니다.
그것을 구분 하는 기준은 
장애발생시점 전까지 모두다 조건이 만족해서 복구 작업을 완료햇을 경우를 완료 복구라하고
꼭 장애발생시점 전까지가 아니고 중간의 기록이 없다거나 DBA의 설정대로 어느시점까지만 복구하는게 불완전 복구 인건가요?

복구에 대해서 찾아보던중 아래의 불완전 복구시 사용하는
SQL> alter database open resetlogs;
를 하고나면 archive log sequence가 초기화 되어 이전 archive log를 복구에 사용할 수 없다는 내용이 있었습니다.
그렇다면 7일날 장애가 발생해서 5일날 hot 백업을 한 파일을 가지고 불완전 복구를 했는데 5일날 백업한 내용보다 더 이전인 3일날 백업한 내용으로 복구를 다시 해야한다고 하면
문제는 5일날 복구할때 arvhice log sequence가 초기화 되었으면 3일날 복수할때 arvhice log sequenc가 틀려서 복구가 안되지 않을까요?
백업과 복구사이에서 일어나는 arvhice log sequence의 변화에 대해서 궁금증합니다.쓰다보니 길이 무지 길어졌네요 ;;;;
이제 백업과 복구에 대해서 공부한지 일주일이 지나고 있는 시점이라 궁금한점이 무지 많네요 ㅋ
내일 오후까지 정책 구상을 완료해야하는데 걱정입니다....
Oracle 고수님들의 많은 지적과 답변을 기다리겠습니다.
귀찮으시더라도 도와주세요~~~~~~~~~~~~


마지막으로 복구에 대해서 확실하게 알수 있는 방법은 어떤것들이 있을까요??
아직도 불완전 복구 완전 복구 구분이 햇갈리네요 ㅋ


이 글에 대한 댓글이 총 4건 있습니다.

복구가 중요한게 아니라 실은 백업이 중요하다고 볼수 있습니다. 왜 이런말이 있잔아요.
복구에 실패한 dba는 용서해도 백업에 실패한 dba는 용서 할수 없다. 즉, 백업분이 완전하지 않으면
복구 방법도 안생기니까 ㅠ.ㅠ 
각설하고 어떠한 백업전략을 가져가느냐는 회사마다..상황마다 다릅니다.
질문자님이 세운신게 정답일수있다는 말입니다. 본인이 사정을 더 잘 아시니까...
통상 백업주기는 1주일 단위로 가져갑니다. offline 백업이냐? online 백업(hot) 이냐는 이 시스템이
24시간 계속 돌아가야 하는냐 아니냐 에 따라 달라집니다.그리고 보관주기 또한 중요합니다.
왜냐구요..일주일전에 백업받았는데...복구할려니 백업분에 문제가 있다...그럼 그 전주걸 가지고 복구해야 지요? 한데...철민님의 말처럼 백업분을 테스트하는 과정없이 아카이브를 지웠다...그럼 복구 방법 없습니다....완전복구는 노아카이브모드 또는 아카이브모드 에서 가능하고 불완정복구는 아카이브모드에서 가능합니다. 말그대로...완전복구는 데이타베이스 전체를 장애시점까지 완전히 복구하는걸 말하고 불완전복구는 장애이전시점(원하는시점)(time base, cancel base, 변경(scn) base) 까지 복구하는걸 말합니다. 즉 중요 테이블을 delete 했다면...그래서 복구한다면 완전복구는 아무리해도 delet 한 테이블을 살릴수 없습니다. 왜냐면 delete 시점까지 복구되니까요...불완전복구는 delete 이전시점 까지 복할수 있으니까 살릴수 있습니다.
전략 예) 1. 주단위 offline 백업
            2. 일단위 archive 백업
            3. 일단위 export 백업
            (요건 운영하시다 보면 받드시 필요할겁니다. 하다못해 복구 실패 했더라도 
              최소한 전일까지는 돌아 갈수 있으니..)
            4. 보관주기 (3개월)

offline 백업과 hot 백업 둘다를 전략으로 가져갈 필요없습니다. 1번에 offline 하시던 online 하시던 상관없습니다. 복구 절차는 동일하니까요...

백업 및 복구는 많이 경험해 보셔야 하구요...
이와 pc에 깔로 하시니까 다양한 시나리오 만드셔서 해 보세요~~
그리고 이외에 버전에 따라 여러 백업/복구 기법이 있으니...공부해 보시구요..

수영님이 2008-12-17 15:54에 작성한 댓글입니다. Edit

//수영님

답변 감사합니다.
독학을 하느라 햇갈리는 부분이 많았었는데
방향을 잡는데 많은 도움이 되었습니다.
백업 종류, 주기, 복구 구분에 대하여 더 확실하게 알게 된듯합니다.
수영님 말씀대로 쿨백업은 제외하고 핫백업만을 가져가도록 하는 방법으로 수정해보렵니다 ㅎ
그럼 백업도 보관도 훨 수월해질듯합니다 ㅎㅎㅎ
enterprise manager console 이라는 것도 한번 해보려구요
한번 훌터보니깐 백업 주기 설정해놓는것도 잇더라구요 ㅋㅋㅋ
근데 이거 사용방법을 잘 몰라서 삽질좀 많이 해야할듯 하네요~

완벽한 백업을 하는 그날까지 ㄱㄱ씽!!!!

윤철민님이 2008-12-18 09:24에 작성한 댓글입니다.
이 댓글은 2008-12-18 09:25에 마지막으로 수정되었습니다. Edit
기본 원칙 : 1. HOT Backup 은 복구시 archive backup이 필요 합니다. (control file 도 )
2. Cold Backup 은 그 자체만으로도 복구가 가능합니다.
복구하고자 하는 시점까지 가고자 할때 어떤 백업 본이 사용가능한지 체크 하세요.
그리고 가장 중요한건 정책적으로 복구는 어디까지 해야 하고, 얼마나 복구 시간을 가져갈수 있는지... 만일 데이타가 깨졌을 경우 다운 타입(복구시간)을 얼마나 가져갈수 있는지를 기준으로 백업 정책을 만드시는게 더 편할듯.. 나머진 기술적으로 2가지 원칙에 맞추시면 됩니다.
석훈님이 2008-12-18 09:27에 작성한 댓글입니다. Edit

//석훈님

답변 감사효 ㅎㅎ

복구를 할때 DB는 다운을 시키고 해야하기 때문에
사용자에게 서비스를 중단한다고 공지로 알려야하고
복구 시간이 얼마나 걸리는지를 정책적으로 정해야 한다는 말씀이시죠?

윤철민님이 2008-12-18 10:09에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
34988DB LINK 재생성 후 문제
박상수
2008-12-18
2871
34985쿼리 도움좀 주세요~ [2]
초보
2008-12-17
2877
34984update select 에 대한 질문 [2]
장현철
2008-12-17
3476
34983백업과 복구시 archive 관련 질문드립니다., [4]
윤철민
2008-12-17
13020
34981백업 정책을 만들고 있는데 궁금한 점이 생겼습니다!!
2008-12-17
2294
34980LONG 타입 데이타 등록시 에러
오라클
2008-12-16
2586
34978특정 컬럼의 중복을 제거하고 싶습니다. [6]
신성욱
2008-12-16
3317
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다