Instance 및 Media Recovery 구조
[그림 1]
▶Dynamic View
- Database 및 Instance에 대한 정보 얻기
- V$SGA
- V$INSTANCE
- V$PROCESS
- V$BGPROCESS
- V$DATABASE
- V$DATAFILE
▶LARGE POOL
- SGA의 개별 메모리 영역으로 구성될 수 있으며, 다음 목적으로 사용된다.
- Oracle Backup 및 Restore 작업
- 백업이라는 것은, 제어파일 데이터파일, 리두로그 파일을 복사해놓는 것을 의미합니다.
- 이때 I/O 과정이 일어나는데, 그 과정 중 LARGE POOL을 사용합니다.(Recovery Manager사용시)
- I/O Server Process
- Shared Server용 세션 메모리 (UGA)
- Oracle Backup 및 Restore 작업
- LARGE_POOL_SIZE Parameter에 의해 크기가 조절된다.
▶Data Buffer Cache, DBWn 및 Data Files
▶Redo Log Buffer, LGWR 및 Redo Log Files
-
Redolog 는 DML이 작성될때만 동작합니다.
-
오라클 서버는 DDL을 내장 SQL을 통해 처리합니다.
-
데이터 딕셔너리도 하나의 테이블이므로, 사용자가 테이블을 생성(CREATE), 변경(ALTER)등을 하게되면, 리두로그에는 UPDATE로 지정되어 기록됩니다. (왜냐면, 데이터딕셔너리를 업데이트 하는 것이므로)
-
리두로그 파일은 순환적으로 사용됩니다. 개수를 늘리지 않고, 기존에 고정된 개수만을 가지고 돌려가며 사용합니다.
-
온라인 리두로그 파일은 다음의 리두로그 정보가 차기전까지만 재사용이 가능합니다.
-
이 리두로그의 파일의 목적은 오로지 복구를 위한 것임을 명시해주세요.
▶다중화된 Redo Log Files
-
복구를 위한 정보가 들어가있는 리두로그의 정보가 손상되면 안됩니다.
-
따라서 동일한 정보가 가지고 있는 여러개의 리두로그 그룹(멤버가 모이면)을 다른 디스크에 각 그룹의 멤버끼리 떼어놓고 다중화를 시켜야 합니다.
▶Database Checkpoint
- Checkpoint는 Recovery가 시작될 위치를 결정하는데 사용된다.
- Checkpoint 위치 – Recovery 시작 위치
- Checkpoint Queue – Dirty Block의 연결 목록
- 더티리스트를 저장하기 위한 큐 입니다. 이 큐의 임계치가 도달하면 DBWR이 Dirty Block 를 내려쓰기 위한 목록입니다.
▶Checkpoint 유형
- Full Checkpoint - 인스턴스 메모리에 모든 내용이 기록되어야 하는 작업(Shutdown 시)
- 모든 Dirty Buffer 기록
- SHUTDOWN NORMAL, IMMEDIATE, TRANSACTIONAL
- ALTER SYSTEM CHECKPOINT
- Incremental Checkpoint (Fast-Start Checkpoint)
- 주기적으로 기록
- 리두로그의 체크포인트 파라미터를 사용했던 것처럼, 이전 체크포인트 후에 추가적으로 부분적으로 더티 블록들이 내려오는 것입니다.
- Partial Checkpoint
- Tablespace에 속하는 Dirty Buffer
- ALTER TABLESPACE …. BEGIN BACKUP - DB 운영중에 DB를 백업하는 방식
- ALTER TABLESPACE ….OFFLINE NORMAL - 특정 테이블스페이스와 관련된 작업
- 테이블 스페이스와 관련된 작업입니다.
▶CKPT Process
-
체크포인트 작업을 주관하는 프로세스
-
체크포인트가 완료될때마다 데이터파일과 제어파일의 헤더를 갱신해줍니다.
▶다중화된 Control Files
-
데이터베이스를 운영할 때 필요한 최소의 데이터파일은 1개 입니다.
-
제어파일이 손상되면 DB를 운영할 수 없으므로 최소한 2개이상 복사본이 있어야 합니다.
▶Control file 내용 - 2진 파일이므로 운영체제 상에서는 읽을 수 없습니다.
- Database 이름
- Database 생성된 시간기록
- Recovery에 필요한 동기화 정보(Checkpoint 및 Log Sequence 정보)
- Datafile과 Redo log file 이름과 위치
- Database의 Archive 모드
- 현재 Log Sequence Number
- Recovery Manager Backup meta Data
▶ARCn Process 및 Archived Log Files
- 미디어가 손상되었을 때는 완벽하게 지원하지 못합니다.
- 따라서 이 프로세스및 아카이브 로그 파일들은 리두로그에 대한 모든 버전을 백업해 놓습니다.
- 아카이브 로그 파일은 동적으로 계속 늘어날 수 있습니다. 트랜잭션이 클 수록 로그 파일은 많이 증가하게 됩니다.
▶Database 동기화 - CheckPoint
- Database Open을 위해서는 모든 동기화 된 Datafile이 필요하다.(Offline/Read Only 제외)
- 파일이 읽기전용상태이거나, 파일이 꺼져있을 때는 CKPT가 정보 갱신을 하지 못합니다.
- 동기화는 현재의 Checkpoint 번호를 기반으로 한다.
- Redo log file에 기록된 변경사항을 적용하면 Datafile이 동기화된다.
- Redo log file은 Oracle Server에 의해 자동으로 요청된다.
▶Phases for Instance Recovery (인스턴스 복구 단계)
▶Crash 및 Instance Recovery 성능 튜닝
- Instance 및 Crash Recovery 기간 튜닝
- Instance Recovery 단계 튜닝
▶Instance 및 Crash Recovery의 기간 튜닝
Instance 및 Crash Recovery의 기간을 User가 지정한
범위로 유지하는 방식 :
- 초기화 Parameter 를 설정하여 Recovery에 포함된 Redo log 레코드와 Data Block 수에 영향을 줌
- Redo log file의 크기를 조정하여 Checkpoint 빈도에 영향을 줌
- SQL문을 실행하여 Checkpoint 시작
- Instance Recovery 작업 병렬화
▶Checkpoint에 영향을 주는 초기화 Parameter
▶V$INSTANCE_RECOVERY
- Recovery I/O를 제한하는데 사용할 수 있는 방식 모니터에 사용됨
- 이 뷰의 통계를 사용하여 Checkpoint에 가장 큰 영향을 주는 Parameter 계산
▶Crash 및 Instance Recovery 단계 튜닝
- Rollforward 단계 튜닝
- 병렬 Block Recovery
- RECOVERY_PARALLELISM 동시 Recovery Process의 수를 지정
- Rollback 단계 튜닝
- Fast-start On-demand Rollback
- Fast-start 병렬 Rollback
▶CKPT와 인스턴스 리커버리
- 만약에, 500m 중에서 200m 단위로 체크포인트를 했었다면, RBA는 80m 위치를 가리키고 있었을 것이고, 결론적으로 80m만 복구해주면 되는 것입니다.
- CheckPoint
- Shutdown -abort 를 제외한 종료
- Log Switch
- Parameter
- log_checkpoint_interval
- log_checkpoint_timeout
- ▲위의 2가지는 Oracle 8 버전까지 사용하면서 제어를 했습니다.
- # 위의 파라미터는 SGA에 적재되어있던 Dirty의 정보는 제어하지 못합니다.
- # 따라서 복구시에 Dirty에 얼마나 있었냐에 따라 Startup 시간이 달라질 수 있습니다.
- # 아무리 파라미터를 가지고 체크포인트 옵션을 정의해주더라도, 데이터베이스가 빠쁠 시간에는 15분마다 일어난다고 할때 이전에 정의했던 timeout 옵션은 사용되지 않습니다(시간을 30분이라고 지정했을 경우)
- # 데이터베이스가 바쁘지 않을 경우에는 굳이 체크포인트를 할 필요가 없는데도 불구하고, 계속 정해진 시간마다 체크포인트를 하기 때문에, 오히려 운영상의 성능에는 효과가 떨어집니다.
- # 따라서, DBA는 이러한 성능 제어를 원활하게 해주어야 합니다
- 이러한 문제로 인해, 8i 버전에서는 fast_start_io_target 이라는 파라미터가 추가 되었습니다.
- 즉, 이것은 SGA에 적재된 Dirty의 정보를 계산해놓도록 합니다.
- 9i 부터는 다음의 파라미터가 추가 됩니다.
- Fast_Start_MTTR_Target
- 인스턴트 장애시 보다 빠른 시작을 위해서 복구시간을 지정할 수 있습니다.
- 이 파라미터는 설정된 시간에 따라 나머지 파라미터를 자동으로 제어합니다.
- 이 파라미터를 설정하면 기존 8 및 8i에 정의된 파라미터는 설정하면 안됩니다.
- 하지만, 어떤 시스템에서 운영하느냐에 따라서 이 값은 달라져야 합니다.
- 이 값은 오라클이 나중에는 알아서 셀프튜닝을 해놓고 v$ 뷰에 값을 제시해 놓습니다. 이 값을 사용하면 되겠죠 ^^
- 하지만 10g에서는 이러한 파라미터를 아예 사용하지 않도록 합니다. 오라클서버 스스로 해주겠다 이거죠. 으흐흐흐흐흐흐흐흐흐
- 인스턴스 리커버리 과정
- ① Roll forward. >> 완료되고 SMON이 DB를 OPEN 합니다.
- ② Rollback
'Web Develop Tech > Oracle9i Fundmantal II' 카테고리의 다른 글
ORACLE - Oracle Shared Server의 사용 및 구성 [실습] (0) | 2012.10.26 |
---|---|
ORACLE - Backup and Recovery 개요 (0) | 2012.10.26 |
ORACLE - Instance 및 Media Recovery 구조 [2] (0) | 2012.10.26 |
ORACLE - Instance 및 Media Recovery 실습 > 업데이트 중 (0) | 2012.10.26 |
ORACLE - Database Archive 모드 구성 (0) | 2012.10.26 |