在热备份过程中,如果发生数据库崩溃该如何处理,我们分析一下这个场景,以热备份表空间TS01为例。此时数据文件表头都锁定,备份正在复制文件而系统崩溃,显然表空间的数据文件头的SCN与控制文件中的不一致。此时数据库无法打开,会要求介质恢复,其实此时需要的是结束表空间的备份模式,解锁数据文件头SCN。Oracle会自动使用实例恢复,或者使用recover datafile指令实现数据文件的恢复(recover)。下面模拟这个过程。
启动表空间的备份模式,如下例所示:
SQL> alter tablespace ts01 begin backup;
Tablespace altered.
查看表空间对应的数据文件的备份模式:
SQL> select * from v$backup;
FILE# STATUS CHANGE# TIME CON_ID
---------- ------------------ ---------- --------- ----------
1 NOT ACTIVE 2442507 14-OCT-22 0
3 NOT ACTIVE 0 0
4 NOT ACTIVE 0 0
5 ACTIVE 2773998 18-NOV-22 0
7 NOT ACTIVE 0 0
对应数据文件的STATUS值为ACTIVE,说明数据文件正处于备份模式,此时的数据文件文件头SCN为2773998
查看数据文件的起始检验点
SQL> select file#,checkpoint_change# from v$datafile;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 2773090
3 2773090
4 2773090
5 2773998
7 2773090
数据文件1、3、4、7的检验点为2773090,而数据文件5也就是我们设置备份模式的表空间TS01对应的数据文件的检验点SCN为2773998,比其他4个文件大,也就是比其他4个文件的文件头SCN新,原因是一旦使用alter tablespace ts01 begin backup就会触发检验点事件,刷新数据文件头的SCN,并冻结该SCN。
接下来模拟一个实例失败的故障,然后重启数据库:
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup
ORACLE instance started.
Total System Global Area 2147483648 bytes
Fixed Size 8622776 bytes
Variable Size 1325403464 bytes
Database Buffers 805306368 bytes
Redo Buffers 8151040 bytes
Database mounted.
ORA-10873: file 5 needs to be either taken out of backup mode or media
recovered
ORA-01110: data file 5: '/u01/app/oracle/oradata/orcl/ts01.dbf'
此时报错了,首先发现数据文件5需要介质恢复,由于在表空间热备过程中实例故障,数据文件头依然锁定,数据文件头的SCN与控制文件中的SCN不同,此时数据库处于MOUNT状态,我们查询数据字典试图v$backup查看哪些数据文件处于备份状态。
SQL> select * from v$backup;
FILE# STATUS CHANGE# TIME CON_ID
---------- ------------------ ---------- --------- ----------
1 NOT ACTIVE 2442507 14-OCT-22 0
3 NOT ACTIVE 0 0
4 NOT ACTIVE 0 0
5 ACTIVE 2773998 18-NOV-22 0
7 NOT ACTIVE 0 0
显然,数据文件5处于备份模式,这个文件需要介质恢复。下面使用recover指令恢复该文件。
SQL> recover datafile 5;
Media recovery complete.
注意:上面数据文件的恢复也可以使用alter tablespace ts01 end backup来实现
数据文件5恢复之后,打开数据库,此时的数据文件已经是非备份模式。
SQL> alter database open;
Database altered.
SQL> select * from v$backup;
FILE# STATUS CHANGE# TIME CON_ID
---------- ------------------ ---------- --------- ----------
1 NOT ACTIVE 2442507 14-OCT-22 0
3 NOT ACTIVE 0 0
4 NOT ACTIVE 0 0
5 NOT ACTIVE 2773998 18-NOV-22 0
7 NOT ACTIVE 0 0
今天的分享就到这里啦~
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有