zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    跨域现象及原理分析
    git的commit撤销
    什么是幂等,什么情况下需要幂等,如何实现幂等
    flowable表简要说明
    关于SpringCloud、SpringBoot简单讲解
    常用的maven仓库地址
    Python安装第三方库常用方法
    反编译pyinstaller打包的exe安装包
    测试用例-需要添加@Transactional 这样 就不会再数据库里面留下痕迹了
    断点 太多了 调试运行特别慢-把所有的历史断点都去掉就快了
  • 原文地址:https://www.cnblogs.com/tingxin/p/12897741.html
Copyright © 2011-2022 走看看