checkpoint 详解 (三)

查看系统的checkpoint动作

我们可以通过将LOG_checkpointS_TO_ALERT设置成TRUE来打开checkpoint的trace,这样就可以跟踪checkpoint的操作了。

ALTER SYSTEM SET LOG_checkpointS_TO_ALERT=TRUE;

这设置以后系统的checkpoint将会被记录alert_$SID.log文件中。

在V$DATAFILE_HEADER里面也保存了发生完全checkpoint的时候一些相关信息,包括checkpoint发生时间、对应SCN已经checkpoint的次数。

select file# NO, status, tablespace_name, name, dbms_flashback.get_system_change_number CUR_SCN,

to_char(resetlogs_time, 'YYYY-MM-DD HH24:MI:SS')RST_DT, resetlogs_change# RST_SCN,

to_char(checkpoint_time, 'YYYY-MM-DD HH24:MI:SS')CKPT_DT, checkpoint_change# CKPT_SCN, checkpoint_count CKPT_CNT

from v$datafile_header;

/**

NO STATUS TABLESPACE_NAME CUR_SCN RST_DT RST_SCN CKPT_DT CKPT_SCN CKPT_CNT

--- ------- ---------------- -------- ------------------- -------- ------------------- --------- ---------

1 ONLINE SYSTEM 533541 2008-01-12 16:51:53 446075 2008-08-04 22:03:58 532354 65

2 ONLINE UNDOTBS1 533541 2008-01-12 16:51:53 446075 2008-08-04 22:03:58 532354 28

3 ONLINE SYSAUX 533541 2008-01-12 16:51:53 446075 2008-08-04 22:03:58 532354 65

4 ONLINE USERS 533541 2008-01-12 16:51:53 446075 2008-08-04 22:03:58 532354 64

5 ONLINE EXAMPLE 533541 2008-01-12 16:51:53 446075 2008-08-04 22:03:58 532354 24

*/

完全检查点

--我们先执行一个

ALTER SYSTEM checkpoint;

--下面是alert文件中的数据结果

Mon Aug 4 22:22:082008

Beginning global checkpoint up to RBA [0x8.c9d4.10], SCN: 533714

Completed checkpoint up to RBA [0x8.c9d4.10], SCN: 533714

--我们能看到完全checkpoint发生的SCN 533714

--下面我们再对照下V$DATAFILE_HEADER中的结果

NO STATUS TABLESPACE_NAME CUR_SCN RST_DT RST_SCN CKPT_DT CKPT_SCN CKPT_CNT

--- ------- ---------------- -------- ------------------- -------- ------------------- --------- ---------

1 ONLINE SYSTEM 533790 2008-01-12 16:51:53 446075 2008-08-04 22:22:08 533714 66

2 ONLINE UNDOTBS1 533790 2008-01-12 16:51:53 446075 2008-08-04 22:22:08 533714 29

3 ONLINE SYSAUX 533790 2008-01-12 16:51:53 446075 2008-08-04 22:22:08 533714 66

4 ONLINE USERS 533790 2008-01-12 16:51:53 446075 2008-08-04 22:22:08 533714 65

5 ONLINE EXAMPLE 533790 2008-01-12 16:51:53 446075 2008-08-04 22:22:08 533714 25

--看到了么,checkpoint时间和checkpoint的SCN已经被记录到数据文件头中了。

日志切换时的检查点

--我们先做一次日志切换

ALTER SYSTEM SWITCH LOGFILE;

--然后看看alert里面的记录

Mon Aug 4 22:31:39 2008

Beginning log switch checkpoint up to RBA [0x9.2.10], SCN: 534450

Thread 1 advanced to log sequence 9

Current log# 2 seq# 9 mem# 0: /u/app/oracle/oradata/orcl/redo02.log

Mon Aug 4 22:35:58 2008

Completed checkpoint up to RBA [0x9.2.10], SCN: 534450

--我们能看到checkpoint是在过了一段时间(这里是4分钟)之后才完成的

--接着我们来看下V$DATAFILE_HEADER中的结果

NO STATUS TABLESPACE_NAME CUR_SCN RST_DT RST_SCN CKPT_DT CKPT_SCN CKPT_CNT

--- ------- ---------------- -------- ------------------- -------- ------------------- --------- ---------

1 ONLINE SYSTEM 534770 2008-01-12 16:51:53 446075 2008-08-04 22:31:44 534450 67

2 ONLINE UNDOTBS1 534770 2008-01-12 16:51:53 446075 2008-08-04 22:31:44 534450 30

3 ONLINE SYSAUX 534770 2008-01-12 16:51:53 446075 2008-08-04 22:31:44 534450 67

4 ONLINE USERS 534770 2008-01-12 16:51:53 446075 2008-08-04 22:31:44 534450 66

5 ONLINE EXAMPLE 534770 2008-01-12 16:51:53 446075 2008-08-04 22:31:44 534450 26

--在这里我们能发现下V$DATAFILE_HEADER里面记录的SCN和日志切换发生的checkpoint的SCN是一样的,

--这就证明了日志切换是会更新数据文件头的,同时日志切换的checkpoint是一个级别比较低的操作,

--它不会立即完成,这也是出于性能上考虑的。

增量checkpoint查看

这段话明天再实验下当前所知只有在LOG_checkpoint_TIMEOUT设置了非0值之后触发的增量checkpoint会在alert文件中有记录,其他条件触发的增量checkpoint都不会记录在alert文件中。

--下面是当LOG_checkpoint_TIMEOUT设置为1800s的时候所产生的增量checkpoint记录

Sun Aug 3 19:08:56 2008

Incremental checkpoint up to RBA [0x8.e17.0], current log tail at RBA [0x8.1056.0]

Sun Aug 3 19:39:00 2008

Incremental checkpoint up to RBA [0x8.1be0.0], current log tail at RBA [0x8.1c6e.0]

Sun Aug 3 20:09:04 2008

Incremental checkpoint up to RBA [0x8.2af5.0], current log tail at RBA [0x8.2b6a.0]

Sun Aug 3 20:39:07 2008

Incremental checkpoint up to RBA [0x8.3798.0], current log tail at RBA [0x8.3851.0]

Sun Aug 3 21:09:10 2008

Incremental checkpoint up to RBA [0x8.47b9.0], current log tail at RBA [0x8.48bb.0]

Sun Aug 3 21:39:14 2008

Incremental checkpoint up to RBA [0x8.548d.0], current log tail at RBA [0x8.5522.0]

Mon Aug 4 21:05:18 2008

查看fast_start_mttr_target

通过查看V$INSTANCE_RECOVERY动态性能视图可以查看一些MTTR相关的信息。

SELECT TARGET_MTTR,ESTIMATED_MTTR,CKPT_BLOCK_WRITES,CKPT_BLOCK_WRITES FROM V$INSTANCE_RECOVERY

TARGET_MTTR

用户设置的参数FAST_START_MTTR_TARGET的值.

ESTIMATED_MTTR

根据目前脏块数目和日志块数目,评估的现在进行恢复所需要的时间.

CKPT_BLOCK_WRITES

检查点写完的块数目.

CKPT_BLOCK_WRITES

额外的因为检查点引起的数据库写入操作(因为不必要的检查点的产生,设置一个非常小的系统恢复时间将会对性能产生负面影响,为了帮助管理员监测这个参数设置较小时对数据库的影响,这个视图显示了这个列)

你可能感兴趣的:(checkpoint 详解 (三))