2013년 10월 19일 토요일

오라클 SCN은 최근의 SCN 보다 크고 유일한 값

SCN 이란?
오라클은 특정한 시점의 데이타베이스 상태를 SCN으로 관리하는데 어떤 트랜잭션이 commit 되면, SCN은 최근의 SCN 보다 크고 유일한 값이 할당되며이 값은 그 트랜잭션이 변경시킨 블럭에 반영되고또한 데이타화일의 가장 최근의 SCN은 데이타화일의 헤더에 기록 됩니다.
아래에는 SCN이 이용되는 경우에 대해 몇 가지 적었습니다.
참고 하세요~

1. Oracle Startup 
내부적 과정

$ORACLE_HOME/dbs/init$ORACLE_SID.ora file
를 찾는다
.
$ORACLE_SID.ora file
내의 지정된 config file를 포함하여 parameter 내용을 참조하여 Oracle backgroud process startup 한다.
(nomount )

control_file
이라는 parameter에 지정된 control file를 읽는다.
(mount )

control file
내에 설정되어 있는 Datafile  redolog file를 읽은 후 SCN이 일치하는가를 check한 후에 만약 틀리면 redolog를 이용하여 Recover 한 후 startup한다.


2. Listing Status Information About Data Files

SQL> SELECT name,
2 rfile#,
3 status,
4 checkpoint_change# "CHECKPOINT"
5 FROM v$datafile;

NAME RFILE# STATUS CHECKPOINT
----------------------------------------------------------------
C:\ORACLE\ORADATA\WINK\SYSTEM01.DBF 1 SYSTEM 7041729

C:\ORACLE\ORADATA\WINK\UNDOTBS01.DBF 2 ONLINE 7041729

C:\ORACLE\ORADATA\WINK\CWMLITE01.DBF 3 ONLINE 7041729

C:\ORACLE\ORADATA\WINK\DRSYS01.DBF 4 ONLINE 7041729

C:\ORACLE\ORADATA\WINK\EXAMPLE01.DBF 5 ONLINE 7041729

C:\ORACLE\ORADATA\WINK\INDX01.DBF 6 ONLINE 7041729

C:\ORACLE\ORADATA\WINK\ODM01.DBF 7 ONLINE 7041729

C:\ORACLE\ORADATA\WINK\TOOLS01.DBF 8 ONLINE 7041729

C:\ORACLE\ORADATA\WINK\USERS01.DBF 9 ONLINE 7041729

C:\ORACLE\ORADATA\WINK\XDB01.DBF 10 ONLINE 7041729


10 
개의 행이 선택되었습니다.

RFILE#
은 각 데이타 화일의 화일 숫자로 리스트 하며 데이타베이스를 갖고 create 되었던,
SYSTEM tablespace
에 있는 첫번째 데이타 화일은 항상 화일 1 입니다.

STATUS
은 데이타 화일에 대해 다른 정보로 리스트 합니다만약 데이타 화일이 SYSTEM tablespace의 부분에 있다면상태는 SYSTEM 입니다.
(
만약 recovery를 요구 하지 않는다면)
만약 non-SYSTEM tablespace에 데이타 화일이 online으로 된다면상태는 ONLINE 이구요,
non-SYSTEM tablespace
에 데이타 화일이 offline으로 된다면상태는 OFFLINE이나 RECOVER 중 하나로 될 수 있습니다.
CHECKPOINT
는 데이타 화일의 가장 최근의 checkpoint에 기록된 마지막의 SCN을 리스트 합니다.


3. Oracle
 "fast commit" mechanism을 사용 하므로 사용자가 COMMIT문장을 사용하면 LGWRcommit record를 즉시 redo log buffer에 기록하지만 해당 data buffer의 변경들은 redo log buffer들을datafile들에 write하는 것을 더 효과적으로 할 때까지 지연 되는 것입니다.

User
 transaction commit 할 때, transaction System Change Number(SCN)를 할당 받고 Oracleredo log transaction redo log entry들과 함께 기록 합니다.

Activity
가 빈번하다면, LGWR group commit을 사용하여 online redo log file write할 수도 있습니다.

출처 : 오라클자바커뮤니티(http://www.oraclejavanew.kr)

오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)  





댓글 없음:

댓글 쓰기