您的位置:首页 > 数据库 > Oracle

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: