联系:手机/微信(+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状态
