ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 影响检查点频率的参数

影响检查点频率的参数

原创 Linux操作系统 作者:redhouser 时间:2013-01-23 16:05:07 0 删除 编辑

影响检查点频率的参数有多个,介绍如下:
1,log_checkpoint_interval
该参数通过指定增量检查点与最后一次重做日志写之间的重做日志块个数,控制检查点频率.
这里的块指操作系统物理块,而不是数据库块.
无论该参数如何设置,在日志切换时总会发生检查点.所以,如果该参数数值超过了实际的日志文件大小,检查点只会在日志切换时发生.检查点频率是影响系统从故障中恢复时间的因素之一.

*指定该参数为0的效果与设置为无限大的值效果相同,该参数会被忽略.
*限制恢复所需I/O也可以通过设置LOG_CHECKPOINT_TIMEOUT参数或最小的重做日志大小实现.通过查询V$INSTANCE_RECOVERY视图,可以了解到当前控制检查点的是哪种机制.

2,LOG_CHECKPOINT_TIMEOUT
该参数通过指定自从前一次写重做日志文件时的增量检查点所经历的时间(单位秒),控制检查点频率.这意味着,缓存中不存在超过指定时间的脏数据.
设置该值为0禁止了基于时间的检查点.所以,不建议设置该值为0,除非设置了FAST_START_MTTR_TARGET.
*由该参数产生的检查点会在前一个检查点结束后执行.
*限制恢复所需I/O也可以通过设置LOG_CHECKPOINT_INTERVAL参数或最小的重做日志大小实现.通过查询V$INSTANCE_RECOVERY视图,可以了解到当前控制检查点的是哪种机制.

3,LOG_CHECKPOINTS_TO_ALERT
该参数可以控制将检查点记录在alert文件中.

4,FAST_START_MTTR_TARGET
该参数用于指定数据库为了完成崩溃(crash recovery)所需时间(秒).如果设置了LOG_CHECKPOINT_INTERVAL,该参数将被覆盖.

5,V$INSTANCE_RECOVERY
该视图用于查询可用于限制恢复所需I/O的机制,包括:
*LOG_CHECKPOINT_TIMEOUT
*LOG_CHECKPOINT_INTERVAL
*FAST_START_MTTR_TARGET
*最小的重做日志大小


SQL> desc V$INSTANCE_RECOVERY
Name                           Type   Comments
------------------------------ ------ --------
RECOVERY_ESTIMATED_IOS         NUMBER buffer cache中的脏块个数        
ACTUAL_REDO_BLKS               NUMBER 当前恢复所需重做日志块数        
TARGET_REDO_BLKS               NUMBER 当前恢复所需重做日志块数目标,是后续3列中最小者,同时标识出哪个设定参数生效        
LOG_FILE_SIZE_REDO_BLKS        NUMBER 由重做日志所确定的恢复所需重做日志块数        
LOG_CHKPT_TIMEOUT_REDO_BLKS    NUMBER LOG_CHECKPOINT_TIMEOUT确定的恢复所需重做日志块数        
LOG_CHKPT_INTERVAL_REDO_BLKS   NUMBER LOG_CHECKPOINT_INTERVAL确定的恢复所需重做日志块数         
FAST_START_IO_TARGET_REDO_BLKS NUMBER 此列已弃用        
TARGET_MTTR                    NUMBER 基于FAST_START_MTTR_TARGET计算的生效MTTR(mean time to recover,秒),用于内部计算.二者一般一致,在FAST_START_MTTR_TARGET为0或较大(3600)时,则考虑系统极限得到.        
ESTIMATED_MTTR                 NUMBER 基于当前脏块数量和日志块个数,估算的MTTR(mean time to recover,秒),如未设置FAST_START_MTTR_TARGET则为0.
CKPT_BLOCK_WRITES              NUMBER 检查点写入的块个数        
OPTIMAL_LOGFILE_SIZE           NUMBER 根据FAST_START_MTTR_TARGET估算的最优日志文件大小(megabytes)        
ESTD_CLUSTER_AVAILABLE_TIME    NUMBER 当前实例故障时该集群处于部分可用状态的估计时间(秒)
WRITES_MTTR                    NUMBER 由FAST_START_MTTR_TARGET触发的写次数
WRITES_LOGFILE_SIZE            NUMBER 由最小重做日志大小触发的写次数        
WRITES_LOG_CHECKPOINT_SETTINGS NUMBER 由LOG_CHECKPOINT_INTERVAL/LOG_CHECKPOINT_TIMEOUT触发的写次数        
WRITES_OTHER_SETTINGS          NUMBER 由其他原因触发的写次数(如被弃用的参数FAST_START_IO_TARGET)        
WRITES_AUTOTUNE                NUMBER 由自动调整检查点(auto-tune checkpointing)触发的写次数        
WRITES_FULL_THREAD_CKPT        NUMBER 由全量检查点(full thread checkpoints)触发的写次数

6,测试

--版本
SQL> select * from v$version;

BANNER
----------------------------------------------------------------
Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Prod
PL/SQL Release 10.2.0.3.0 - Production
CORE    10.2.0.3.0      Production
TNS for Linux: Version 10.2.0.3.0 - Production
NLSRTL Version 10.2.0.3.0 - Production


--缺省设置
SQL> show parameter checkpoint

NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- ------------------------------
log_checkpoint_interval              integer                          0
log_checkpoint_timeout               integer                          1800
log_checkpoints_to_alert             boolean                          FALSE
SQL> show parameter fast

NAME                                 TYPE                             VALUE
------------------------------------ -------------------------------- ------------------------------
fast_start_io_target                 integer                          0
fast_start_mttr_target               integer                          0
fast_start_parallel_rollback         string                           LOW

--测试log_checkpoints_to_alert
SQL>
SQL> alter system checkpoint;

System altered.
==〉alert_rocl.log中无记录

SQL> alter system set log_checkpoints_to_alert=true;

System altered.
==〉alert_rocl.log:
Wed Jan 23 14:53:12 2013
ALTER SYSTEM SET log_checkpoints_to_alert=TRUE SCOPE=BOTH;


SQL> alter system checkpoint;

System altered.

==〉alert_rocl.log:
Wed Jan 23 14:53:24 2013
Beginning global checkpoint up to RBA [0x48.4c.10], SCN: 258943
Completed checkpoint up to RBA [0x48.4c.10], SCN: 258943

--测试LOG_CHECKPOINT_TIMEOUT
SQL> alter system set LOG_CHECKPOINT_TIMEOUT=120;

System altered.
==〉alert_rocl.log:
ALTER SYSTEM SET log_checkpoint_timeout=120 SCOPE=BOTH;
Wed Jan 23 14:56:30 2013
Incremental checkpoint up to RBA [0x48.4c.0], current log tail at RBA [0x48.4c.0]


SQL> select recovery_estimated_ios ios,
       actual_redo_blks a_rb,
       target_redo_blks t_rb,
       log_file_size_redo_blks fs_rb,
       log_chkpt_timeout_redo_blks tout_rb,
       log_chkpt_interval_redo_blks itv_rb
 from V$INSTANCE_RECOVERY;   

       IOS       A_RB       T_RB      FS_RB    TOUT_RB     ITV_RB
---------- ---------- ---------- ---------- ---------- ----------
       219        871        871     184320        871
==〉T_RB=TOUT_RB,当前redo target由LOG_CHECKPOINT_TIMEOUT控制
==〉
log_checkpoint_timeout参数值太小,导致频繁增量检查点,可以在alert_rocl.log中看到大约2分钟出现一次增量检查点。
Wed Jan 23 14:56:30 2013
Incremental checkpoint up to RBA [0x48.4c.0], current log tail at RBA [0x48.4c.0]
Wed Jan 23 14:58:57 2013
Incremental checkpoint up to RBA [0x48.4c.0], current log tail at RBA [0x48.51.0]
Wed Jan 23 15:01:24 2013
Incremental checkpoint up to RBA [0x48.52.0], current log tail at RBA [0x48.3b3.0]
Wed Jan 23 15:04:21 2013
Incremental checkpoint up to RBA [0x48.3c1.0], current log tail at RBA [0x48.3c1.0]


SQL> alter system set log_checkpoint_timeout=1800;

System altered.

--测试log_checkpoint_interval
SQL> select bytes from v$log;

     BYTES
----------
  52428800
  52428800
  52428800

SQL> alter system set log_checkpoint_interval=100;

System altered.

==〉alert_rocl.log:
Wed Jan 23 15:33:54 2013
ALTER SYSTEM SET log_checkpoint_interval=100 SCOPE=BOTH;

SQL> select recovery_estimated_ios ios,
       actual_redo_blks a_rb,
       target_redo_blks t_rb,
       log_file_size_redo_blks fs_rb,
       log_chkpt_timeout_redo_blks tout_rb,
       log_chkpt_interval_redo_blks itv_rb
 from V$INSTANCE_RECOVERY;
  2    3    4    5    6    7 
       IOS       A_RB       T_RB      FS_RB    TOUT_RB     ITV_RB
---------- ---------- ---------- ---------- ---------- ----------
         9          6        100     184320       1068        100
==〉T_RB=ITV_RB,当前redo target由log_checkpoint_interval控制

SQL> insert into ttt select * from ttt;

39092 rows created.

SQL> commit;

Commit complete.

SQL> select sid from v$mystat where rownum<2;

       SID
----------
      1190

SQL> insert into ttt select * from ttt;


78184 rows created.

SQL> SQL> r
  1* insert into ttt select * from ttt

156368 rows created.

==〉alert_rocl.log:
Wed Jan 23 15:46:05 2013
Incremental checkpoint up to RBA [0x48.df13.0], current log tail at RBA [0x48.df32.0]

Wed Jan 23 15:49:39 2013
Beginning log switch checkpoint up to RBA [0x49.2.10], SCN: 262202
Thread 1 advanced to log sequence 73
  Current log# 2 seq# 73 mem# 0: /u01/app/oracle/oradata/orcl1/redo02.log
  Current log# 2 seq# 73 mem# 1: /u01/app/oracle/oradata/orcl2/redo02a.dbf
Wed Jan 23 15:49:44 2013
Completed checkpoint up to RBA [0x49.2.10], SCN: 262202


在操作前后redo size超过24MB,怎么与log_checkpoint_interval=100对应?
SQL> select n.name, s.value
  from v$sesstat s, v$statname n
 where n.name in ('redo blocks written', 'redo size')
   and s.STATISTIC# = n.STATISTIC#
   and s.sid = 1190;  2    3    4    5 

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo size                                                          27677332
redo blocks written                                                       0

SQL> r
  1  select n.name, s.value
  2    from v$sesstat s, v$statname n
  3   where n.name in ('redo blocks written', 'redo size')
  4     and s.STATISTIC# = n.STATISTIC#
  5*    and s.sid = 1190

NAME                                                                  VALUE
---------------------------------------------------------------- ----------
redo size                                                          51817000
redo blocks written                                                       0

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/18922393/viewspace-753135/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: DBMS_FGA简介
请登录后发表评论 登录
全部评论

注册时间:2011-05-26

  • 博文量
    211
  • 访问量
    876667