ITPUB??ì3
2010数据库技术大会
ITPUB论坛 » Oracle数据库管理 » 数据库open时检查点执行的过程


您有 1 条公共消息
  • 来自: 公共消息 标题: 3-5月ITPUB数据库 ... 内容: ITPUB与3月和5月分别安排了Oracle 11g DBA和Oracle性能优化培训,以及 ...

    标题: [精华] 数据库open时检查点执行的过程
    离线 cicro
    一般会员


    精华贴数 1
    个人空间 0
    技术积分 245 (9261)
    社区积分 1 (50687)
    注册日期 2006-7-29
    论坛徽章:0
          
          

    发表于 2006-8-9 17:06 
    数据库open时检查点执行的过程

    eygle的文章中说:

    数据库在open阶段,要有两次检查过程:

    1:第一次检查数据文件头中的检查点计数(checkpoint cnt)是否和控制文件中的检查点计数(checkpoint cnt)一致。

    2:第二次检查数据文件头的开始SCN和控制文件中记录的该文件的结束SCN是否一致,如果不一致,则需要对那个文件进行恢复。


    我的理解是数据库在open过程中,数据文件头的检查点计数对应的每个数据文件的checkpoint cnt和控制文件中检查点计数对应的每个每个数据文件的checkpoint cnt比较,如果有那个数据文件不同,就会提示要恢复,相同就可以顺利open。

    同理,第二步的检查过程与上面的相同;
    不知我的理解对否?

    另外还有一个疑问是,这个过程如何通过具体的操作来实现!

    有谁能请教一下,谢谢了!


    __________________
    走自己的路,让别人去说吧!
    只看该作者    顶部
    离线 cicro
    一般会员


    精华贴数 1
    个人空间 0
    技术积分 245 (9261)
    社区积分 1 (50687)
    注册日期 2006-7-29
    论坛徽章:0
          
          

    发表于 2006-8-9 17:16 
    怎么大虾都下深海了吗,

    请教大虾解答一下,十分感谢!


    __________________
    走自己的路,让别人去说吧!
    只看该作者    顶部
    离线 eygle
    天下有雪


    精华贴数 65
    个人空间 0
    技术积分 207954 (1)
    社区积分 6464 (305)
    注册日期 2001-10-8
    论坛徽章:84
    现任管理团队成员2007年度ITPUB杰出贡献年度精华徽章ITPUB元老ITPUB维基人2009架构师大会纪念徽章
    参与2009年中国云计算大会纪念ITPUB北京2009年会纪念徽章八级虎吧徽章2010新春纪念徽章2010年世界杯参赛球队:希腊2010年世界杯参赛球队:加纳

    发表于 2006-8-9 17:23 
    checkpoint cnt 的检查是用来确定文件来自于同一个版本,而不是从备份中恢复出来的。因为checkpoint cnt会一直被更新,即便在热备份模式下。

    checkpint SCN的检查用来数据库是否异常关闭等,如果异常关闭,则SCN不一致,需要进行恢复。


    __________________
    只看该作者    顶部
    离线 cicro
    一般会员


    精华贴数 1
    个人空间 0
    技术积分 245 (9261)
    社区积分 1 (50687)
    注册日期 2006-7-29
    论坛徽章:0
          
          

    发表于 2006-8-9 18:09 
    能得到eygle大师的指点真是幸运!

    谢谢大师!
    checkpoint cnt是检查数据文件是否来自与同一个版本,这个我明白了。

    但是如果某个数据文件需要恢复时,我怎么才能看到他为什么要恢复,也就是要看到要恢复时候的现象,一下是我的测试:


    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> quit
    Disconnected from Oracle9i Release 9.2.0.1.0 - Production
    JServer Release 9.2.0.1.0 - Production
    [oracle@www cicro]$ ls
    cicrodb.dbf      control03.ctl  example01.dbf  redo02.log    test           undotbstemp.dbf
    cicrodb.dbf.old  cwmlite01.dbf  indx01.dbf     redo03.log    tools01.dbf    users01.dbf
    control01.ctl    cws33db.dbf    odm01.dbf      system01.dbf  undotbs01.dbf  xdb01.dbf
    control02.ctl    drsys01.dbf    redo01.log     temp01.dbf    undotbs02.dbf
    [oracle@www cicro]$ cp cicrodb.dbf cicrodb.dbf.gjf
    [oracle@www cicro]$ sqlplus "/as sysdba"
    startup

    SQL*Plus: Release 9.2.0.1.0 - Production on Wed Aug 9 17:38:48 2006

    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

    Connected to an idle instance.

    SQL> ORACLE instance started.

    Total System Global Area  235999352 bytes
    Fixed Size                   450680 bytes
    Variable Size             201326592 bytes
    Database Buffers           33554432 bytes
    Redo Buffers                 667648 bytes
    Database mounted.
    Database opened.
    SQL> alter session set events 'immediate trace name CONTROLF level 10';
    Session altered.
    此时转存控制文件,信息如下:
    (name #15)/opt/oracle/oradata/cicro/cicrodb.dbf
    creation size=1280 block size=8192 status=0xe head=15 tail=15 dup=1
    tablespace 12, index=12 krfil=11 prev_file=0
    unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
    Checkpoint cnt:126 scn: 0x0800.01952813 08/09/2006 17:38:53
    Stop scn: 0xffff.ffffffff 08/09/2006 17:38:07

    SQL>alter session set events 'immediate trace name file_hdrs level 10';
    Session altered.

    转存数据文件头,信息如下:
    (name #15) /opt/oracle/oradata/cicro/cicrodb.dbf
    creation size=1280 block size=8192 status=0xe head=15 tail=15 dup=1
    tablespace 12, index=12 krfil=11 prev_file=0
    unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
    Checkpoint cnt:126 scn: 0x0800.01952813 08/09/2006 17:38:53
    Stop scn: 0xffff.ffffffff 08/09/2006 17:38:07

    此时, /opt/oracle/oradata/cicro/cicrodb.dbf文件的Checkpoint scn在控制文件
    和数据文件头相同。

    [oracle@www cicro]$ sqlplus "/as sysdba"
    SQL*Plus: Release 9.2.0.1.0 - Production on Wed Aug 9 17:39:33 2006
    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
    Connected to:
    Oracle9i Release 9.2.0.1.0 - Production
    JServer Release 9.2.0.1.0 - Production

    SQL> alter system switch logfile;

    System altered.
    SQL> alter session set events 'immediate trace name CONTROLF level 10';
    Session altered.

    dump控制文件,信息如下
    DATA FILE #1:
      (name #15)/opt/oracle/oradata/cicro/cicrodb.dbf
    creation size=0 block size=8192 status=0xe head=8 tail=8 dup=1
    tablespace 0, index=6 krfil=1 prev_file=0
    unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
    Checkpoint cnt:312 scn: 0x0800.019529e4 08/09/2006 17:40:51
    Stop scn: 0xffff.ffffffff 08/09/2006 17:38:07

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

    Session altered.

    转存数据文件头,信息如下:
    DATA FILE #1:
      (name #15) /opt/oracle/oradata/cicro/cicrodb.dbf
    creation size=0 block size=8192 status=0xe head=8 tail=8 dup=1
    tablespace 0, index=6 krfil=1 prev_file=0
    unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
    Checkpoint cnt:312 scn: 0x0800.019529e4 08/09/2006 17:40:51
    Stop scn: 0xffff.ffffffff 08/09/2006 17:38:07


    日志切换完成后, /opt/oracle/oradata/cicro/cicrodb.dbf文件的Checkpoint scn在控制文件和数据文件头相同。

    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> quit
    Disconnected from Oracle9i Release 9.2.0.1.0 - Production
    JServer Release 9.2.0.1.0 - Production
    [oracle@www cicro]$ ls
    cicrodb.dbf      control02.ctl  drsys01.dbf    redo01.log    temp01.dbf     undotbs02.dbf
    cicrodb.dbf.gjf  control03.ctl  example01.dbf  redo02.log    test           undotbstemp.dbf
    cicrodb.dbf.old  cwmlite01.dbf  indx01.dbf     redo03.log    tools01.dbf    users01.dbf
    control01.ctl    cws33db.dbf    odm01.dbf      system01.dbf  undotbs01.dbf  xdb01.dbf
    [oracle@www cicro]$ mv cicrodb.dbf cicrodb.dbf.bak
    [oracle@www cicro]$ mv cicrodb.dbf.gjf  cicrodb.dbf

    更换cicrodb.dbf为原来备份的文件
    [oracle@www cicro]$ sqlplus "/as sysdba"

    SQL*Plus: Release 9.2.0.1.0 - Production on Wed Aug 9 17:56:04 2006

    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

    Connected to an idle instance.

    SQL> startup mount
    ORACLE instance started.

    Total System Global Area  235999352 bytes
    Fixed Size                   450680 bytes
    Variable Size             201326592 bytes
    Database Buffers           33554432 bytes
    Redo Buffers                 667648 bytes
    Database mounted.
    SQL> alter session set events 'immediate trace name file_hdrs level 10';

    Session altered.

    转存数据文件头,信息如下:
      (name #15) /opt/oracle/oradata/cicro/cicrodb.dbf
    creation size=1280 block size=8192 status=0xe head=15 tail=15 dup=1
    tablespace 12, index=12 krfil=11 prev_file=0
    unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
    Checkpoint cnt:128 scn: 0x0800.01953281 08/09/2006 17:55:32
    Stop scn: 0x0800.01953281 08/09/2006 17:55:32

    [oracle@www cicro]$ sqlplus "/as sysdba"

    SQL*Plus: Release 9.2.0.1.0 - Production on Wed Aug 9 17:58:19 2006

    Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
    Connected to:
    Oracle9i Release 9.2.0.1.0 - Production
    JServer Release 9.2.0.1.0 - Production

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

    转存控制文件,信息如下:
    (name #15) /opt/oracle/oradata/cicro/cicrodb.dbf
    creation size=1280 block size=8192 status=0xe head=15 tail=15 dup=1
    tablespace 12, index=12 krfil=11 prev_file=0
    unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
    Checkpoint cnt:128 scn: 0x0800.01953281 08/09/2006 17:55:32
    Stop scn: 0x0800.01953281 08/09/2006 17:55:32
    Creation Checkpointed at scn:  0x0000.01213333 12/28/2005 15:28:58


    可以看到,/opt/oracle/oradata/cicro/cicrodb.dbf的scn在数据文件头和控制文件
    中仍然相同,

    这样的话,应该可以打开数据库。
    SQL> alter database open;
    alter database open
    *
    ERROR at line 1:
    ORA-01113: file 11 needs media recovery
    ORA-01110: data file 11: '/opt/oracle/oradata/cicro/cicrodb.dbf'

    却报/opt/oracle/oradata/cicro/cicrodb.dbf需要恢复,这个是怎么回事,请大师指点!

    谢谢eygle!


    __________________
    走自己的路,让别人去说吧!
    只看该作者    顶部
    离线 cicro
    一般会员


    精华贴数 1
    个人空间 0
    技术积分 245 (9261)
    社区积分 1 (50687)
    注册日期 2006-7-29
    论坛徽章:0
          
          

    发表于 2006-8-9 18:20 
    eygle大师还在吗,可能走了!


    __________________
    走自己的路,让别人去说吧!
    只看该作者    顶部
    离线 cicro
    一般会员


    精华贴数 1
    个人空间 0
    技术积分 245 (9261)
    社区积分 1 (50687)
    注册日期 2006-7-29
    论坛徽章:0
          
          

    发表于 2006-8-9 18:26 
    大师们可能都回去了,临走一顶,明天在战!


    __________________
    走自己的路,让别人去说吧!
    只看该作者    顶部
    离线 cicro
    一般会员


    精华贴数 1
    个人空间 0
    技术积分 245 (9261)
    社区积分 1 (50687)
    注册日期 2006-7-29
    论坛徽章:0
          
          

    发表于 2006-8-10 08:39 
    我知道数据库在mount的时候,是不加载数据文件的,所以上面在数据库mount后,转存出来的数据文件头信息,不是从现有的数据文件中获取的,那么
    [oracle@www cicro]$ sqlplus "/as sysdba"

    SQL*Plus: Release 9.2.0.1.0 - Production on Wed Aug 9 17:56:04 2006

    Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

    Connected to an idle instance.

    SQL> startup mount
    ORACLE instance started.

    Total System Global Area 235999352 bytes
    Fixed Size 450680 bytes
    Variable Size 201326592 bytes
    Database Buffers 33554432 bytes
    Redo Buffers 667648 bytes
    Database mounted.
    SQL> alter session set events 'immediate trace name file_hdrs level 10';

    Session altered.
    alter session set events 'immediate trace name file_hdrs level 10';此条语句获取了数据文件头信息,他是从哪里获取的数据文件信息呀,不明白了,请大师们指点一二!


    __________________
    走自己的路,让别人去说吧!
    只看该作者    顶部
    离线 cicro
    一般会员


    精华贴数 1
    个人空间 0
    技术积分 245 (9261)
    社区积分 1 (50687)
    注册日期 2006-7-29
    论坛徽章:0
          
          

    发表于 2006-8-10 09:28 
    顶起来,大家帮忙看看?


    __________________
    走自己的路,让别人去说吧!
    只看该作者    顶部
    离线 cicro
    一般会员


    精华贴数 1
    个人空间 0
    技术积分 245 (9261)
    社区积分 1 (50687)
    注册日期 2006-7-29
    论坛徽章:0
          
          

    发表于 2006-8-10 09:41 
    在顶!


    __________________
    走自己的路,让别人去说吧!
    只看该作者    顶部
    离线 cicro
    一般会员


    精华贴数 1
    个人空间 0
    技术积分 245 (9261)
    社区积分 1 (50687)
    注册日期 2006-7-29
    论坛徽章:0
          
          

    发表于 2006-8-10 10:06 
    在顶起来!

    一顶要弄明白这个问题!


    __________________
    走自己的路,让别人去说吧!
    只看该作者    顶部
    相关内容


    CopyRight 1999-2006 itpub.net All Right Reserved.
    北京皓辰网域网络信息技术有限公司. 版权所有
    E-mail:Webmaster@itpub.net
    网站律师 隐私政策 知识产权声明
    京ICP证:060528号 联系我们