Oracle SCN(System Chang Number)

SCN 이 뭐 예요?
SCN 즉 System Change Number, SCN 은 Oracle 내부 시계 체제 (논리 시계) 입 니 다.SCN 의 값 은 하나의 숫자 이지 시간 이 아니다. 정확히 말 하면 증가 만 하고 줄 어 들 지 않 는 숫자 다.Oracle 은 SCN 을 통 해 데이터베이스 의 일치 성 을 유지 하고 SCN 을 통 해 Oracle 의 중요 한 복구 체 제 를 실시한다.
SCN 은 왜 시간 이 아니 라 숫자 입 니까?
그런데 왜 Oracle 은 진정한 시간 이 아니 라 자신의 내부 시계 로 숫자 를 사용 합 니까?만약 내 가 베 이 징 시간 8: 00 에 DML 문 구 를 실행 한 후에 기계 의 시간 을 7: 00 으로 수정 하고 DML 문 구 를 다시 집행 한다 면.만약 에 기계 의 시간 으로 구분 하면 Oracle 은 이 두 DML 문장의 집행 순 서 를 구분 할 수 없다. 이 점 은 Oracle 에 매우 중요 하기 때문에 자신 이 발생 한 SCN 으로 모든 작업 의 선후 순 서 를 구분한다.
Oracle 은 논리 시계 SCN 과 물리 시계 TIMESTAMP 의 상호 전환 을 실현 하 는 두 가지 방법 을 제공 했다. 물론 이 상호 전환 은 정확 하지 않 고 대응 치 를 대충 계산 할 수 밖 에 없다.
SCN 회전 TIMESTAMP 참조 SCNTO_TIMESTAMP;TIMESTAMP 회전 SCN TIMESTAMP 참조TO_SCN 。
4 가지 SCN
Oracle 은 시스템 검사 지점 (System Checkpoint) SCN, 데이터 파일 검사 지점 (Datafile Checkpoint) SCN, 종료 SCN (Stop SCN), 시작 SCN (Start SCN) 등 4 가지 SCN 을 정의 했다.이 가운데 면 3 에는 SCN 이 제어 파일 에 존재 하고 마지막 하 나 는 데이터 파일 의 파일 헤더 에 존재 한다.
1.     (System Checkpoint) SCN:  SCN          ,       。           ,Oracle        SCN        。

select checkpoint_change# from v$database;
2. 데이터 파일 검사 지점
(Datafile Checkpoint)
SCN: 데이터 파일 에 대한 SCN,
하나의 검사 점 동작 이 완료 되면 Oracle 은 모든 데이터 파일 의 SCN 을 제어 파일 에 단독으로 저장 합 니 다.
select name,checkpoint_change# from v$datafile;
3. SCN 종료:
데이터 파일 에 대한 SCN,
모든 데이터 파일 의 종료 SCN 은 제어 파일 에 저 장 됩 니 다.
select name,last_change# from v$datafile
4. SCN 시작: 
Oracle 은 이 검사 점 의 SCN 을 모든 데이터 파일 의 파일 헤더 에 저장 합 니 다. 이 값 을 시작 SCN 이 라 고 합 니 다. 데이터베이스 인 스 턴 스 가 시 작 될 때 사용 되 기 때 문 입 니 다.
데이터베이스 복 구 를 실행 해 야 하 는 지 확인 하 십시오.
select name,checkpoint_change# from v$datafile_header
현재 SCN 가 져 오 는 방법
dbms 사용 가능flashback.get_system_change_number 로 획득 합 니 다.
SQL> select dbms_flashback.get_system_change_number SCN from dual;       SCN----------   2879741
SCN 의 몇 가지 용도
시작 할 때 데이터베이스 가 일치 하 는 지 판단 하 는 방법 (Consistent State)
Oracle 은 시작 할 때 데이터베이스 가 일치 성 상태 에 있 는 지 판단 합 니 다. 앞서 "Oracle 데이터베이스 시작 에 대해 이야기 합 니 다" 라 는 글 에서 데이터베이스 시작 은 세 가지 단 계 를 포함 합 니 다. NOMOUNT - > MOUNT - > OPEN, 세 번 째 단 계 를 시작 하기 전에 (데이터 베 이 스 를 시작 하여 OPEN 상태 로) Oracle 의 SMON 프로 세 스 는 데이터 베이스 일치 성 상 태 를 검사 합 니 다.SMON 은 데이터 파일 헤더 에 있 는 SCN 번호 가 제어 파일 에 있 는 SCN 번호 와 일치 하 는 지 확인 하고, 일치 하지 않 으 면 데이터베이스 가 일치 하지 않 는 상태 임 을 설명 합 니 다.
데이터 베 이 스 는 정상적으로 닫 힐 때 (shutdown immediate / normal) checkpoint 를 한 번 하고 log file 의 데 이 터 를 데이터 파일 에 기록 하 며 제어 파일, 데이터 파일 의 SCN (제어 파일 의 Stop SCN 포함) 을 최신 SCN 으로 업데이트 합 니 다.데이터베이스 이상 / 예상 치 못 하 게 닫 히 거나 일부 Stop SCN 만 업데이트 합 니 다.데이터베이스 가 시 작 될 때 Oracle 은 제어 파일 에 있 는 모든 Datafile Checkpoint SCN 과 데이터 파일 에 있 는 Start SCN 이 같은 지 확인 한 다음, 각 Datafile Checkpoint SCN 과 Stop SCN 이 같은 지 확인 합 니 다.다른 점 이 발견 되면 Redo Log 에서 잃 어 버 린 SCN 을 찾 아 데이터 파일 에 다시 써 서 복원 합 니 다.
SCN 일치 성 읽 기 보장 (Consistent Reads)
SCN 은 일치 성 읽 기 에 매우 중요 한 역할 을 한다.검색 어 는 데이터베이스 의 데이터 블록 (DB Block) 을 읽 어서 기록 을 찾 습 니 다. 데이터 블록 에 SCN 속성 이 있어 서 이 데이터 블록 이 언제 수정 되 었 는 지 기록 합 니 다. 데이터 블록 에 있 는 SCN 이 조회 시의 SCN 보다 크 면 데이터 블록 이 우리 가 검색 을 시작 한 후에 수정 되 었 다 는 것 을 설명 합 니 다. 그래서 우 리 는 더 오래된 버 전의 DB Block 을 찾 아야 합 니 다.(이러한 데이터 블록 은 Rollback Segments 에서 찾 을 수 있 습 니 다).
레 퍼 런 스
SCN, the System Change Number
Ask Tom "SCN " - Oracle
Oracle SCN 메커니즘 분석
Oacle 의 네 가지 scn 개념

좋은 웹페이지 즐겨찾기