PC · IT · DB/Oracle

오라클 Control File, Redo Log File, Undo, Redo 리포트

뿌레도 2020. 6. 24. 20:30
728x90

 

 

 

오라클 관리

( Control File, Redo Log File, Undo, Redo )

 

 


 

1. Control File

 

A. Control File 란?

Database의 구조변경이 있거나 변경사항이 있을 때 자동으로 업데이트 되며 모든 데이터파일과 로그파일의 정보를 보유했다. DB의 mount, open에 필수적인 파일이며 오라클이 사용하며 DBA도 변경할 수 없다. Database의 구조를 포함하는 바이너리 파일로 복구시 필요한 동기화(Synchronization) 정보를 저장한다.

 

☞ Control File과 Data File의 SCN[1] 값을 비교하여 다르면 복구함

☞ 차이나는 SCN만큼을 Control File의 Log File Records 부분을 참고하여 Redo Log와 Archive Log에서 가져옴.

 

B. 포함되는 내용

 i. 데이터베이스의 이름, 생성시간, 식별자와 위치

 ii. 온라인 리두로그 파일의 위치

 iii. 현재 로그 시퀀스 번호

 iv. 테이블스페이스의 이름

 v. 체크포인트 정보

 vi. 현재까지의 로그 기록

 vii. 백업정보

 

C. 관련 Query

 i. Control File 확인

    SQL 1

select * from v$controlfile;

    SQL 2

select value from v$parameter where name=’control_files’;

    SQL 3

show parameter control_files;

 

 ii. Control File 지정 (다중화)

alter system set control_files =
’C:\orcle\Administrator\oradata\control01.ctl’,
‘C:\oracle\Administrator\oradata\control02.ctl’
scope = spfile;

 

 iii. Check Point 생성

Alter system checkpoint;

 

D. Control File 다중화하는 이유

디스크 장애나 사용자 실수로 Control File이 손상되더라도 다시 복구하기 수월하도록 하기 위해서 다중화를 한다.

 

 


 

2. Redo Log File

A. Redo Log File 이란?

 DB에서 생긴 모든 변화를 기록하는 파일로 Instance Fail 상황에서 데이터파일에 쓰여지지 않은 Commit된 데이터를 복구하기 위해서 사용된다. SGA[2] 내의 Redo Log Buffer Cache에 저장된 데이터들은 일정 수준[3] 이상 채워지게 되면 LGWR에 의해서 Redo Log File로 저장이된다.

 

B. Redo Log File의 구성

 i. Group과 member의 개념으로 관리된다.

 ii. 같은 group의 member의 크기는 모두 동일해야한다.

 iii. 같은 group의 member는 서로 다른 디스크에 저장하는 것이 좋다.

 

C. Redo Log를 활요하는 경우

 i. Database가 깨졌을 경우

 ii. 데이터를 복구해야 할 일이 생겼을 경우

 

D. 관련 Query

 i. 현재 Database의 로그 확인

select a.group#, a.type, a.member, b.bytes, b.archived, b.status
from v$logfile a, v$log b
where a.group#=b.group#
order by a.group# asc, a.type asc;

 

 ii. Redo Log 그룹 추가

Alter database add logfile group# ‘C:\oracle\Administrator\oradata\redo04.log’ size 50M;

 

 iii. Redo Log 작동 확인

Alter system switch logfile;

 

 iv. Redo Log 그룹 삭제

Alter database drop logfile group#;

 


 

3. Undo

A. Undo 란?

 Read Consistency와 Transaction Recovery를 위해 존재한다. Rollback과 같은 뜻으로 Oracle 9i 이전에는 Rollback이라 불렸으며, 이후에는 undo 라고 칭한다.

 

 Read Consistency: Transaction이 진행되는 동안 Database의 다른 사용자는 이 Consistent Read에 의해 Commit되지 않은 변경 사항을 볼 수 없다는 것

 Transaction Recovery: Transction이 진행되는 동안 instance가 실패한 경우 Database가 다시 열릴 때, Commit되지 않은 사항은 Rollack되어야하므로 Undo Segment정보가 사용된다. (Undo Segment의 변경사항이 Redo Log File에 의해 보호되므로 복구가 가능)

 

B. Undo Segment의 종류

 i. System: System Tablespace에 존재하는 객체에서 사용

 ii. Non-System: System Tablespace가 아닌 다른 Tablespace에 존재하는 객체에서 사용

 iii. Deferred: Tablespace를 offline immediate 명령으로 offline 시켰거나, Recovery 진행 중 사용

 

C. Redo vs Undo

 i. Redo: 복구의 역할, Re-Do를 통해 데이터 손실을 방지

 ii. Undo: 롤백, 읽기 일관성을 위해 Un-Do 작업

 iii. Redo와 Undo의 예시

 

◎ 비정상 종료 Query

Update tstudy set patient_id=patient_id+100 where patient_key=777;

 

 Session 복구 중 redo의 작업

Update tstudy set patient_id=patient_id+100 where patient_key=777;

 

 Session 복구 중 undo의 작업

Update tstudy set patient_id=patient_id-100 where patient_key=777;

 

[1] SCN: Commit이 발생할 때 Transaction에 부여하는 고유한 번호

 

[2] SGA : System Global Area: 오라클서버의 메모리 영역으로 Shared Pool(Library cache,Dictionary cache), Database Buffer Cache, Redo Log Buffer, Java Pool, Large Pool로 이뤄져있다.

 

[3] LGWR 작동하는 경우: 3초 마다, Redo log buffer의 전체 크기의 1/3이 차거나 1M가 넘었을 때, 사용자가 commit/rollback 했을 때, DBWR이 LGWR에 쓰기를 요청 했을 때 작동한다.

 

 


 

300x250