记一次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,如需转载请自行联系原作者
目录
相关文章
|
2天前
|
SQL 存储 Oracle
Oracle数据库SQL语句详解与应用指南
在数字化时代,数据库已成为各类企业和组织不可或缺的核心组件。Oracle数据库作为业界领先的数据库管理系统之一,广泛应用于各种业务场景。掌握Oracle数据库的SQL语句是数据库管理员、开发人员及运维人员的基本技能。本文将详细介绍Oracle数据库SQL语句的基本概念、语法、应用及最佳实践。一、Or
17 3
|
27天前
|
Oracle 关系型数据库 数据库
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
打开oracle数据库报错“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。 数据库没有备份,无法通过备份去恢复数据库。用户方联系北亚企安数据恢复中心并提供Oracle_Home目录中的所有文件,急需恢复zxfg用户下的数据。 出现“system01.dbf需要更多的恢复来保持一致性”这个报错的原因可能是控制文件损坏、数据文件损坏,数据文件与控制文件的SCN不一致等。数据库恢复工程师对数据库文件进一步检测、分析后,发现sysaux01.dbf文件损坏,有坏块。 修复并启动数据库后仍然有许多查询报错,export和data pump工具使用报错。从数据库层面无法修复数据库。
数据库数据恢复—Oracle数据库文件出现坏块的数据恢复案例
|
16天前
|
Oracle 关系型数据库 数据库
Oracle数据恢复—异常断电导致Oracle数据库数据丢失的数据恢复案例
Oracle数据库故障: 机房异常断电后,Oracle数据库启库报错:“system01.dbf需要更多的恢复来保持一致性,数据库无法打开”。数据库没有备份,归档日志不连续。用户方提供了Oracle数据库的在线文件,需要恢复zxfg用户的数据。 Oracle数据库恢复方案: 检测数据库故障;尝试挂起并修复数据库;解析数据文件。
|
15天前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
48 2
|
1月前
|
Oracle 安全 关系型数据库
Oracle数据恢复—Oracle数据库误删除的数据恢复方法探讨
删除Oracle数据库数据一般有以下2种方式:delete、drop或truncate。下面针对这2种删除oracle数据库数据的方式探讨一下oracle数据库数据恢复方法(不考虑全库备份和利用归档日志)。
|
1月前
|
存储 Oracle 关系型数据库
Oracle同一台服务器创建多个数据库
【8月更文挑战第30天】在 Oracle 中,可在同一服务器上创建多个数据库。首先确保已安装 Oracle 软件并具有足够资源,然后使用 DBCA 工具按步骤创建,包括选择模板、配置存储及字符集等。重复此过程可创建多个数据库,需确保名称、SID 和存储位置唯一。创建后,可通过 Oracle Enterprise Manager 进行管理,注意服务器资源分配与规划。
49 10
|
19天前
|
SQL Oracle 关系型数据库
Oracle数据库管理:从入门到精通
表(Table):表是Oracle数据库中存储数据的基本结构单元,由行(Row)和列(Column)组成。每行代表一个记录,每列代表一个字段。 SQL(Structured Query Language):SQL是Oracle数据库的核心语言,用于与数据库交互,执行查询、插入、更新和删除等操作。 数据库实例与数据库:在Oracle中,数据库实例是一组后台进程和内存结构,用于管理数据库并提供服务。而数据库则是数据的物理存储,包括数据文件、控制文件、联机日志和参数文件等。
46 0
|
2月前
|
存储 Oracle 关系型数据库
分享几个Oracle数据库日常维护中常见的问题
分享几个Oracle数据库日常维护中常见的问题
100 1
|
2月前
|
SQL Oracle 关系型数据库
实时计算 Flink版产品使用问题之Oracle数据库是集群部署的,怎么进行数据同步
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
2月前
|
Oracle 关系型数据库 数据库
Oracle数据库备份脚本分享-Python
Oracle数据库备份脚本分享-Python
31 0