Heim >Datenbank >MySQL-Tutorial >基于日志却采用三种方法来区别增量检查点和完全检查点

基于日志却采用三种方法来区别增量检查点和完全检查点

WBOY
WBOYOriginal
2016-06-07 17:14:431022Durchsuche

理论:日志却会有active,即:被RBA指针覆盖的日志。如是完全检查点,则RBA会一下子干到重做日志组的最后一条,没有了RBA,那么日

增量检查点的作用是为了均衡负载,由fast_start_mttr_target这个参数触发,增量渐进写出。所以,,CHECKPOINT_CHANGE#会有延迟,不会马上更新。
下面用三种方法证明:
法一:
理论:日志却会有active,即:被RBA指针覆盖的日志。如是完全检查点,则RBA会一下子干到重做日志组的最后一条,没有了RBA,那么日志的状态便是inactive了;而如是增量检查点,则RBA会慢慢下移,有被RBA覆盖的都是active。Oracle总是希望RBA与重做日志组的最后一条的距离最短,增量检查点就是时不时要移动它。
实验:
SQL> alter system switch logfile;

System altered

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 CURRENT
         2 INACTIVE
         3 ACTIVE

SQL> alter system switch logfile;

System altered

SQL> select group#,status from v$log;

    GROUP# STATUS
---------- ----------------
         1 ACTIVE
         2 CURRENT
         3 ACTIVE

法二:
理论:增量检查点没有全部写,所以checkpoint_change#没有马上更新;但完全检查点,因为全部写,checkpoint_change#会马上更新。
实验:
SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           1716093

SQL> alter system checkpoint;

System altered

SQL> select checkpoint_change# from v$database;

CHECKPOINT_CHANGE#
------------------
           1716275

法三:
实验:
SQL> show parameter log_checkpoints_to_

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_checkpoints_to_alert             boolean     FALSE

SQL> alter system set log_checkpoints_to_alert=true;

System altered

SQL> alter system checkpoint;

System altered

手工触发一个完全检查点,告警日志记录如下:
Thu Jun 07 01:27:17 2012
Beginning global checkpoint up to RBA [0x2d.1e4.10], SCN: 1716634
Completed checkpoint up to RBA [0x2d.1e4.10], SCN: 1716634


接下来手工触发一个增量检查点:
SQL> alter system switch logfile;

System altered
告警日志如下:
Thu Jun 07 01:28:15 2012
Beginning log switch checkpoint up to RBA [0x2e.2.10], SCN: 1716660
Thread 1 advanced to log sequence 46
  Current log# 3 seq# 46 mem# 0: D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\ONLINELOG\O1_MF_3_7TQZWZOY_.LOG
  Current log# 3 seq# 46 mem# 1: D:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\ORCL\ONLINELOG\O1_MF_3_7TQZX11D_.LOG

从这两个告警日志中,我们可以看到,完全检查点会马上将RBA下移,而增量检查点就会悠着点了。

更多Oracle相关信息见Oracle 专题页面 ?tid=12

linux

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn