当前位置:操作系统 > Unix/Linux >>

实例恢复的深入解析

实例恢复的深入解析
 
什么时候会产生实例恢复呢?当你数据库服务器异常断电,重启数据库就会发生实例恢复。实例恢复是由数据库自动完成的,无须DBA的干涉。当然这里有个前提条件:数据文件、在线日志文件、控制文件不得有损坏。
 
     我们用实验来分析一下实例恢复的整个过程吧!
1、在关闭数据库前,我们先看一下几个检查点的SCN
SQL> select checkpoint_change# from v$database;
     CHECKPOINT_CHANGE#
       ------------------
           1455180
--控制文件中保存的数据库检查点SCN号实际上在所有数据文件头部中最小的检查点SCN
SQL> select file#,checkpoint_change# from v$datafile;
        FILE# CHECKPOINT_CHANGE#
        ---------- ------------------
         1            1455180
         2            1455180
         3            1455180
         4            1455180
         5            1455180
         6            1455180
--控制文件中保存的数据文件检查点SCN:当一个检查点动作完成之后,Oracle就把每个数据文件的scn单独存放在控制文件中
SQL> select file#,checkpoint_change# from v$datafile_header;
       FILE# CHECKPOINT_CHANGE#
        ---------- ------------------
         1            1455180
         2            1455180
         3            1455180
         4            1455180
         5            1455180
         6            1455180
--每个数据文件的文件头中的检查点SCN
这三个检查点的SCN一致,接下来模拟异常断电,重启机器
2、此命令可以模拟异常断电
SQL> shutdown abort;
ORACLE instance shut down.
3、监控告警日志
[oracle@guoyj trace]$ tail -f alert_bxocp.log
Starting background process VKRM
Tue Dec 11 22:54:41 2012
VKRM started with pid=24, OS id=12500
Tue Dec 11 22:58:11 2012
Shutting down instance (abort)
License high water mark = 3
USER (ospid: 12479): terminating the instance
Instance terminated by USER, pid = 12479
Tue Dec 11 22:58:12 2012
Instance shutdown complete
4、数据库启动到MOUNT状
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area  839282688 bytes
Fixed Size                  2233000 bytes
Variable Size             524291416 bytes
Database Buffers          310378496 bytes
Redo Buffers                2379776 bytes
Database mounted.
5、再确定一下这个时间的检查点SCN
SQL> select checkpoint_change# from v$database;
    CHECKPOINT_CHANGE#
        ------------------
         1455180
SQL> SQL>  select file#,checkpoint_change# from v$datafile;
     FILE# CHECKPOINT_CHANGE#
       ---------- ------------------
         1            1455180
         2            1455180
         3            1455180
         4            1455180
         5            1455180
         6            1455180
6 rows selected.
SQL> select file#,checkpoint_change# from v$datafile_header;
     FILE# CHECKPOINT_CHANGE#
      ---------- ------------------
         1            1455180
         2            1455180
         3            1455180
         4            1455180
         5            1455180
         6            1455180
发现与异常断电前的检查点的SCN一致,这里一致无须介质恢复。
先不着急open数据库,我们做一些dump
6、dump的控制文件
alter session set events 'immediate trace name CONTROLF level 12';
取部分内容:
***************************************************************************
DATABASE ENTRY
***************************************************************************
(size = 316, compat size = 316, section max = 1, section in-use = 1,
  last-recid= 0, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 1, numrecs = 1)
12/07/2012 10:36:14
DB Name "BXOCP"
Database flags = 0x00404000 0x00001000
Controlfile Creation Timestamp  12/07/2012 10:36:15
Incmplt recovery scn: 0x0000.00000000
Resetlogs scn: 0x0000.000f30dc Resetlogs Timestamp  12/07/2012 10:36:16
Prior resetlogs scn: 0x0000.00000001 Prior resetlogs Timestamp  09/17/2011 09:46:04
Redo Version: compatible=0xb200000
#Data files = 6, #Online files = 6
Database checkpoint: Thread=1 scn: 0x0000.0016344c --数据库检查点SCN=16344c转成10进制为1455180
 
  Threads: #Enabled=1, #Open=1, Head=1, Tail=1
***************************************************************************
CHECKPOINT PROGRESS RECORDS
***************************************************************************
(size = 8180, compat size = 8180, section max = 11, section in-use = 0,
  last-recid= 0, old-recno = 0, last-recno = 0)
(extent = 1, blkno = 2, numrecs = 11)
THREAD #1 - status:0x2 flags:0x0 dirty:55
low cache rba:(0x13.3.0) on disk rba:(0x13.a6.0)
-- low cache rba:(0x13.3.0)实例恢复的起点:19号日志,第3个块,第0个字节
--on disk rba:(0x13.a6.0):实例恢复的终点:19号日志,第166个块,第0个字节
 
on disk scn: 0x0000.0016359c 12/11/2012 22:57:42
resetlogs scn: 0x0000.000f30dc 12/07/2012 10:36:16
heartbeat: 801789080 mount id: 848836772
THREAD #2 - status:0x0 flags:0x0 dirty:0
low cache rba:(0x0.0.0) on disk rba:(0x0.0.0)
on disk scn: 0x0000.00000000 01/01/1988 00:00:00
rese
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,