RMAN Backup 개념
▣RMAN Backup 개념
- Recovery Manager Backup은 Server-Managed Backup
- 사용자 관리 백업은 모두 사용자가 수행해야 하지만, 이것은 RMAN상에서 관리됩니다.
- 결과적으로 서버프로세스가 수행되고, 채널이라는 것을 반드시 사용함으로써, 이 채널이 서버프로세스상의 채널로 동작하고, RMAN 은 서버프로세스에 매우 의존적입니다.
- Recovery Manager는 Backup작업을 위해 Oracle Server Session사용
- 전체 Database, Tablespace, 모든 Datafile, 선택된 Datafile, Control file, Archived Redo log file backup
- 선택적으로 SPFILE까지는 백업대상이 될 수 있으나, PFILE & Redolog 파일은 백업대상에서 완전하게 제외됩니다.(즉, 필요한 파일만 백업 받는다는 말입니다.)
- Closed Database Backup
- Target Database Mount
- Datafile, Control file, Archived Redo log file 포함
- 운영모드가 더 중요하다는 것 잊지마세요. 항상 ARCHIVE MODE여야 합니다.
- 열린 Database Backup
- Tablespace를 Backup Mode로 전환할 필요 없음
- 누군가 ALTER DATABASE BEGIN BACKUP 명령어를 통하여 백업을 받고 있다면, 여기에 포함된 백업은 할 수 없습니다.
- Datafile, Control file 및 Archived Redo log file 포
- 운영모드가 더 중요하다는 것 잊지마세요. 항상 ARCHIVE MODE여야 합니다.
▣Recovery Manager Backup
COPY와 백업 셋
- COPY : 운영체제의 COPY와 동일하지만, RMAN이 카피에 대한 복사본에 대한 오류검증을 해줍니다.
- 이것을 통한 백업은 모든 블록을 받기 때문에, 원본과 용량이 동일해지며, 숫자도 동일해집니다.
- 백업셋 : 백업본들의 집합이라고 합니다. 백업이라는 명령문을 통하여 실행시에 만들어 집니다.
▣Backup Sets
- 위의 그림을 보면 하나의 셋에 2개씩의 백업을 넣어서 총 3개가 생성되게 됩니다.
▣Backup Set 특성
- BACKUP 명령은 Backup Set 생성
- Backup Set은 대개 둘 이상의 파일 포함
- 위의 그림을 보면 하나의 셋에 파일이 2개이상 포함된 것을 확인할 수 있었습니다.(그림2)
- 디스크 또는 테이프에 Backup Set 기록 가능
- 백업셋으로 받는다면 위의 2가지 장치에 모두 기록이 가능하지만, RMAN의 COPY는 디스크에만 대상을 지정할 수 있습니다.
- Backup Set에서 파일을 추출하려면 Restore 작업 필요
- Datafile Backup Set은 Incremental 또는 전체(Full) Backup
- Full Backup: 파일 하나를 처음부터 끝까지 스캔해서 백업
- Incremental : 지난번 백업본과 비교하여 변경된 것만 백업
- Backup Set은 사용하지 않은 Block은 포함하지 않음
- 따라서, 원본보다 사이즈가 많이 작아질 수 있습니다.
▣Backup Piece
- Backup Piece 는 Backup Set에 있는 파일
- Backup Piece는 둘 이상의 Datafile에 있는 Block 포함 가능
- 실제 운영체제에서 RMAN을 수행해서 백업받은 파일을 Backup Piece 라고 볼 수 있습니다.
- 결론적으로 셋은 하나인데, 저장장치의 용량제한이 있기 때문에, 파일을 여러개로 나눈 것이라고 할 수 있으며, 예를 들면 하나의 영화파일인데 마치 CD-ROM의 용량제한으로 2개로 나눈것과 같습니다.
- 운영체제에서는 Piece로 분류된 파일만 보여지게 되며, 백업셋은 논리적으로 이 파일들을 묶어서 관리됩니다.
- Piece라는 것은 백업셋의 하위에 속하게 되며, 이 Piece는 하나의 셋에 포함되어야 합니다.
▣Backup Piece Size
- Backup Piece Size는 다음과 같이 제한
- MAXPIECESIZE : 백업피스 하나 당 최대 사이즈를 지정
- FILESPERSET : 파일 당 셋의 개수는 3개이상이면 안된다는 말.
▣BACKUP 명령
- 설명안해도 될....듯.........
▣다중화된 Backup Set
- 테이프 스트리밍을 위해 둘 이상의 Datafile을 Backup Set으로 다중화
- 오라클의 블록 단위로 순차적으로 읽어서 백업셋을 만듭니다.
- 따라서 백업셋에는 섞여서 들어가게 되는데, 그 이유는 IO의 분산을 하기 위함입니다.
- 이건 사용자가 설정하거나 하는 것이 아니라,. 기본적인 방식입니다.
▣Backup Set의 병렬화
- 복수 Channel을 할당하고, 경우에 따라 filesperset을 지정, 많은 수의 파일을 포함시킨다.
- 그림 상으로 백업 DEVICE는 테이프 장치인데, 이 그림처럼 받을려면 채널을 병렬로 띄워야 합니다.
- 만약 PC에 테이프장치가 하나밖에 없다면? 안되겠지요.
- 물리적으로도 다 지원이 되어야 하는 것입니다.
▣이중화된 Backup Set
- 안전한건 좋은데, 경제적인 측면등에 대해서는 고려하지 않은 방법이라고 할 수 있겠습니다.
▣Backup Set의 Backup
▣Archived Redo log file Backup
- Online Redo log file의 자동 Log Switch
- 자동으로 로그스위치를 일으켜 마지막 로그까지 자동으로 모두 백업하겠다는 뜻입니다.(명령문이 필요없죠잉)
- Archived Log의 Log Failover 수행
- 두 개의 경로에 백업을 했을 경우라도 기본적으로는 하나의 백업본을 대상으로 복구를 하게 됩니다.
- RMAN을 사용하지 않을 경우에는 백업을 했던 다른 경로를 사용자가 재지정해주어야 하지만, RMAN에서는 자동으로 찾아서 복구를 수행해 줍니다.
- Backup이 필요한 Archived Log Backup
▣Archived Log Backup Set
- Archived Redo log file만 포함
- 리두로그나 아카이브는 OS단위의 저장이 되기 때문에, 하나의 셋으로 만들 수 없습니다.
- 아카이브는 아카이브로그 끼리만 하나의 셋이 됩니다.
- 항상 전체(Full) Backup
- 항상 전체백업을 수행합니다. 따라서 incremental 백업은 없습니다.
- ARCHIVELOG ALL : Archive 목적지의 모든 것을 백업하라는 뜻입니다. 특정 아카이브의 범위 지정도 가능합니다.
- DELETE ALL INPUT : 운영체제의 MOVE나 탐색기의 잘라내기와 비슷합니다. 즉, 백업이 종료되고 나면 원본은 삭제하라는 명령어 입니다.
▣Backup 제약 조건
- Database는 Mount 또는 Open
- 완전히 닫혀있으면 안됩니다.
- Online Redo Log Backup은 지원되지 않음
- 안됩니다. 안되요. 안받아도 되니까 안되는거에요.
- NOARCHIVELOG Mode에서는 “Clean” Backup만 사용 가능
- RMAN이 아니라 더 훌륭한 툴이 오더라도 CLEAN만 됩니다. 백업방식은 툴이 결정하는게 아니라, 운영모드가 결정합니다.
▣Image Copy
▣Image Copy 특성
- Disk에만 쓰기 가능
- 즉시 Recovery에 사용할 수 있도록 Restore할 필요가 없음
- 원본 그대로 복사한것이니까요.
- 단일 Datafile, Archived log 또는 Control File의 물리적 복사본
- 사이즈가 줄어들지 않습니다.
- 모든 Block을 포함한다는 점에서 운영체제 Backup과 가장 유사함
- 사이즈가 동일!
- Incremental Backup 전략의 일부로 사용가능
- 방식 자체가 풀 백업입니다. 따라서, 다음번에 inceremental 백업셋의 생성이 가능합니다.
▣Image Copy : 예제
- TAG : OS에서는 식별되지 않습니다. 이것은 어떠한 백업본에 대한 별칭입니다.
▣COPY 명령
- 원본을 경로대신에 파일번호로 지정했습니다. (이 데이터파일의 번호는 딕셔너리가 알고있겠지요)
▣Image Copy 병렬화
- 위의 예제에서 채널은 4개를 사용하고 있습니다.
- 2번째 줄에 COPY, 6번째 줄에 COPY를 사용하고 있는데 이것은 직렬입니다.
- 위의 예제에서 4개의 병렬을 모두 병렬로 받을려고 한다면 COPY명령어 한번에 파일만 4개를 따로따로 지정해야 합니다. (거참 까탈 스럽네 -_-.........)
▣전체 Database Image Copy
- 일관성 있는 완전 Backup을 위해 Database를 MOUNT 한다. - shutdown immediate
- REPORT SCHEMA 명령을 사용하여 파일을 나열한다. - startup mount
- COPY 명령을 사용하거나 각 Datafile의 Image Copy를 만든다. - COPY............
- 데이터베이스에 있는 테이블스페이스와 데이터파일의 목록을 얻어서, COPY를 1:1로 다 해줍니다.
- 백업이 완료되고 DATABASE를 OPEN 합니다.
- LIST COPY 명령을 사용하여 복사본을 검증한다.
- 검증! //
▣Incremental Backup
- 전체 Backup은 모든 Datafile Bloke을 포함
- 처음에는 풀백업을 반드시 받아놔야 합니다.
- Differential IncrementalBackup은 레벨 n이하에서수정된 Block만 포함
- 자신과 같은 레벨 혹은 자신보다 낮은 레벨에서 변경된 블록만 받습니다.
- Cumulative IncrementalBackup은 레벨 n-1이하에서 수정된 Block만 포함
- 자기보다 한단계 낮은 레벨로 받았던 백업본을 포함시켜서 받습니다.
▣Differential Incremental Backup : 예제
- 레벨 n 이하의 최근 Backup 이후에 변경된 모든 Block의 레벨 n Backup
- 자신과 같거나, 자신보다 낮은 레벨의 변경된 데이터만 백업을 받습니다.
- 복구에 사용할 리두의 양을 줄이기 위한 것이 이 백업방식의 목적입니다. (즉, 복구성능을 높이기 위해)
▣Cumulative Incremental Backup : 예제
- 레벨 n-1 이하의 이전 Backup 이후에 변경된 모든 Block을 포함하는 레벨 n Backup
- 2C에서 받는것은 변경된 것을 받는것이 아니라, 월요일 백업본을 한번 더 포함시키고, 월요일에서 화요일사이의 변경된 내용을 함께 받는 것입니다.
- 수요일의 레벨1은 월요일에서 수요일까지 변경된 것만 받는거고,
- 목요일의 2C는 수요일의 백업내용과 수요일에서 목요일까지의 변경된 내용을 함께 받습니다.
▣NOARCHIVELOG 모드에서의 Backup
- Backup을 위한 충분한 공간이 있는지 확인
- NORMAL 또는 IMMEDIATE 절을 사용하여 종료
- DATABASE MOUNT
- 자동으로 사용되지 않는 경우 복수 Channel 할당
- Backup 명령 실행
- Backup이 완료 및 등록되었는지 확인
- 정상적으로 사용할 수 있도록 Database Open
▣Control File 및 Server ParameterFile 자동 Backup
- CONFUGURE CONTROLFILE AUTOBACKUP 명령을 사용하여 활성화
- 백업이나 COPY 명령이 수행이 되면 매번 제어파일을 백업합니다. 물론, SPFILE도 함께 백업합니다.
- 활성화되면 RMAN는 BACKUP 또는 COPY 명령 이후 Control File 및 현재 Server Parameter file의 자동 Backup 수행
- Database의 구조 변경 이후 Backup 수행
- Backup에 기본 이름 제공(11-10)
- %T : 고정된 참조 시간 이후 경과한 시간(초)을 4바이트로 나타낸 값으로, 백업 셋 시간 기록을 지정합니다. %s 및 %t를 조합하여 백업 셋에 고유한 이름을 지정할 수 있습니다.
- %S : 백업 셋 번호를 지정합니다. 이 번호는 제어 파일 내의 카운터로, 백업 셋이 생성될 때마다 증가합니다.
- %U : 백업 셋 번호와 해당 백업 셋 생성 시간에 대한 단축 표기법으로 구성된 8자 이름을 지정합니다.
- %P : 백업 셋의 백업 피스 번호 지정. 이 값은 각 백업 셋에 대해 1부터 시작하고 각 백업 피스가 생성될 때마다 1씩 증가합니다.
[실습 예제]
▣Server Parameter file Backup
- CONFIGURE CONTROLFILE AUTOBBACK = ON이면 자동으로 backup 됨
- BACKUP SPFILE 을 사용하여 명시적으로 Backup
▣Backup 및 Image Copy 용 Tag
- Backup Set 또는 Image Copy에 지정된 논리적 이름
- 별칭입니다. 태그를 생성하면 RMAN에서만 볼 수 있습니다.
▣RMAN Dynamic View
- V$ARCHIVED_LOG
- 복구를 수행할 때 아카이브의 정보를 확인
- V$BACKUP_CORRUPTION
- 백업이라는 명령어
- V$COPY_CORRUPTION
- COPY라는 명령어를 통한.
- V$DATABASE_BLOCK_CORRUPTION
- 위 3개의 딕셔너리는 백업단계에서 블록의 훼손된 정보를 볼 수 있습니다.
- 훼손된 블록이 감지되더라도 백업은 되지만, 중지하지는 않습니다.
- 따라서 DBA는 백업이 완료된 후에 이러한 명령어를 통하여 훼손에 대한 복원을 해주어야 합니다.
- V$BACKUP_DATAFILE
- V$BACKUP_REDOLOG
- 아카이브 로그겠죠, 리두로그가 아니라. -_- RMAN에서는 리두로그 백업은 지원하지 않습니다.
- V$BACKUP_SET
- V$BACKUP_PIECE
[실습예제]
▣RMAN Backup 모니터
- SET COMMAND ID 명령을 사용하여 Server세션과 Channel 연결
- V$PROCESS 및 V$SESSION 을 질의하여 어떤 세션이 어떤 RMAN Channel에 대응되는지 확인
- V$SESSION_LONGOPS 를 질의하여 Backup 및 Image Copy의 진행상태를 모니터
- RMAN 작업에 대한 모니터를 지원하는 것이 아니라, 데이터베이스에 대한 모든 LONG OPERATION을 보기 위한 모니터를 하기 위한 것입니다.
- 운영 체제 유틸리티를 사용하여 Process 또는 스레드를 모니터
▣기타 RMAN 문제
- Recovery Manager 작업의 비정상적인 종료
- OS에는 파일이 만들어지다 말았겠죠. <-이거보고 백업이 완료된 줄 알수도 있습니다. 따라서, SHIFT+DEL
- 물리적 Block 손상 및 논리적 Block 손상 감지
- 오래전에 백업본을 통하여, 손상된 블록을 복구해줘야 합니다.
- 열린 Backup 중에 Fractured Block 감지
- 실제 운용중인 DB라면 백업 중이더라도 실제 사용자들이 사용할 수 있습니다.
- 그래서 USER Managed BACKUP 에서는 그 헤더를 잠궜는데, RMAN에서는 그게 아니죠.
- 따라서, 중간에 백업하다가 변경된 데이터가 발견되면, 추후에 또 다시 변경본에 대해 백업을 수행합니다.
- 이것의 문제는 실제 DB운용이 바쁜 시간에 할 때는 , 많은 프로세스가 동작하게 되므로, 시스템이 화내겠죠. 적당히 써야 됩니다.
'Web Develop Tech > Oracle9i Fundmantal II' 카테고리의 다른 글
ORACLE - 백업과 복구 실습 - 090414(화) - Recovery Manager (0) | 2012.08.25 |
---|---|
ORACLE - 백업과 복구 실습 - 090415(수) - Recovery Manager 계속 (0) | 2012.08.25 |
ORACLE - RMAN 기존 명령어 초기화 (0) | 2012.08.20 |
ORACLE - 복구 정리 (0) | 2012.08.20 |
ORACLE - Backup & Recovery 실습 - 09/05/06 (0) | 2012.08.20 |