[ORACLE] SNC 学习

SCN

      SCN(System Change Number),也就是通常所说的系统改变号或者系统提交号,是数据库中非常重要的一个数据结构。

   SCN用以标识数据库在某个确切时刻提交的版本。在事务提交时,它被赋予一个唯一的标识事务的SCN。SCN同时被作为Oracle数据库的内部时钟机制,可被看做逻辑时钟,每个数据库都有一个全局的SCN生成器。SCN在数据库中是唯一的,并随时间而增加,但是可能并不连贯。除非重建数据库,SCN的值永远不会被重置为0.

检查点: 是一个数据库事件,它把修改数据从高速缓存写入磁盘,并更新控制文件和数据文件,它存在的根本意义在于减少崩溃恢复时间

四种SCN

 

  • 系统检查点SCN:       当一个检查点动作完成后,oracle 就将系统检查点的SCN存储到控制文件中.
  • 据文件检查点SCN:  当一个检查点动作完成后,OraclE将每个数据文件的SCN单独存放在控制文件中.
  • 启动SCN:            oracle 把这个检查点的SCN存储在每个数据文件的文件头中,这个值称为启动SCN,因为它用于在数据库实例启动时,检查是否需要执行数据库恢复
  • 终止SCN         每个数据文件的终止SCN都存储在控制文件中.

 

 

作用:一致性读/保证事务的唯一性/物理备份恢复机制重要的判断点

SQL> select checkpoint_change#,last_change# from v$datafile; --last_chagne#为空或无穷大 0Xffffffff

CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
           9200308 
           9200308 
           9200308 
           9200308 
           9200308 
           9200308 
           9200308 
           9200308 

8 rows selected

SQL> select file#,creation_change#,resetlogs_change# from v$datafile_header;

     FILE# CREATION_CHANGE# RESETLOGS_CHANGE#
---------- ---------------- -----------------
         1                9           3147070
         3             5480           3147070
         4          1920446           3147070
         7            32876           3147070
        13          2171860           3147070
        17          5356344           3147070
        18          5356374           3147070
        19          5356400           3147070

8 rows selected

SQL> select file#,change# from v$backup;

     FILE#    CHANGE#
---------- ----------
         1    9200308
         3    9200308
         4    9200308
         7    9200308
        13    9200308
        17    9200308
        18    9200308
        19    9200308

8 rows selected

SQL> alter database begin backup;

Database altered

SQL> select file#,change# from v$backup;

     FILE#    CHANGE#
---------- ----------
         1    9200723
         3    9200723
         4    9200723
         7    9200723
        13    9200723
        17    9200723
        18    9200723
        19    9200723
8 rows selected
SQL> alter database end backup;

Database altered

SQL> select FIRST_CHANGE#,NEXT_CHANGE# from v$log;

FIRST_CHANGE# NEXT_CHANGE#
------------- ------------
      9111479      9167135
      9066420      9111479
      9167135 1.8446744073

 

posted on 2020-05-15 22:54  InnoLeo  阅读(365)  评论(0编辑  收藏  举报