千家信息网

怎么理解checkpoint cnt和checkpoint scn

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章将为大家详细讲解有关怎么理解checkpoint cnt和checkpoint scn,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。[说明]模
千家信息网最后更新 2025年02月01日怎么理解checkpoint cnt和checkpoint scn

这篇文章将为大家详细讲解有关怎么理解checkpoint cnt和checkpoint scn,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

[说明]模仿eygle大师的一篇文章,自己动手做了一下,感觉只有这样才能印象深刻。原文参考:http://www.eygle.com/archives/2004/06/checkpoint_scn_ckpcnt.html

1. 在不同情况下dump控制文件

SQL> alter session set events 'immediate trace name CONTROLF level 10';

Session altered.

SQL> alter tablespace system begin backup;

Tablespace altered.

SQL> alter session set events 'immediate trace name CONTROLF level 10';

Session altered.

SQL> alter system checkpoint;

System altered.

SQL> alter session set events 'immediate trace name CONTROLF level 10';

Session altered.

SQL> alter tablespace system end backup;

Tablespace altered.

SQL> alter session set events 'immediate trace name CONTROLF level 10';

Session altered.

SQL>

2. 从udump目录萃取出trace file中关于system表空间的信息,加以分析

a. 系统正常情况下dump的信息

***************************************************************************

DATA FILE RECORDS

***************************************************************************

(blkno = 0x6, size = 180, max = 100, in-use = 3, last-recid= 0)

DATA FILE #1:

(name #6) D:\OPT\ORACLE9I\PRODUCT\9.2.0\ORADATA\ORA92US\SYSTEM01.DBF

creation size=0 block size=8192 status=0xe head=6 tail=6 dup=1

tablespace 0, index=1 krfil=1 prev_file=0

unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00

Checkpoint cnt:55 scn: 0x0000.00194116 04/14/2021 19:36:49

Stop scn: 0xffff.ffffffff 04/13/2008 20:48:26

Creation Checkpointed at scn: 0x0000.00000005 03/17/2008 15:57:33

thread:0 rba:(0x0.0.0)

enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000

Offline scn: 0x0000.00192482 prev_range: 0

Online Checkpointed at scn: 0x0000.00192483 04/11/2008 19:27:07

thread:1 rba:(0x1.2.0)

enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000

Hot Backup end marker scn: 0x0000.00000000

aux_file is NOT DEFINED

b.alter tablespace system begin backup以后

我们注意到Checkpoint cnt增加了1,此处触发了一次表空间checkpoint.

***************************************************************************

DATA FILE RECORDS

***************************************************************************

(blkno = 0x6, size = 180, max = 100, in-use = 3, last-recid= 0)

DATA FILE #1:

(name #6) D:\OPT\ORACLE9I\PRODUCT\9.2.0\ORADATA\ORA92US\SYSTEM01.DBF

creation size=0 block size=8192 status=0xe head=6 tail=6 dup=1

tablespace 0, index=1 krfil=1 prev_file=0

unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00

Checkpoint cnt:56 scn: 0x0000.001941a7 04/14/2021 19:39:26

Stop scn: 0xffff.ffffffff 04/13/2008 20:48:26

Creation Checkpointed at scn: 0x0000.00000005 03/17/2008 15:57:33

thread:0 rba:(0x0.0.0)

enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000

Offline scn: 0x0000.00192482 prev_range: 0

Online Checkpointed at scn: 0x0000.00192483 04/11/2008 19:27:07

thread:1 rba:(0x1.2.0)

enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000

Hot Backup end marker scn: 0x0000.00000000

aux_file is NOT DEFINED

c.alter system checkpoint之后

此时Checkpoint cnt增加,但是scn不再改变

***************************************************************************

DATA FILE RECORDS

***************************************************************************

(blkno = 0x6, size = 180, max = 100, in-use = 3, last-recid= 0)

DATA FILE #1:

(name #6) D:\OPT\ORACLE9I\PRODUCT\9.2.0\ORADATA\ORA92US\SYSTEM01.DBF

creation size=0 block size=8192 status=0xe head=6 tail=6 dup=1

tablespace 0, index=1 krfil=1 prev_file=0

unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00

Checkpoint cnt:57 scn: 0x0000.001941a7 04/14/2021 19:39:26

Stop scn: 0xffff.ffffffff 04/13/2008 20:48:26

Creation Checkpointed at scn: 0x0000.00000005 03/17/2008 15:57:33

thread:0 rba:(0x0.0.0)

enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000

Offline scn: 0x0000.00192482 prev_range: 0

Online Checkpointed at scn: 0x0000.00192483 04/11/2008 19:27:07

thread:1 rba:(0x1.2.0)

enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000

Hot Backup end marker scn: 0x0000.00000000

aux_file is NOT DEFINED

d.alter tablespace system end backup之后

此时数据文件头的冻结被取消,scn开始变化

***************************************************************************

DATA FILE RECORDS

***************************************************************************

(blkno = 0x6, size = 180, max = 100, in-use = 3, last-recid= 0)

DATA FILE #1:

(name #6) D:\OPT\ORACLE9I\PRODUCT\9.2.0\ORADATA\ORA92US\SYSTEM01.DBF

creation size=0 block size=8192 status=0xe head=6 tail=6 dup=1

tablespace 0, index=1 krfil=1 prev_file=0

unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00

Checkpoint cnt:58 scn: 0x0000.001941b3 04/14/2021 19:39:54

Stop scn: 0xffff.ffffffff 04/13/2008 20:48:26

Creation Checkpointed at scn: 0x0000.00000005 03/17/2008 15:57:33

thread:0 rba:(0x0.0.0)

enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000

Offline scn: 0x0000.00192482 prev_range: 0

Online Checkpointed at scn: 0x0000.00192483 04/11/2008 19:27:07

thread:1 rba:(0x1.2.0)

enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000

Hot Backup end marker scn: 0x0000.00000000

aux_file is NOT DEFINED

Checkpoint cnt用于保证在正常操作中使用的数据文件是当前版本.在恢复时防止恢复数据文件的错误版本.Checkpoint cnt是一直递增的,即使表空间处于热备份模式.

由于表空间的创建时间不尽相同,所以不同表空间/数据文件的Checkpoint cnt通常是不同的 (编者注:从dump文件中确实可以看到这一点,不同的datafile的checkpoint cnt确实不一样).

我们知道:

在数据库open的过程中,Oracle要进行两次检查 (编者注:按照eygle在其他很多地方自己的说法,实际情况要复杂很多,这里只是简要说明。也许只有Oracle的开发人员才知道到底要做哪些事情~~~).

第一次检查数据文件头中的Checkpoint cnt是否与对应控制文件中的Checkpoint cnt一致.

如果相等 (编者注:其实如果相等,则System Checkpoint SCN = Datafile Checkpoint SCN = Start SCN), 进行第二次检查.

第二次检查数据文件头的开始SCN和对应控制文件中的结束SCN是否一致

如果结束SCN等于开始SCN,则不需要对那个文件进行恢复 (编者注:如果不等,即Stop SCN为无穷大,则需要Istance Recovery).

(编者注:这里的open过程的说法和我前面转载的关于SCN的文章不尽相同,但是我个人理解第一次就是做是否需要Media Recovery的检查;第二次就是做是否需要做Instance Recovery的检查。第一步如果文件版本不一致,就开始做Media Recover,根据相应的SCN确定需要的log;如果不需要Media Recovery,则检查是否需要Instance Recovery,如果Stop SCN的值为无穷大,则需要,而且要提交redo logs直到最新的那一个)

对每个数据文件都完成检查后,打开数据库.同时将每个数据文件的结束SCN设置为无穷大。

关于怎么理解checkpoint cnt和checkpoint scn就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

文件 数据 检查 空间 编者 不同 一致 情况 文章 无穷大 版本 篇文章 控制 相同 信息 内容 只有 就是 数据库 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全工程师技术能力证书 招银软件开发能干几年 浪潮服务器消除面板红灯告警 吉林太阳线软件开发设计 安徽net软件开发收费报价表 我的世界租借服务器管理员权限 评审测试用例属于网络安全工作吗 华映星球互联网科技 微信数据库最新密钥 Steam 游戏服务器帐户管理 全国网络安全的痛处是 渭南软件开发招聘 广州脉推网络技术有限公司 服务器虚拟化规划 软件开发项目的质量控制 开平区专业性软件开发品质保障 抓取数据库数据到excel 关于网络安全方面的招聘企业 视频点播服务器怎么样 河北高性能服务器批发厂家 厦门曼联互联网科技 大学数据库可以干什么 hp服务器产品线 软件开发质量管理总结总结 数据库将查询结果相加 僵尸毁灭工程载入不了服务器 开源数据库etl工具 嘉定区管理软件开发价格表格 张家口互联网科技园 软件开发经验案例模板
0