联系:手机/微信(+86 17813235971) QQ(107644445)
作者:惜分飞©版权所有[未经本人同意,不得以任何形式转载,否则有进一步追究法律责任的权利.]
在数据库恢复中,经常会遇到由于某种原因对数据库执行了begin backup,但是没有执行end backup,然后导致库无法启动的例子,那么怎么判断当前的库是存在这种情况呢?有两种方法可以对其进行判断:
1. 通过查询v$backup表来确认
SQL> select * from v$version; BANNER -------------------------------------------------------------------------------- Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production PL/SQL Release 11.2.0.4.0 - Production CORE 11.2.0.4.0 Production TNS for Linux: Version 11.2.0.4.0 - Production NLSRTL Version 11.2.0.4.0 - Production SQL> select * from v$backup; FILE# STATUS CHANGE# TIME ---------- ------------------ ---------- ------------ 1 NOT ACTIVE 1.1210E+12 09-FEB-25 2 NOT ACTIVE 1.1210E+12 04-JAN-25 3 NOT ACTIVE 1.1210E+12 09-FEB-25 4 NOT ACTIVE 1.1210E+12 09-FEB-25 SQL> alter tablespace users begin backup; Tablespace altered. SQL> select * from v$backup; FILE# STATUS CHANGE# TIME ---------- ------------------ ---------- ------------ 1 NOT ACTIVE 1.1210E+12 09-FEB-25 2 NOT ACTIVE 1.1210E+12 04-JAN-25 3 NOT ACTIVE 1.1210E+12 09-FEB-25 4 ACTIVE 1.1210E+12 09-FEB-25 SQL> alter tablespace users end backup; Tablespace altered. SQL> select * from v$backup; FILE# STATUS CHANGE# TIME ---------- ------------------ ---------- ------------ 1 NOT ACTIVE 1.1210E+12 09-FEB-25 2 NOT ACTIVE 1.1210E+12 04-JAN-25 3 NOT ACTIVE 1.1210E+12 09-FEB-25 4 NOT ACTIVE 1.1210E+12 09-FEB-25
v$backup.status=’ACTIVE’表示该文件处于begin backup状态
2. 通过bbed查看kcvfh.kcvfhsta值
确认所有数据文件都没有处于begin backup状态
SQL> select * from v$backup; FILE# STATUS CHANGE# TIME ---------- ------------------ ---------- ------------ 1 NOT ACTIVE 1.1210E+12 09-FEB-25 2 NOT ACTIVE 1.1210E+12 04-JAN-25 3 NOT ACTIVE 1.1210E+12 09-FEB-25 4 NOT ACTIVE 1.1210E+12 09-FEB-25
list内容列表
[oracle@iZbp11c0qyuuo1gr7j98upZ ~]$ cat /home/oracle/list.txt 1 /u01/app/oracle/oradata/xifenfei/system01.dbf 2 /u01/app/oracle/oradata/xifenfei/sysaux01.dbf 3 /u01/app/oracle/oradata/xifenfei/undotbs01.dbf 4 /u01/app/oracle/oradata/xifenfei/users01.dbf
bbed查看kcvfh.kcvfhsta值
[oracle@iZbp11c0qyuuo1gr7j98upZ ~]$ bbed listfile=/home/oracle/list.txt Password: BBED: Release 2.0.0.0.0 - Limited Production on Sun Feb 9 21:20:15 2025 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> set file 1 FILE# 1 BBED> p kcvfh.kcvfhsta ub2 kcvfhsta @138 0x2004 (KCVFHOFZ) BBED> set file 2 FILE# 2 BBED> p kcvfh.kcvfhsta ub2 kcvfhsta @138 0x0004 (KCVFHOFZ) BBED> set file 3 FILE# 3 BBED> p kcvfh.kcvfhsta ub2 kcvfhsta @138 0x0004 (KCVFHOFZ) BBED> set file 4 FILE# 4 BBED> p kcvfh.kcvfhsta ub2 kcvfhsta @138 0x0004 (KCVFHOFZ)
执行database begin backup
SQL> alter database begin backup; Database altered. SQL> select * from v$backup; FILE# STATUS CHANGE# TIME ---------- ------------------ ---------- ------------ 1 ACTIVE 1.1210E+12 09-FEB-25 2 ACTIVE 1.1210E+12 09-FEB-25 3 ACTIVE 1.1210E+12 09-FEB-25 4 ACTIVE 1.1210E+12 09-FEB-25
再次bbed查看kcvfh.kcvfhsta值
BBED> set file 1 FILE# 1 BBED> p kcvfh.kcvfhsta ub2 kcvfhsta @138 0x2001 (KCVFHHBP) BBED> set file 2 FILE# 2 BBED> p kcvfh.kcvfhsta ub2 kcvfhsta @138 0x0001 (KCVFHHBP) BBED> set file 3 FILE# 3 BBED> p kcvfh.kcvfhsta ub2 kcvfhsta @138 0x0001 (KCVFHHBP) BBED> set file 4 FILE# 4 BBED> p kcvfh.kcvfhsta ub2 kcvfhsta @138 0x0001 (KCVFHHBP)
对于非system文件kcvfh.kcvfhsta=0×0001表示begin backup状态
对于system文件kcvfh.kcvfhsta=0×2001表示begin backup状态