zoukankan      html  css  js  c++  java
  • 2.1.4 基本概念

    1,重做线程(Redo Thread)

    重做线程是由一组相关的重做日志组成。

    重做线程与实例是一一对应关系。单例程DB只有一个重做线程;RAC 有多个重做线程。

    通过查询动态性能视图V$THREAD 可以显示重做线程的详细信息。

    SQL> select thread#, status, groups, sequence# from v$thread;

       THREAD# STATUS     GROUPS  SEQUENCE#
    ---------- ------ ---------- ----------
             1 OPEN            3          5

     

    2,重做入口(Redo Entry)

    重做入口也被称为重做记录(redo record)或重做数据( redo data),它由一组变化向量组成,这些变化向量包括表块变化(块位置、变化数据)、UNDO 块变化和UNDO 事务表的变化。当用户执行事务操作时(DDL 和 DML )时,服务器进程会将重做记录写入到重做日志缓冲区,并最终由后台进程LGWR 将重做记录写入到重做日志。

    3,SCN(System Change Number)

    SCN 是用于标识数据库变化的唯一标识号,其数值顺序递增。

    当执行事务操作时,系统会为每个事务变化生成相应的SCN。

    可以通过查询动态性能视图V$DATABASE ,可以显示当前SCN 值。

    SQL> select current_scn from v$database;

    CURRENT_SCN
    -----------
         659539

     

    4,日志切换

    日志切换是指后台进程LGWR 停止写一个日志组,并开始写另一个日志组的事件,日志切换包括自动日志切换和手工日志切换两种方式。

    手工日志切换:

    SQL> select * from v$log;

        GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
    ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
             1          1          8   52428800          1 NO  CURRENT                 667657 01-9月 -08
             2          1          6   52428800          1 NO  INACTIVE                667530 01-9月 -08
             3          1          7   52428800          1 NO  INACTIVE                667532 01-9月 -08

    SQL> alter system switch logfile;

    系统已更改。

    SQL> select * from v$log;

        GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS           FIRST_CHANGE# FIRST_TIME
    ---------- ---------- ---------- ---------- ---------- --- ---------------- ------------- ----------
             1          1          8   52428800          1 NO  ACTIVE                  667657 01-9月 -08
             2          1          9   52428800          1 NO  CURRENT                 668025 01-9月 -08
             3          1          7   52428800          1 NO  INACTIVE                667532 01-9月 -08

     

    5,日志序列号

    日志序列号是重做日志的使用标识号,其数据是顺序递增的。当进行日志切换时,日志序列号会自动增一,并将该信息写入到控制文件中。

    当执行日志切换时,ORACLE 会将特定日志序列号所记载的SCN 值范围记载到日志历史记录中。当执行完全恢复或不完全恢复时,备份数据文件需要应用重做信息,而重做信息被记载到归档日志和重做日志中。通过比较备份文件的SCN 值和日志历史记载的SCN 值范围,ORACLE 可以确定要应用的归档日志和重做日志。

    通过查询动态性能视图V$LOG_HISTORY,可以显示特定重做线程的日志历史记录。

    SQL> select * from v$log_history;

         RECID      STAMP    THREAD#  SEQUENCE# FIRST_CHANGE# FIRST_TIME     NEXT_CHANGE# RESETLOGS_CHANGE# RESETL
    ---------- ---------- ---------- ---------- ------------- -------------- ------------ --------------
             1  664106849          1          1        534907 30-8月 -08           565110            534907 30-8月 -08
             2  664107081          1          2        565110 30-8月 -08           573749            534907 30-8月 -08
             3  664194031          1          3        573749 30-8月 -08           600444            534907 30-8月 -08
             4  664283991          1          4        600444 31-8月 -08           641616            534907 30-8月 -08
             5  664325856          1          5        641616 01-9月 -08           667530            534907 30-8月 -08
             6  664325858          1          6        667530 01-9月 -08           667532            534907 30-8月 -08
             7  664325940          1          7        667532 01-9月 -08           667657            534907 30-8月 -08
             8  664326412          1          8        667657 01-9月 -08           668025            534907 30-8月 -08

     

    6,检查点

    检查点(Checkpoint)是一个数据库事件,它用于同步数据库的所有数据文件、控制文件和重做日志。当发出检查点时,后台进程CKPT 会将检查点时刻的SCN 写入到控制文件和数据文件头部,同时会促使后台进程DBWR 将所有脏缓冲区数据写入到文件中。当ORACLE 发出检查点时,CKPT 会促使DBWR 开始工作,而DBWR 又会促使LGWR 开始工作。因为当发出检查点时CKPT、DBWR、LGWR 同时工作,所以数据文件、控制文件和重做日志的SCN 完全一致,从而使得三种数据库文件保持完全同步。

    注意:当执行COMMIT 操作时,只有后台进程LGWR 会将事务变化写入到重做日志,而后台进程DBWR 只有在检查点时刻才会将脏缓冲区数据写入到数据文件。

    在以下情况中后台进程CKPT 会发出检查点:

    • 日志切换。当当前日志组写满之后,后台进程LGWR 会进行日志切换,当进行日志切换时,系统会促使后台进程CKPT 发出检查点。
    • 关闭数据库。当执行SHUTDOWN NORMAL、SHUTDOWN TRANSACTIONAL、SHUTDOWN IMMIEDIATE 等命令关闭数据库时,后台进程CKPT 会发出检查点,并且只有在检查点完成之后才会关闭数据库。注意,SHUTDOWN ABORT 命令不会发出检查点。
    • 手工检查点。当执行数据库备份时,为了使脏缓冲区数据写入数据文件,DBA 可以执行ALTER SYSTEM CHECKPOINT 强制后台进程CKPT 发出检查点。
    • 通过设置初始化参数据 FAST_START_MTTR_TARGET 控制检查点,该初始化参数用于指定例程恢复的最大时间。当设置了 FAST_START_MTTR_TARGET 参数之后,ORACLE 会根据该参数自动调节检查点。
    E-MAIL:yiwuya@hotmail.com
    MSN:yiwuya@hotmail.com
    QQ:304899972
    纺织软件
  • 相关阅读:
    linux 短信收发
    sama5d3 环境检测 adc测试
    【Codeforces 723C】Polycarp at the Radio 贪心
    【Codeforces 723B】Text Document Analysis 模拟
    【USACO 2.2】Preface Numbering (找规律)
    【Codeforces 722C】Destroying Array (数据结构、set)
    【USACO 2.1】Hamming Codes
    【USACO 2.1】Healthy Holsteins
    【USACO 2.1】Sorting A Three-Valued Sequence
    【USACO 2.1】Ordered Fractions
  • 原文地址:https://www.cnblogs.com/yiwuya/p/1281783.html
Copyright © 2011-2022 走看看