Oracle SCN时间机制
2014-10-21 09:03
387 查看
概述:SCN时间机制
1.SCN(System Change Number,系统改变号)是Oracle内部非常重要的时间机制,一致性读,数据恢复与SCN有非常密切的关系。Oracle在启动时,也是通过SCN的验证来确认数据库是否需要执行实例恢复。虽然RAC有多个实例。但是只有一个数据库,SCN是对应数据库级别的改变号,所以在不同实例产生的SCN都必须是唯一的,有序的,这是SCN生成器完成的工作。系统时间和SCN之间可以非常容易地相互转换,下面是系统时间和SCN相互转换的例子“
SQL> col scn for 999999999999
SQL> select timestamp_to_scn(sysdate) scn from dual;
SCN
-------------
32637201422
SQL> select scn_to_timestamp(32637136270)sys_date from dual;
SYS_DATE
---------------------------------------------------------------------------
21-OCT-14 09.25.01.000000000 AM
2.检查点SCN
执行下面的SQL语句查询当前最近的检查点SCN
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
32633449800
每执行一次检查点由CKPT进程来更新,这SCN保存在控制文件中,检查点的执行能够确保检查点执行时刻数据的完整性和一致性。实例恢复也是从上一次检查点开始进行恢复。检查点的执行频率决定了Crash恢复或者实例恢复需要花费的时间。当发生日志切换或者请求的SGA空间不足等情况会触发检查点。发生检查点,DBWn进程会讲所有的脏数据写回磁盘,从而能够确保提交的一致性数据被写回磁盘。单个Redo日志文件越大,发生检查点间隔的时间越长,实例恢复的时间也会相应的增长,日志文件的丢失也会导致更多的数据丢失。
(数据库检查点决定了实例恢复的起点位置,最近检查点作为实例恢复的起点,实例恢复期间,数据库应用最近检查点位置到redo线程结束的位置之间发生的改变。检查点之前的改变必定已经写入磁盘)
3.最新SCN
SQL> col current_scn for 99999999999999
SQL> select current_scn from v$database;
CURRENT_SCN
---------------
32640593352
该SCN是最新的生成的全局SCN,它在不断的更新,并且只会增大不会减小。
4.数据文件的SCN
SQL> set pagesize 0
SQL> select checkpoint_change# from v$datafile_header;
32635843291
32635843291
32635843291
32635843291
32635843291
32635843291
32635843291
每个数据文件都一个启动SCN,每执行一次检查点由CKPT进程来更新,该SCN存储在数据文件头中。
5.终止SCN
执行下面的SQL语句查询所有数据文件的终止SCN:
SQL> select last_change# from v$datafile;
每个数据文件都有一个终止SCN,每执行一次检查点由CKPT进程更新,该SCN保存在控制中,当数据库打开时,由于没有终止SCN存在,看到是空。
数据库启动过程中,首先会检查控制文件和数据文件执行的检查点次数是否一致,如果不一致需要对数据文件进行介质恢复。如果一致,进一步检查数据文件启动SCN和终止SCN是否相同。入股数据库是非正常关闭,那么终止SCN肯定是空,这时候需要执行Crash恢复或者实例恢复的过程,如果联机Redo日志或者UNDO表空间被损坏,数据库可能无法正常打开。如果启动SCN和终止SCN相同,那么数据库就可以正常打开。
6.日志SCN
SQL> select status,first_time,first_change#,next_time,next_change# from v$LOG;
CURRENT 21-OCT-14 32642927072 281474976710655
INACTIVE 21-OCT-14 32640868143 21-OCT-14 32641403895
ACTIVE 21-OCT-14 32638246499 21-OCT-14 32640158002
ACTIVE 21-OCT-14 32640158002 21-OCT-14 32640774172
ACTIVE 21-OCT-14 32641403895 21-OCT-14 32641882814
ACTIVE 21-OCT-14 32641882814 21-OCT-14 32642927072
ACTIVE 21-OCT-14 32640774172 21-OCT-14 32641663074
CURRENT 21-OCT-14 32641663074 281474976710655
8 rows selected.
1.SCN(System Change Number,系统改变号)是Oracle内部非常重要的时间机制,一致性读,数据恢复与SCN有非常密切的关系。Oracle在启动时,也是通过SCN的验证来确认数据库是否需要执行实例恢复。虽然RAC有多个实例。但是只有一个数据库,SCN是对应数据库级别的改变号,所以在不同实例产生的SCN都必须是唯一的,有序的,这是SCN生成器完成的工作。系统时间和SCN之间可以非常容易地相互转换,下面是系统时间和SCN相互转换的例子“
SQL> col scn for 999999999999
SQL> select timestamp_to_scn(sysdate) scn from dual;
SCN
-------------
32637201422
SQL> select scn_to_timestamp(32637136270)sys_date from dual;
SYS_DATE
---------------------------------------------------------------------------
21-OCT-14 09.25.01.000000000 AM
2.检查点SCN
执行下面的SQL语句查询当前最近的检查点SCN
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
32633449800
每执行一次检查点由CKPT进程来更新,这SCN保存在控制文件中,检查点的执行能够确保检查点执行时刻数据的完整性和一致性。实例恢复也是从上一次检查点开始进行恢复。检查点的执行频率决定了Crash恢复或者实例恢复需要花费的时间。当发生日志切换或者请求的SGA空间不足等情况会触发检查点。发生检查点,DBWn进程会讲所有的脏数据写回磁盘,从而能够确保提交的一致性数据被写回磁盘。单个Redo日志文件越大,发生检查点间隔的时间越长,实例恢复的时间也会相应的增长,日志文件的丢失也会导致更多的数据丢失。
(数据库检查点决定了实例恢复的起点位置,最近检查点作为实例恢复的起点,实例恢复期间,数据库应用最近检查点位置到redo线程结束的位置之间发生的改变。检查点之前的改变必定已经写入磁盘)
3.最新SCN
SQL> col current_scn for 99999999999999
SQL> select current_scn from v$database;
CURRENT_SCN
---------------
32640593352
该SCN是最新的生成的全局SCN,它在不断的更新,并且只会增大不会减小。
4.数据文件的SCN
SQL> set pagesize 0
SQL> select checkpoint_change# from v$datafile_header;
32635843291
32635843291
32635843291
32635843291
32635843291
32635843291
32635843291
每个数据文件都一个启动SCN,每执行一次检查点由CKPT进程来更新,该SCN存储在数据文件头中。
5.终止SCN
执行下面的SQL语句查询所有数据文件的终止SCN:
SQL> select last_change# from v$datafile;
每个数据文件都有一个终止SCN,每执行一次检查点由CKPT进程更新,该SCN保存在控制中,当数据库打开时,由于没有终止SCN存在,看到是空。
数据库启动过程中,首先会检查控制文件和数据文件执行的检查点次数是否一致,如果不一致需要对数据文件进行介质恢复。如果一致,进一步检查数据文件启动SCN和终止SCN是否相同。入股数据库是非正常关闭,那么终止SCN肯定是空,这时候需要执行Crash恢复或者实例恢复的过程,如果联机Redo日志或者UNDO表空间被损坏,数据库可能无法正常打开。如果启动SCN和终止SCN相同,那么数据库就可以正常打开。
6.日志SCN
SQL> select status,first_time,first_change#,next_time,next_change# from v$LOG;
CURRENT 21-OCT-14 32642927072 281474976710655
INACTIVE 21-OCT-14 32640868143 21-OCT-14 32641403895
ACTIVE 21-OCT-14 32638246499 21-OCT-14 32640158002
ACTIVE 21-OCT-14 32640158002 21-OCT-14 32640774172
ACTIVE 21-OCT-14 32641403895 21-OCT-14 32641882814
ACTIVE 21-OCT-14 32641882814 21-OCT-14 32642927072
ACTIVE 21-OCT-14 32640774172 21-OCT-14 32641663074
CURRENT 21-OCT-14 32641663074 281474976710655
8 rows selected.
相关文章推荐
- Oracle SCN机制解析
- Oracle SCN机制———在备份与恢复中
- Oracle DB 服务器 系统时间修改问题 与 SCN 关系的深入研究 .
- Oracle SCN机制解析
- 探究ORACLE的SCN机制(3):Begin Backup
- Oracle SCN机制解析
- Oracle-SCN机制详解
- Oracle SCN 机制
- OracleSCN实现机制总结
- oracle 时间和SCN相互转化
- 转载备忘:Oracle重要机制:SCN机制解析
- Oracle DB 服务器 系统时间修改问题 与 SCN 关系的深入研究
- Oracle DB 服务器 系统时间修改问题 与 SCN 关系的深入研究
- oracle的SCN增长间隔时间
- Oracle DB 服务器 系统时间修改问题 与 SCN 关系的深入研究
- Oracle SCN机制解析
- Oracle DB 服务器 系统时间修改问题 与 SCN 关系的深入研究
- Oracle DB 服务器 系统时间修改问题 与 SCN 关系的深入研究
- 探讨ORACLE的SCN机制(1)
- 浅谈oracle SCN机制