eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« 关于控制文件与数据文件头信息的说明 | Blog首页 | Google的Web Clips终于支持自添加RSS »

备份的控制文件和新的数据文件

继续上一节的介绍:

我们可以想象,如果控制文件是从备份中恢复的,那么数据库在open过程中又将如何呢?

首先备份控制文件,打开数据库,增进检查点: 

[oracle@jumper eygle]$ cp control01.ctl control01.ctl.bak
[oracle@jumper eygle]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on Fri Aug 11 10:46:05 2006

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

Connected to an idle instance.

SQL> startup
ORACLE instance started.

Total System Global Area  139531744 bytes
Fixed Size                   452064 bytes
Variable Size             121634816 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
Database mounted.
Database opened.
SQL> alter system checkpoint;

System altered.

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production

然后恢复旧的控制文件,mount数据库,转储数据文件头:

[oracle@jumper eygle]$ mv control01.ctl control01.ctl.n
[oracle@jumper eygle]$ mv control01.ctl.bak control01.ctl
[oracle@jumper eygle]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on Fri Aug 11 10:46:50 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  139531744 bytes
Fixed Size                   452064 bytes
Variable Size             121634816 bytes
Database Buffers           16777216 bytes
Redo Buffers                 667648 bytes
Database mounted.
SQL> alter session set events 'immediate trace name file_hdrs level 10';

Session altered.

SQL> !

我们看控制文件的信息(选择一个文件):

DATA FILE #4:
  (name #4) /opt/oracle/oradata/eygle/eygle01.dbf
creation size=0 block size=8192 status=0xe head=4 tail=4 dup=1
 tablespace 4, index=4 krfil=4 prev_file=0
 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
 Checkpoint cnt:61 scn: 0x0000.002acb1e 08/11/2006 10:44:38
 Stop scn: 0x0000.002acb1e 08/11/2006 10:44:38
 Creation Checkpointed at scn:  0x0000.0015078d 06/06/2006 09:41:54

再看数据文件头信息:

 FILE HEADER:
        Software vsn=153092096=0x9200000, Compatibility Vsn=134217728=0x8000000
        Db ID=1407686520=0x53e79778, Db Name='EYGLE'
        Activation ID=0=0x0
        Control Seq=989=0x3dd, File size=1280=0x500
        File Number=4, Blksiz=8192, File Type=3 DATA
Tablespace #4 - EYGLE  rel_fn:4
Creation   at   scn: 0x0000.0015078d 06/06/2006 09:41:54
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
 reset logs count:0x232bee1f scn: 0x0000.0007c781 recovered at 08/11/2006 10:11:26
 status:0x0 root dba:0x00000000 chkpt cnt: 64 ctl cnt:63
begin-hot-backup file size: 0
Checkpointed at scn:  0x0000.002acb98 08/11/2006 10:46:24

我们注意到数据文件的chkpt cnt: 64 要大约控制文件的Checkpoint cnt:61,也就是说控制文件是旧的。

此时尝试打开数据库就会出现如下错误:

[oracle@jumper udump]$ sqlplus "/ as sysdba"

SQL*Plus: Release 9.2.0.4.0 - Production on Fri Aug 11 10:51:20 2006

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


Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production

SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01122: database file 1 failed verification check
ORA-01110: data file 1: '/opt/oracle/oradata/eygle/system01.dbf'
ORA-01207: file is more recent than controlfile - old controlfile

Oracle告诉我们,控制文件是旧的。此时我们可以通过重建控制文件或者从旧的数据备份开始恢复。

未完待续...

 


历史上的今天...
    >> 2009-08-11文章:
           20090811-墨墨、书书、Oracle

无觅

By eygle on 2006-08-11 11:05 | Comments (15) | Internal | 862 |

15 Comments

同样的问题,大师阐述的就是明白,有条理,佩服呀?

ORA-00704: bootstrap process failure
ORA-00600: internal error code, arguments: [4000], [27], [], [], [], [], [], []

恢复时产生的错误, 老大是啥错误呀?

怎么恢复产生的这个错误啊?

以上测试是不会出这个错误的。

1) create control file
2) recover database using backup controlfile;
3) media recover ok
4) alter database open resetlogs;

就产生了以上错误

这种情况,重建控制文件,recover就行了,不要用using选项,也不用resetlog

to 南非蚂蚁;
我就是把一个问题拆成了原子单位,这样方便大家理解。

自己读书的时候,也懒得一次看大堆东西。

请教一个问题:

采用backup controlfile恢复

执行alter database open resetlog, 但是不成功,

这种情况对于数据库有影响吗? thx

替换用旧的control替换新的后mount出错

idle> startup mount
ORACLE 例程已经启动。

Total System Global Area 135338868 bytes
Fixed Size 453492 bytes
Variable Size 109051904 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
ORA-00214: ???? 'E:\ORACLE\ORADATA\MIS\CONTROL02.CTL' ?? 2835 ??? 'E:\ORACLE\ORA
DATA\MIS\CONTROL01.CTL' ?? 2831 ???

现在在看这本书

那这里的checkpoint scn和其它的scn是什么区别呢?
感觉没起什么作用啊?

希望能得到您的指点

checkpoint scn也是scn,就是检查点发生时的SCN。
用来标示检查点位置的。

是不是使用备份的控制文件就只能恢复到控制文件表示的scn呢

有这样的问题,
9:00 冷备份数据库(数据文件和控制文件)

9:30 插入一个数据(并归档)

10:00 正常关闭数据库,
10:02 将9:00中冷备份的数据文件和控制文件都拷贝回来(取代原来的数据文件)

那么现在能根据控制文件恢复到9:30时的数据吗,还是要重建controlfile;

"未完待续..."

老大,能不给个链接!每次看完一篇文章后,下一篇文章要找半天!

如果是这样,那用alter database backup controlfile to ''命令备份了控制文件,如果一旦控制文件丢失,是否这个备份还是没用呢

请问一个问题,为什么利用旧的控制文件(控制文件早于数据文件)恢复后,打开数据库需要resetlogs;而用新的控制文件(数据文件早于控制文件)恢复后,打开数据库不需要resetologs;即数据库是如果确定何时需要resetlogs和不需要的?

注:两个操作都全部应用了在线联机日志文件


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com