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문장을 사용하면 LGWR은commit record를 즉시 redo log buffer에 기록하지만 해당 data buffer의 변경들은 redo log buffer들을datafile들에 write하는 것을 더 효과적으로 할 때까지 지연 되는 것입니다.
User가 transaction을 commit 할 때, transaction은 System Change Number(SCN)를 할당 받고 Oracle은redo log에 transaction의 redo log entry들과 함께 기록 합니다.
Activity가 빈번하다면, LGWR은 group commit을 사용하여 online redo log file에 write할 수도 있습니다.
오라클은 특정한 시점의 데이타베이스 상태를 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문장을 사용하면 LGWR은commit record를 즉시 redo log buffer에 기록하지만 해당 data buffer의 변경들은 redo log buffer들을datafile들에 write하는 것을 더 효과적으로 할 때까지 지연 되는 것입니다.
User가 transaction을 commit 할 때, transaction은 System Change Number(SCN)를 할당 받고 Oracle은redo log에 transaction의 redo log entry들과 함께 기록 합니다.
Activity가 빈번하다면, LGWR은 group commit을 사용하여 online redo log file에 write할 수도 있습니다.
출처 : 오라클자바커뮤니티(http://www.oraclejavanew.kr)
오라클자바커뮤니티에서 설립한 개발자교육6년차 오엔제이프로그래밍 실무교육센터(오라클SQL,튜닝,힌트,자바프레임워크,안드로이드,아이폰,닷넷 실무개발강의)
[개강확정강좌]오라클자바커뮤니티에서 운영하는 개발자 전문교육 ,개인80%환급(www.onjprogramming.co.kr)
[주말]
[10/26]C#,ASP.NET마스터
[10/26]Spring3.X, MyBatis, Hibernate실무과정
[10/27]JAVA&WEB프레임워크실무과정
[평일야간]
[10/17]SQL초보에서실전전문가까지
[10/22]자바초보에서안드로이드까지
[10/25]C#,ASP.NET마스터
[10/25]Spring3.X, MyBatis, Hibernate실무과정
[주간]
[10/21]Spring3.X, MyBatis, Hibernate실무과정
[주말]
[10/26]C#,ASP.NET마스터
[10/26]Spring3.X, MyBatis, Hibernate실무과정
[10/27]JAVA&WEB프레임워크실무과정
[평일야간]
[10/17]SQL초보에서실전전문가까지
[10/22]자바초보에서안드로이드까지
[10/25]C#,ASP.NET마스터
[10/25]Spring3.X, MyBatis, Hibernate실무과정
[주간]
[10/21]Spring3.X, MyBatis, Hibernate실무과정
댓글 없음:
댓글 쓰기