记一次oracle数据库恢复

简介:

     某客户给sysaux表空间添加了数据文件,但有在操作系统层rm 删除了数据文件,更悲催的的是之前归档所在的磁盘损坏,恢复所需要的归档那是没指望了,也一年多没进行过数据库备份了,
现记录恢复过程如下:(虚拟机上重新模拟该恢复过程)


1 数据文件状态如下
SQL> select file#,name,status from v$datafile;

     FILE# NAME                                     STATUS
---------- ---------------------------------------- -------
         1 /oracle/CRM/ZBCRM/system01.dbf           SYSTEM
         2 /oracle/CRM/ZBCRM/sysaux01.dbf           ONLINE
         3 /oracle/CRM/ZBCRM/undotbs01.dbf          ONLINE
         4 /oracle/CRM/ZBCRM/users01.dbf            ONLINE
         5 /oracle/CRM/ZBCRM/sysaux02.dbf           RECOVER

 

2 重新生成操作系统层删除的数据文件
SQL> alter database create datafile '/oracle/CRM/ZBCRM/sysaux02.dbf';

Database altered.

注意,当我们用 alter database create datafile 创建数据文件时,数据文件头部scn以及rba.seq号均取自于该数据文件创建时控制文件中记录的scn和rba.seq号.

 

3 此刻数据文件头部信息如下:
SQL> select hxfil,fhscn,fhrba_seq from x$kcvfh;

     HXFIL FHSCN             FHRBA_SEQ
---------- ---------------- ----------
         1 1047892                  18
         2 1047892                  18
         3 1047892                  18
         4 1047892                  18
         5 1026926                   1
这里可以明确看出5号数据文件恢复需要从seq号为1的归档开始恢复,但实际上seq#=1及其之后的归档已经不存在了,所以如下恢复失败:   
SQL> recover datafile 5;
ORA-00283: recovery session canceled due to errors
ORA-01110: data file 5: '/oracle/CRM/ZBCRM/sysaux02.dbf'
ORA-01157: cannot identify/lock data file 5 - see DBWR trace file
ORA-01110: data file 5: '/oracle/CRM/ZBCRM/sysaux02.dbf'


4 用bbed调整5号数据文件如下几个偏移量
         ub4 kcvfhcpc                             @140      ------检查点计数
         ub4 kcvfhccc                             @148      ------总是比检查点计数少1
         ub4 kcvcptim                             @492      ------检查点时间
         ub4 kscnbas                              @484      ------scn的低位
         ub2 kscnwrp                              @488      ------scn的高位 
[oracle@oracle ~]$ bbed parfile=bbed.par
Password: 

BBED: Release 2.0.0.0.0 - Limited Production on Thu Jul 25 14:26:45 2013

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED> info
 File#  Name                                                        Size(blks)
 -----  ----                                                        ----------
     1  /oracle/CRM/ZBCRM/system01.dbf                                   89600
     2  /oracle/CRM/ZBCRM/sysaux01.dbf                                   65280
     3  /oracle/CRM/ZBCRM/undotbs01.dbf                                   8960
     4  /oracle/CRM/ZBCRM/users01.dbf                                      640
     5  /oracle/CRM/ZBCRM/sysaux02.dbf                                   12800

  对@140的更改如下:

BBED> dump /v dba 2,1 offset 140 count 20
 File: /oracle/CRM/ZBCRM/sysaux01.dbf (2)
 Block: 1       Offsets:  140 to  159  Dba:0x00800001
-------------------------------------------------------
 6a000000 d562fa30 69000000 00000000 l j...誦?i.......
 00000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 5,1 offset 140 count 20
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1       Offsets:  140 to  159  Dba:0x01400001
-------------------------------------------------------
 01000000 00000000 01000000 00000000 l ................
 00000000                            l ....

 <16 bytes per line>

BBED> modify /x 6a
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1                Offsets:  140 to  159           Dba:0x01400001
------------------------------------------------------------------------
 6a000000 00000000 01000000 00000000 00000000 

 <32 bytes per line>

  对@148的更改如下:

BBED> dump /v dba 2,1 offset 148 count 20
 File: /oracle/CRM/ZBCRM/sysaux01.dbf (2)
 Block: 1       Offsets:  148 to  167  Dba:0x00800001
-------------------------------------------------------
 69000000 00000000 00000000 00000000 l i...............
 00000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 5,1 offset 148 count 20
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1       Offsets:  148 to  167  Dba:0x01400001
-------------------------------------------------------
 01000000 00000000 00000000 00000000 l ................
 00000000                            l ....

 <16 bytes per line>

BBED> modify /x 69
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1                Offsets:  148 to  167           Dba:0x01400001
------------------------------------------------------------------------
 69000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

  对@492的更改如下:

BBED> dump /v dba 2,1 offset 492 count 20
 File: /oracle/CRM/ZBCRM/sysaux01.dbf (2)
 Block: 1       Offsets:  492 to  511  Dba:0x00800001
-------------------------------------------------------
 d762fa30 01000000 12000000 02000000 l 譩?............
 10000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 5,1 offset 492 count 20
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1       Offsets:  492 to  511  Dba:0x01400001
-------------------------------------------------------
 065ffa30 01000000 01000000 c2530500 l ._?........耂..
 10000000                            l ....

 <16 bytes per line>

BBED> modify /x d762fa30
BBED-00209: invalid number (d762fa30)


BBED> modify /x d762
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1                Offsets:  492 to  511           Dba:0x01400001
------------------------------------------------------------------------
 d762fa30 01000000 01000000 c2530500 10000000 

 <32 bytes per line>

   对@484的偏移量更改如下:

BBED> dump /v dba 2,1 offset 484 count 20
 File: /oracle/CRM/ZBCRM/sysaux01.dbf (2)
 Block: 1       Offsets:  484 to  503  Dba:0x00800001
-------------------------------------------------------
 54fd0f00 00000000 d762fa30 01000000 l T?.....譩?....
 12000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 5,1 offset 484 count 20
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1       Offsets:  484 to  503  Dba:0x01400001
-------------------------------------------------------
 6eab0f00 00000000 d762fa30 01000000 l n?.....譩?....
 01000000                            l ....

 <16 bytes per line>

BBED> modify /x 54fd
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1                Offsets:  484 to  503           Dba:0x01400001
------------------------------------------------------------------------
 54fd0f00 00000000 d762fa30 01000000 01000000 

 <32 bytes per line>

 

5 对比2号文件和5号文件的相关偏移量值是否相等如下:

 

BBED> dump /v dba 2,1 offset 140 count 20
 File: /oracle/CRM/ZBCRM/sysaux01.dbf (2)
 Block: 1       Offsets:  140 to  159  Dba:0x00800001
-------------------------------------------------------
 6a000000 d562fa30 69000000 00000000 l j...誦?i.......
 00000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 5,1 offset 140 count 20
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1       Offsets:  140 to  159  Dba:0x01400001
-------------------------------------------------------
 6a000000 00000000 69000000 00000000 l j.......i.......
 00000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 2,1 offset 148 count 20
 File: /oracle/CRM/ZBCRM/sysaux01.dbf (2)
 Block: 1       Offsets:  148 to  167  Dba:0x00800001
-------------------------------------------------------
 69000000 00000000 00000000 00000000 l i...............
 00000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 5,1 offset 148 count 20
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1       Offsets:  148 to  167  Dba:0x01400001
-------------------------------------------------------
 69000000 00000000 00000000 00000000 l i...............
 00000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 2,1 offset 492 count 20
 File: /oracle/CRM/ZBCRM/sysaux01.dbf (2)
 Block: 1       Offsets:  492 to  511  Dba:0x00800001
-------------------------------------------------------
 d762fa30 01000000 12000000 02000000 l 譩?............
 10000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 5,1 offset 492 count 20 
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1       Offsets:  492 to  511  Dba:0x01400001
-------------------------------------------------------
 d762fa30 01000000 01000000 c2530500 l 譩?........耂..
 10000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 2,1 offset 484 count 20
 File: /oracle/CRM/ZBCRM/sysaux01.dbf (2)
 Block: 1       Offsets:  484 to  503  Dba:0x00800001
-------------------------------------------------------
 54fd0f00 00000000 d762fa30 01000000 l T?.....譩?....
 12000000                            l ....

 <16 bytes per line>

BBED> dump /v dba 5,1 offset 484 count 20
 File: /oracle/CRM/ZBCRM/sysaux02.dbf (5)
 Block: 1       Offsets:  484 to  503  Dba:0x01400001
-------------------------------------------------------
 54fd0f00 00000000 d762fa30 01000000 l T?.....譩?....
 01000000                            l ....

 <16 bytes per line>

BBED> sum apply
Check value for File 5, Block 1:
current = 0xc4ad, required = 0xc4ad

BBED> exit

[oracle@oracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Thu Jul 25 14:38:22 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> col name for a40       
SQL> select file#,name,status from v$datafile;

     FILE# NAME                                     STATUS
---------- ---------------------------------------- -------
         1 /oracle/CRM/ZBCRM/system01.dbf           SYSTEM
         2 /oracle/CRM/ZBCRM/sysaux01.dbf           ONLINE
         3 /oracle/CRM/ZBCRM/undotbs01.dbf          ONLINE
         4 /oracle/CRM/ZBCRM/users01.dbf            ONLINE
         5 /oracle/CRM/ZBCRM/sysaux02.dbf           RECOVER

SQL> recover datafile 5;
ORA-00283: recovery session canceled due to errors
ORA-01122: database file 5 failed verification check
ORA-01110: data file 5: '/oracle/CRM/ZBCRM/sysaux02.dbf'
ORA-01207: file is more recent than control file - old control file

关于ora-01207的错误详细处理过程见:http://jiujian.blog.51cto.com/444665/1276674

SQL> alter database backup controlfile to trace;

Database altered.

SQL> oradebug setmypid 
Statement processed.

SQL> oradebug tracefile_name;
/oracle/app/diag/rdbms/zbcrm/ZBCRM/trace/ZBCRM_ora_8828.trc
SQL> exit

[oracle@oracle ~]$ vi /oracle/app/diag/rdbms/zbcrm/ZBCRM/trace/ZBCRM_ora_8828.trc 找到如下创建控制文件语句:

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ZBCRM" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/oracle/CRM/ZBCRM/redo01.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 2 '/oracle/CRM/ZBCRM/redo02.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 3 '/oracle/CRM/ZBCRM/redo03.log'  SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/oracle/CRM/ZBCRM/system01.dbf',
  '/oracle/CRM/ZBCRM/sysaux01.dbf',
  '/oracle/CRM/ZBCRM/undotbs01.dbf',
  '/oracle/CRM/ZBCRM/users01.dbf',
  '/oracle/CRM/ZBCRM/sysaux02.dbf'
CHARACTER SET ZHS16GBK
;

app  archive  archive2  bbed.par  bifile.bbd  control.sql  CRM  data  Desktop  erp.dbf  file  log.bbd  oraInventory  redo01.log  temp01.dbf  test 
[oracle@oracle ~]$ ls -l control.sql
-rw-r--r-- 1 oracle oinstall 623 Jul 25 14:42 control.sql
[oracle@oracle ~]$ 
[oracle@oracle ~]$ 
[oracle@oracle ~]$ 
[oracle@oracle ~]$ cat control.sql
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "ZBCRM" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/oracle/CRM/ZBCRM/redo01.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 2 '/oracle/CRM/ZBCRM/redo02.log'  SIZE 200M BLOCKSIZE 512,
  GROUP 3 '/oracle/CRM/ZBCRM/redo03.log'  SIZE 200M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/oracle/CRM/ZBCRM/system01.dbf',
  '/oracle/CRM/ZBCRM/sysaux01.dbf',
  '/oracle/CRM/ZBCRM/undotbs01.dbf',
  '/oracle/CRM/ZBCRM/users01.dbf',
  '/oracle/CRM/ZBCRM/sysaux02.dbf'
CHARACTER SET ZHS16GBK
;
[oracle@oracle ~]$ sqlplus / as sysdba

SQL*Plus: Release 11.2.0.2.0 Production on Thu Jul 25 14:43:26 2013

Copyright (c) 1982, 2010, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> @/oracle/control.sql
ORACLE instance started.

Total System Global Area 1152450560 bytes
Fixed Size                  2225832 bytes
Variable Size             704645464 bytes
Database Buffers          436207616 bytes
Redo Buffers                9371648 bytes

Control file created.


SQL> col name for a40
SQL> /

     FILE# NAME                                     STATUS
---------- ---------------------------------------- -------
         1 /oracle/CRM/ZBCRM/system01.dbf           SYSTEM
         2 /oracle/CRM/ZBCRM/sysaux01.dbf           ONLINE
         3 /oracle/CRM/ZBCRM/undotbs01.dbf          ONLINE
         4 /oracle/CRM/ZBCRM/users01.dbf            ONLINE
         5 /oracle/CRM/ZBCRM/sysaux02.dbf           RECOVER

SQL> recover datafile 5;
Media recovery complete.
SQL> alter database open;

Database altered.










本文转自 zhangxuwl 51CTO博客,原文链接:http://blog.51cto.com/jiujian/1276871,如需转载请自行联系原作者
目录
相关文章
|
1月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
276 28
|
1月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
|
2月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle数据库的闪回表
本文介绍了Oracle数据库中的闪回表(Flashback Table)功能,它能够将表的数据快速恢复到特定时间点或系统改变号(SCN),无需备份。文章通过实战示例详细演示了如何使用闪回表恢复数据,包括授权、创建测试表、记录时间与SCN号、删除数据、启用行移动功能、执行闪回操作以及验证恢复结果等步骤。同时,还展示了如何通过触发器禁止插入操作,并在闪回过程中处理触发器的启用问题。文末附有视频讲解,帮助读者更好地理解闪回表的使用方法。
97 10
|
2月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle数据库的闪回查询
本文介绍了Oracle数据库的闪回查询(Flashback Query)功能及其实际应用。闪回查询通过`AS OF`子句,结合时间戳或SCN号,可查询历史数据状态,帮助分析数据差异。文中通过具体示例演示了如何使用闪回查询:创建测试表、记录当前SCN号、更新数据并提交事务,最后通过闪回查询获取历史数据。附带的视频和代码块详细展示了操作步骤与结果。
|
2月前
|
Oracle 关系型数据库 网络安全
崖山异构数据库迁移利器YMP初体验-Oracle迁移YashanDB
文章是作者小草对崖山异构数据库迁移利器 YMP 的初体验分享,包括背景、YMP 简介、体验环境说明、YMP 部署(含安装前准备、安装、卸载、启动与停止)、数据迁移及遇到的问题与解决过程。重点介绍了 YMP 功能、部署的诸多细节和数据迁移流程,还提到了安装和迁移中遇到的问题及解决办法。
|
2月前
|
Oracle 关系型数据库 数据管理
【赵渝强老师】Oracle数据库的闪回技术
在Oracle数据库操作中,难免会遇到误删表或提交错误事务等问题,可能导致数据丢失甚至数据库停止运行。传统解决方法依赖备份恢复,但需提前准备正确备份。为此,Oracle提供了闪回技术,无需备份即可快速恢复数据。它支持7种类型的操作,如闪回查询、版本查询、表恢复等,能有效应对逻辑损坏和用户错误。闪回技术基于还原(undo)数据管理,启用自动管理后可实现高效恢复。
|
2月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle数据库的客户端工具
本文介绍了Oracle数据库的三种客户端工具:SQL*Plus、Oracle Enterprise Manager Database Express(EM)和SQL Developer的使用方法。首先通过命令行工具SQL*Plus登录数据库,创建用户并授权,建立部门与员工表,插入数据并查询;接着讲解了如何通过浏览器访问EM界面监控数据库及表空间状态;最后演示了SQL Developer的下载安装、连接配置以及执行查询的过程,帮助用户快速上手Oracle数据库管理与操作。
|
5月前
|
存储 Oracle 关系型数据库
数据库数据恢复—ORACLE常见故障的数据恢复方案
Oracle数据库常见故障表现: 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。
302 11
|
5月前
|
存储 Oracle 关系型数据库
服务器数据恢复—华为S5300存储Oracle数据库恢复案例
服务器存储数据恢复环境: 华为S5300存储中有12块FC硬盘,其中11块硬盘作为数据盘组建了一组RAID5阵列,剩下的1块硬盘作为热备盘使用。基于RAID的LUN分配给linux操作系统使用,存放的数据主要是Oracle数据库。 服务器存储故障: RAID5阵列中1块硬盘出现故障离线,热备盘自动激活开始同步数据,在同步数据的过程中又一块硬盘离线,RAID5阵列瘫痪,上层LUN无法使用。

热门文章

最新文章

推荐镜像

更多