SCN Headroom 이슈사항

SCN Bump UP이 이슈 
이 장애는 오라클 데이터베이스 버전이나 패치 적용 여부에 따라 작게는 원격 트랜잭션(distributed transaction) 거절(rejection)을, 크게는 데이터베이스 셧다운까지 야기시켜 문제가 됐다. 
단발성으로 끝나지 않기 때문에 가볍게 볼 수 없는 문제라고 할 수 있다. 
이에 SCN Bump UP이 무엇인지 알아보고 이를 예방하기 위한 대책과 방안에 대해 살펴본다.
우선 SCN이 무엇인지 살펴보자. 
SCN은 System Change Number로, 오라클 데이터베이스에서 Ordering의 근간이라고 할 수 있다. 
데이터베이스 내부가 변경됐을 때의 논리적 시점, 즉 타임스탬프라고 할 수 있다. 
쿼리 및 데이터베이스 변경사 항을 추적하는 데 SCN이 이용되며, 이를 통해 정확한 복구(recovery)가 가능하다. 
DBA가 SCN을 직접 활용하는 경우로는 플래시백 쿼리(Flashback Query), 데이터베이스 복구, 로그마이너(LogMiner)가 있다. SCN은 6바이트(48비트)로 구성돼 있다. 시퀀스(sequence)처럼 증가하는 방식인데, 최대 상한값은 281,474,976,710,656(약 281조, 2^48)이다. 
이 값은 시간 배분 방식의 배급제 체계를 이용해서 증가하므로 초당 16K(또는 32K)로 늘어난다. SCN은 앞으로 사용 가능한 최대 상한선인 MAX SCN 값(281조)와 현 시점에서 유효하게 사용할 수 있는 Maximum Reasonable SCN 값이 있다. 
실질적으로 사용 가능한 값의 범위(Maximum Reasonable SCN – Current SCN )는 'SCN Headroom' 이라고 부르며, Maximum Reasonable SCN의 경우 Reasonable SCN Limit라고도 불린다. SCN이 증가하는 케이스는 크게 두 가지가 있다.
<그림 1> SCN HEADROOM

● CASE 1 : 로컬 내부 프로세싱으로 인해 증가하는 경우 'Intrinsic SCN rate' 라고 한다. 

● CASE 2 : Extrinsic SCN rate는 외적 요소로 증가된 경우를 말한다. 대표 적으로 DB Link 작업 수행 시 증가되는 경우인데, 이를 흔히 SCN Propagation이 됐다고 말한다. 

분산 트랜잭션(distributed transaction) 환경에서는 Call 단위로 SCN을 전파(propagation)하는데, 트랜잭션에 참여했던 모든 DB 중에서 가장 큰 SCN으로 동기화된다. 
SCN 동기화의 경우 보통 분 산 트랜잭션의 시작과 끝인데, Heavy Traffic의 경우 동기화 작업 이 빈번하게 일어난다.
<리스트 1> DB Link로 조회와 갱신이 일어나면 가장 큰 SCN 값이 전파된다. 

조회 전 
##ORACLE A ## 
SQL> SELECT current_scn FROM v$database; 

CURRENT_SCN 
----------- 
2918527 

## ORACLE B## 
SQL> SELECT current_scn FROM v$database; 

CURRENT_SCN 
----------- 
3377931 

# A에서 B로 DBLINK을 이용하여 조회,갱신 
# ORACLE A


 SCN 헤드룸(Headroom) Bump Up 관련 내용


컴퓨터 네트워크에서 시간이 지속적으로 동기화되는 것과 비슷하게, 두 데이터베이스 간에 데이터베이스 링크를 통해서 서로 통신을 할 때는 두 데이터베이스에서 사용 중인 가장 큰 SCN을 값을 택해서 각자의 SCN값을 동기화한다. 그래서 몇몇 경우엔 데이터베이스들이 SCN 헤드룸이 빠르게 줄어드는 상황을 경험하곤 한다. 이것은 해당 데이터베이스의 버그 때문이 아니라, 그 데이터베이스가 연결된 한 두군데 이상의 데이터베이스에서 그 버그가 이미 활성화되었기 때문이다. 


현재 최대 SCN을 넘어서는 SCN은 언제나 그 데이터베이스가 거부해버리기 때문에, 500년 이상 오라클 데이터베이스를 운영할 수 있도록 SCN을 제공하는 것은 어느 경우에도 영향을 받지 않았다.



 SCN 헤드룸(Headroom) Bump Up 관련 조치 방법


- January 2012 CPU (및 관련 PSU)을 적용한다.

- 적용 후 scnhealthcheck.sql을 이용하여 SCN 헤드룸(Headroom) 상태에 대해 확인한다.

  (Patch:13498243 및 마스터 노트: SCN 이슈 (문서 ID 1902993.1) 참고하여 진행.)

티스토리 툴바