Oracle은 Undo Retention을 설정하면 필요한

Download Report

Transcript Oracle은 Undo Retention을 설정하면 필요한

발표 : 손창규 / 박철민
목
차
I.
목
표
II.
Undo Data란
III.
Undo 관리 / 구성
IV. Undo Advisor 사용
V.
기
타
목
표
Undo 모니터 관리
Undo Retention 구성
Undo Retention 보장
Undo Advisor
1. Undo Data
Undo Data란?
수정되기 전 데이터의 복사본 이다
변경된 데이터의 모든 트랜젝션은 캡춰가 되버린다
트랜젝션이 끝날때까지 존재한다
목 적
트랜잭션 롤백
오라클 서버에서 Undo Segment에 저장된 값을 이용하여 수정 이전의 값으로 복원하는 기능
이며 이작업이 실행되는 경우는 유저가 롤백 명령어를 실행하거나 트랜젝션이 비정상 종료되
어 PMON이 자동으로 롤백처리하는 경우 이다
읽기 일관성과 Flashback queries
트랜젝션이 진행되는 동안 Database의 다른 사용자는 이에 의해 Commit되지 않은 변경 사항
을 볼 수 없는 기능이고 Flashback query는 어떤 목적을 가지고 과거 특정 시점의 데이터 상
태를 요청하는 Query로 과거 특정시점에 대한 Undo 정보가 있을 경우 복구가 가능합니다
실패한 트랜젝션의 복구
트랜젝션이 진행되는 동안 Instance가 실패한 경우 Database가 다시 열릴때 Commit 되지 않
은 사항은 롤백되어야 되어야 하는데 이때 Undo Segment정보가 사용되고 Undo Segment의
변경사항은 Redo log 파일로 보호되므로 복구가 가능하다
1. Undo Data(계속)
Undo 정보 보존
다음과 같은 트랜젝션이 종료될때까지는 Undo 정보를 가지고 있음
-
유저의 트랜젝션 번복(rollback)
유저의 트랜젝션 종료(commit)
유저 세션의 비정상적인 종료(rollback)
종료 명령에 의한 유저 세션의 정상적인 종료(commit)
※ 데이터베이스 작업량 및 데이터베이스 구성에 따라 Undo 정보는 더 오래 보존할 수 있음
2. Transactions and Undo Data
목
적
각 트랜잭션은 하나의 Undo segment에만 할당됨
하나의 Undo segment는 한번에 여러 개의 트랜잭션을 처리할 수 있음
상세내용
트랜잭션이 진행되는 동안 변경된 모든 내용은 변경된 데이터의 원래값을 Undo
Segment 에 복사한다
Dynamic Performance 뷰 V$TRANSACTION을 확인하여 어느 트랜잭션이 어느
Undo segment에 할당 되었는지를 확인 가능하다
Undo segment는다른 세그먼트와 마찬가지로 데이터 블록으로 구성된 Extent로
구성되어 있다
Undo segment는 필요한 경우 자동으로 확장되거나 축소되며 할당된 트랜잭션에
대해 순환 저장영역 버퍼처럼 사용된다
모든 Extent가 사용되면 트랜잭션은 첫 번째 Extent로 다시 덮어쓰거나 Undo
segment에 새로운 Extent를 할당(첫번째 extent 정보가 아직 필요하여 겹쳐쓰기
를 할 수 없을 경우) 할 것을 요청한다
2. Transactions and Undo Data(계속)
참고그림
3. Storing Undo Information
Undo 정보 저장
Undo 정보는 Undo Segments에 저장되고, Undo Segments는 하나의 Undo
Tablespace에 저장이 되어진다
특징
- Undo segment 에만 사용
- 복구시 특별한 고려사항이 있음(다음 단원에서 다룸)
- 단일 Instance와만 연관이 될 수 있으며 Instance는 한번에 하나의 활성 Undo Tablespace
만 가질 수 있음
Undo 저장 영역
Undo segment는 Undo Tablespace 라는 특수한 Tablespace에서만 존재
데이터베이스는 Undo Tablespace를 많이 가질 수는 있지만 각 Instance는 하나
의 Undo Tablespace만 가짐
Undo segment는 순환버퍼처럼 사용 되므로 각 segment는 최소 2개의 Extent를
가짐
Undo Tablespace는 Autoextent 할당을 사용하는 영구적인 Locally Managed
Tablespace로 복구의 경우를 제외하고는 일반 Tablespace와 동일함
Instance 쟁애로 실패한 트랜잭션을 복구시 Undo data가 필요하므로 Undo
Tablespace는 Instance가 MOUNT 상태일때만 복구가 가능
4. Monitoring Undo
Undo 모니터링
Oracle 10g 에서의 Undo는 관리가 거의 필요없다
모니터링 영역
-사용가능한 Undo Tablespace의 공간
- 발생되는 에러(Snapshot too old)
발생되는 에러유형
ORA- 01650 : unable to extend rollback segment
발생원인 :트랜젝션 수행중에 서버쪽의 Undo Tablespace의 공간이 부족하면 발생된다
해결책 : Undo Tablespace 공간을 늘리거나 Commit를 해준다. 만약 Commit를 하지 않고
작업을 계속하면 데이터 블록들은 계속 Retension 상태로 남아있게 된다
ORA-01555 : snapshot too old
발생원인 : 값을 참조하려고 데이터 블록을 읽어 들였는데 원하는 값이 존재 하지 않을 경우
발생된다(읽기일관성X)
해결책 : 데이터의 공간을 늘려주거나 쿼리를 트랜젝션 시간이 적게 걸리게 바꿔준다
※ Retention Time은 사용자가 보장해 주기를 원하는 시간이지 시스템이 보장해 주기로 한
시간이 아니다. 그러므로 오라클서버 마음대로 덮어쓰고 이와같은 에러를 발생시킨다
5. Administering Undo
Undo 관리
Undo 관리를 통해 다음과 같은 오류를 방지
- Undo Tablespace의 공간오류
해결책 : Undo Tablespace 크기를 적절히 조정
대형 트랜잭션을 주기적으로 commit
- Snapshot too old 오류
해결책 : 적절한 Undo Retention 간격구성
Undo tablespace 크기를 적절히 조정
Undo retention 보장 고려
관련 PARAMETER(DEFAULT)
- UNDO_MANAGEMENT=AUTO
- UNDO_TABLESPACE=UNDOTBS1
- UNDO_RETENTION=900
10g AUM에서 향상된 기능 4가지
-
Undo Retention의 자동튜닝
Undo에 관련된 Proactive Monitoring 및 Alert
빠른 ramp-up
파라미터의 간소화
5. Administering Undo(계속)
상세내용
Oracle 10g에서는 UNDO_MANAGEMENT 초기화 파라미터를 AUTO로 설정하여
관리할 것을 권장한다
자동 Undo관리를 통해 DBA는UNDO_TABLESPACE 초기화 파라미터로 Instance
가 사용하는 Undo tablespace를 제어하여 tablespace 레벨에서 언두를 관리한다
관리자는 Undo tablespace를 선택하고 Undo retention 간격 구성만 하면된다
수동관리시 DBA가 할일
-
최대 Extent 수 및 Extent 크기 조정을 포함한 세그먼트 크기조정
차단중인 트랜잭션 식별 및 제거
트랜잭션 처리에 충분한 롤백 세그먼트 구성
롤백 세그먼트를 포함할 테이블 Tablespace 선택
5. Administering Undo(AUM)
AUM 이란?
Automatic Undo Management 의 약자로 10g에서 Undo를 자동으로 관리한다
10g에서 향상된 기능 4가지
향상된 4가지기능
Undo Retention의 자동튜닝
초기 파라미터에 정의하였던 UNDO_RETENTION(초)은 트랜잭션이 진행하는 동안 일정량의
UNDO 정보를 유지할 수 있도록 함으로써 Long-running query시 발생 할 수 있는 ORA1555(snapshot too old) 오류를 만날 가능성을 줄여주었다
9i에서는 DBA가 UNDO_RETENTION을 적절하게 정의하기위해서는 실질적인 Long-running
query의 진행시간과 undo tablespace의 크기를 함게 고려하여 실질적인 UNDO_RETENTION
을 정의 하여야만 했다 그러나 10g에서는 DBA가 관여했던 부분을 Oracle server가 대신하여
자동적으로 관리할 수 있게 되었다
Undo에 관련된 Proactive Monitoring 및 Alert
10g의 데이터베이스 Alert 기능은 예상되는 오류나 데이터베이스 사용현황을 특정 딕셔너리
테이블에 기록 관리함으로써 DBA가 유연하게 대처할 수 있도록 다양한 정보를 제공한다
Undo에 있어서는 Tablespace의 공간 사용율 및 ORA-1555에 대한 오류 등을 warnin 및
alert으로 관리해 주게 된다
5. Administering Undo(AUM)
향상된 4가지기능
빠른 Ramp-up
AUM 모드에서 오라클은 자동적으로 필요한 만큼의 online undo segment를 생성하고 불필요
시 offline 시킨다 9i 에서는 이러한 부분이 필요시마다 동적으로 생성되었다가 offline 되기 때
문에 undo segment ramp-up(online undo segment 늘려나가는 것) 시간이 경우에 따라 수
분 정도 걸릴 수 있었다
10g 에서는 오라클 기동후 undo segment가 어느정도 사용해 왔었는지에 대한 정보를 AWR
에 기록되어 그 정보를 이용한 빠른 on-line undo segment의 ramp-up을 가능케 해준다
간소화된 파라미터
Undo management의 기능향상과 더불어 관련 파라미터가 다음과 같이 같소화가 되었다
-
MAX_ROLLBACK_SEGMENTS
UNDO_SUPPRESS_ERRORS
ROW_LOCKING
SERIALIZABLE
TRANSACTION_AUDITING
항상 true
row-level locking
read consistency
항상 true
6. Configuring Undo Retention
구
성
Undo Retention은 이미 commit된 Undo정보를 어느시간까지 보관하는지를 설정
하는 파라미터이다
- 기본값은 0(자동) 입니다 (값을 0으로 설정을해야 Retention이 auto가 된다)
- 최대값은 (187년 이상) 입니다
- 0으로 설정하면 자동 Undo Retention 모드가 되어 집니다
관련 파라미터
UNDO_RETENTION=0
세부내용
자동으로 관리되는 Undo는 Undo정보를 만료 이전까지 보존하지만 활성 트랜잭
션이 Undo Tablespace에 공간을 필요로 하는 경우에는 트랜잭션이 실행하는 것
을 허용하기보다는 Undo Retention 설정과 관계 없이 커밋된 정보는 덮어쓴다
Undo Retention을 0으로 설정하면 자동 Undo Retention 튜닝 모드가 된다 이모
드 설정시 최대한 많은 Undo 정보를 보존하며 Undo tablespace가 너무 작아서
현재 가장 오래 실행중인 query에서 필요로 하는 Undo Retention을 만족시킬 수
없을 경우에는 자동 Undo Retention이 보유한 정보의 양(900초) 미만으로 떨어지
지 않는 한 현재 사용 가능한 공간을 사용(Undo 데이터 파일을 확장하지 않음)하
여 최대한 많은 Undo를 보존 한다
6. Configuring Undo Retention(계속)
세부내용
Undo 정보는 다음과 같이 세가지 범주로 나뉜다
- commit 되지 않은 Undo 정보
현재 실행중인 트랜잭션을 지원하며 commit되지 않은Undo 정보는 겹쳐 쓸 수 없다
- commit 된 Undo정보
실행중인 트랜잭션을 지원하는데 더 이상 필요하지 않지만 Undo Retention 간격을 만족시
키는 데에는 여전히 필요하다 commit 된 Undo 정보는 수행중인 트랜잭션이 공간 부족으로
인해 실패하지 않는 한도 내애서 보존된다
- 만료된 Undo정보
실행 중인 트랜잭션을 지원하는데 더 이상 필요하지 않다
실행중인 트랜잭션에서 공간을 필요로 하면 덮어쓴다
7. Guaranteeing Undo Retention
구
성
Undo Retention이 Guaranteed(보장) 되지 않으면 Undo 공간 부족으로 인해 트
랜잭션이 실패 하도록 하기보다는 커밋된 Undo 정보를 덮어쓴다
Guaranteed를 Tablespace에 설정을 해놓으면 Undo 공간부족으로 인해 트랜잭
션이 commit된 정보에 덮어쓰는 작업을 막아 Undo Retention의 설정값 만큼 보
장을 해준다
상세내용
Guaranteed 를 설정하는법
SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;
SQL> ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;
 비설정하는법
Guaranteed의 설정은 Undo Tablespace에만 적용이되며 다른 Tablespace에
retention 보장을 설정하려고 하면 에러 발생
ORA-30044 : ‘Retention’ can only specified for undo tablespace
8. Sizing the Undo Tablespace
구
성
EM을 통해 손쉽게 Tablespace 크기(MB단위)를 지정할 수 있다
상세내용
EM 을 통 해 SYS 계 정 으 로 로 그 인 > Administration 속 성 페 이 지 > Undo
Management 클릭하하면 다음과 같은 화면을 볼수 있다
다른 Tablespace와 마찬가지로 크기를 자동확장 모드로 변경할 수 있지만 권장하
지는 않음
- 이유
단일 유저가 트랜잭션을 커밋하지 않는 실수로 인해 디스크 공간이 계속 늘어나는 걸 방지
하기 위함
8. Sizing the Undo Tablespace(계속)
참고그림
9. Using the Undo Advisor
Undo의 Advisor
Oracle은 Undo Retention을 설정하면 필요한 Undo Tablespace 크기를 예측하여
관리자에게 권고한다
9. Using the Undo Advisor(계속)
기 타(Undo와 Redo의 차이점)
Undo
Commit 되 지 않 은 데 이 터 와
Rollback을 날린 데이터에 대해서는
Undo Segment에서 읽어 트랜잭션
롤백을 수행
(Commit이 되지않은 정보를 복구)
Redo
Commit은 되었지만 datafile에
쓰여지지 않은 데이터로 SCN을
맞 춰 가 며 Redo logfile 에 서
rolling forward로 SMON이 복구
를 수행
(Commit가 된 정보를 복구)