客户的sql server数据库在未知情况下,突然不可用,然后查看发现数据库处于“正在恢复”状态,无法使用
查看日志发现“错误:10982,严重性:16,状态:1”

,
查看数据库文件情况

通过分析确认mdf文件本身完整,没有异常,强制挂载mdf文件如下错误

通过一些技巧进行规避,数据库挂载成功,并且checkdb检查正常,没有任何错误,至此完成该故障恢复

客户的sql server数据库在未知情况下,突然不可用,然后查看发现数据库处于“正在恢复”状态,无法使用
在数据库恢复中,经常会遇到由于某种原因对数据库执行了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状态
有客户联系我们,说一个19c的库,由于产生归档较多在备份过程中把部分归档删除而导致没有备份成功,从而使得他们那边一个误操作需要恢复使用备份做不完全恢复,备份厂商进行恢复并尝试强制打开库报ORA-600 kcbzib_kcrsds_1错误
SQL> alter database open resetlogs ; alter database open resetlogs * ERROR at line 1: ORA-00603: ORACLE server session terminated by fatal error ORA-01092: ORACLE instance terminated. Disconnection forced ORA-00600: internal error code, arguments: [kcbzib_kcrsds_1], [], [], [], [], [], [], [], [], [], [], [] Process ID: 3949615 Session ID: 5111 Serial number: 30040 --重启到mount状态 SQL> set numw 16 col CHECKPOINT_TIME for a40 set lines 150 set pages 1000 SELECT status, to_char(checkpoint_time,'yyyy-mm-dd hh24:mi:ss') checkpoint_time,FUZZY,checkpoint_change#, count(*) ROW_NUM FROM v$datafile_header GROUP BY status, checkpoint_change#, to_char(checkpoint_time,'yyyy-mm-dd hh24:mi:ss'),fuzzy ORDER BY status, checkpoint_change#, checkpoint_time;SQL> SQL> SQL> SQL> 2 3 4 5 6 STATUS CHECKPOINT_TIME FUZ CHECKPOINT_CHANGE# ROW_NUM ------- ---------------------------------------- --- ------------------ ---------------- ONLINE 2025-02-08 22:43:01 YES 15626238353558 56
打开库失败,只能找出来数据库最大的block中最大scn,然后调整文件头scn的值,实现数据库open
SQL> oradebug setmypid Statement processed. SQL> oradebug DUMPvar SGA kcsgscn_ SQL> kscn8 kcsgscn_ [060017E98, 060017EA0) = 00000000 00000000 SQL> oradebug DUMPvar SGA kcsgscn_ kscn8 kcsgscn_ [060017E98, 060017EA0) = 8CD9C896 00000E4D SQL> SQL> SQL> SQL> alter database open ; alter database open * ERROR at line 1: ORA-01113: file 1 needs media recovery ORA-01110: data file 1: '/cdmbak/db/xifenfei/ob_data_D-XIFENFEI-SYSTEM_FNO-1_t13930nd' SQL> recover database; Media recovery complete. SQL> alter database open; Database altered. SQL>
使用exp导出客户需要的表,完成本次恢复任务
对于ORA-600 kcbzib_kcrsds_1恢复的情况,以前有过大量恢复案例,修改数据库scn即可
kcbzib_kcrsds_1报错汇总
12C数据库报ORA-600 kcbzib_kcrsds_1故障处理
存储故障,强制拉库报ORA-600 kcbzib_kcrsds_1处理
Patch SCN工具一键恢复ORA-600 kcbzib_kcrsds_1
此类故障处理太多,不一一列举,解决这个错误之后,数据库open成功,然后安排逻辑迁移即可
17813235971 |
QQ 咨询 |