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
    纺织软件
  • 相关阅读:
    正则表达式(Python3-re模块示例)
    format函数之几种常规用法
    元组的拆包
    Python3魔术方法实现一摞卡牌
    Python字典的常见操作
    70. Climbing Stairs(js)
    69. Sqrt(x)(js)
    68. Text Justification(js)
    67. Add Binary(js)
    66. Plus One(js)
  • 原文地址:https://www.cnblogs.com/yiwuya/p/1281783.html
Copyright © 2011-2022 走看看