oracle数据库报错ORA-01122 ORA-01210 故障恢复

有朋友数据文件头出现错误ORA-01122和ORA-01210等错误,数据库无法正常open。

 

因为平台是win,他们找我咨询win bbed,因为回老家电脑没有带,无法提供win的bbed.我通过dd部分文件头,然后在linux平台分析发现是该文件的文件头block大量坏块

bbed分析坏块情况

BBED> show all

        FILE#           0

        BLOCK#          1

        OFFSET          0

        DBA             0x00000000 (0 0,1)

        FILENAME        /tmp/30.dbf

        BIFILE          bifile.bbd

        LISTFILE       

        BLOCKSIZE       8192

        MODE            Browse

        EDIT            Unrecoverable

        IBASE           Dec

        OBASE           Dec

        WIDTH           80

        COUNT           512

        LOGFILE         log.bbd

        SPOOL           No

 

BBED> set count 64

        COUNT           64

 

BBED> map

 File: /tmp/30.dbf (0)

 Block: 1                                     Dba:0x00000000

------------------------------------------------------------

BBED-00400: invalid blocktype (27)

 

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 1                Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 03004400 bffd8a1d 0000000c acba0000 008f4500 00003455 fc020000 

 02040000 00000000 00008001 04000000 00000000 00000000 949400b4 94514005 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          2

 

BBED> map

 File: /tmp/30.dbf (0)

 Block: 2                                     Dba:0x00000000

------------------------------------------------------------

BBED-00400: invalid blocktype (27)

 

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 2                Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 04004400 bffd8a1d 0000000c a6e00000 008f4500 00003455 fc020000 

 0204e81f 00000000 0000241e 05000000 00000000 00000000 11fc297f b426fe2b 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          3

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 3                Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 05004400 bffd8a1d 0000000c 780a0000 008f4500 00003455 fc020000 

 0204e81f 00000000 0000c001 06000000 00000000 00000000 2969a0d2 d30168a2 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          4

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 4                Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 06004400 bffd8a1d 0000000c 6c5a0000 008f4500 00003455 fc020000 

 0204e81f 00000000 0000f81d 07000000 00000000 00000000 7b51d409 6dc7ca4d 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          5

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 5                Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 07004400 bffd8a1d 0000000c c5600000 008f4500 00003455 fc020000 

 02040000 00000000 0000c001 08000000 00000000 00000000 14514005 25145200 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          6

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 6                Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 08004400 bffd8a1d 0000000c 60480000 008f4500 00003455 fc020000 

 0204e81f 00000000 0000c301 09000000 00000000 00000000 c2a1606a 7615130a 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          7

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 7                Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 09004400 bffd8a1d 0000000c e3430000 008f4500 00003455 fc020000 

 0204e81f 00000000 00000002 0a000000 00000000 00000000 00a28a28 00a28a28 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          8

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 8                Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 0a004400 07fe8a1d 0000000c fc000000 008f4500 00003455 fc020000 

 0205e81f 00000000 0000f41d 00000000 00000000 00000000 ffd8ffe0 00104a46 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          9

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 9                Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 0b004400 07fe8a1d 0000000c 48da0000 008f4500 00003455 fc020000 

 0205e81f 00000000 0000c601 01000000 00000000 00000000 b47d69d3 7fa96a6f 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          10

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 10               Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 0c004400 07fe8a1d 0000000c be0f0000 008f4500 00003455 fc020000 

 0205e81f 00000000 0000181d 02000000 00000000 00000000 9de3e868 4782d83a 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          11

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 11               Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 0d004400 07fe8a1d 0000000c 9cd00000 008f4500 00003455 fc020000 

 0205e81f 00000000 0000241e 03000000 00000000 00000000 dead1259 5919e385 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          12

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 12               Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 0e004400 07fe8a1d 0000000c df450000 008f4500 00003455 fc020000 

 0205e81f 00000000 00004001 04000000 00000000 00000000 31d9a292 9698828a 

 

 <32 bytes per line>

 

BBED> set block +1

        BLOCK#          13

 

BBED> d

 File: /tmp/30.dbf (0)

 Block: 13               Offsets:    0 to   63           Dba:0x00000000

------------------------------------------------------------------------

 1ba20000 0f004400 07fe8a1d 0000000c 18790000 008f4500 00003455 fc020000 

 02050000 00000000 00000002 05000000 00000000 00000000 b93f8235 5ea063b7 

 

 <32 bytes per line>

拿block 1的rdba(04004400?倒序存储)分析[win文件拷贝到linux后使用bbed查看相差1 block]可以的出来block信息为file=1, block=262148,明显错误.

通过dul分析文件头损坏情况

Data UnLoader: 10.2.0.6.9 - Internal Only - on Tue Sep 29 22:15:22 2015

with 64-bit io functions

 

Copyright (c) 1994 2015 Bernard van Duijnen All rights reserved.

 

 Strictly Oracle Internal Use Only

 

 

DUL: Warning: Recreating file "dul.log"

Reading SCANNEDLOBPAGE.dat 1204 entries loaded and sorted 1204 entries

Reading SEG.dat 0 entries loaded

Reading EXT.dat 44 entries loaded and sorted 44 entries

Reading COMPATSEG.dat 0 entries loaded

 

DUL: Warning: Wrong DBA  0X00440004 (file=1, block=262148) (Ignored)

DUL: Error: While processing file# 30 block# 1

DUL: Warning: Found mismatch while checking file E:\TEMP\shebao\30.dbf

DUL: Warning: DUL osd_parameter or control.dul configuration error

DUL: Warning: Given file number(30) in control file does not match file# in dba(1)

DUL: Warning: Wrong DBA  0X00440004 (file=1, block=262148) (Ignored)

DUL: Error: While processing file# 30 block# 1

DUL>

通过bbed和dul证明文件头大量损坏,而且尚未有任何该文件的物理备份,因此恢复起来难道较大。

 

分析Oracle Database Recovery Check Result

通过对Oracle数据库异常恢复检查脚本(Oracle Database Recovery Check)的分析结果,我们意外的发现,人品不错,发现异常的文件创建时间为2015-09-26 19:39:33,进一步和客户沟通,这个文件存储为图片,少量丢失可以允许,优先恢复业务

 

 

有了这个结论,那处理起来就easy了,直接offline异常文件,然后分析丢失的表
从而确定时lob字典的少量extent数据分配到了file 30上
=>

为了避免查询对应lob之时出现错误,通过update 对应lob为空规避该问题

create table corrupt_lobs (corrupt_rowid rowid,table_name varchar2(100)); 

declare

  n number; 

begin

  for cursor_lob in (select rowid r, xff_lob from xff.t_xifenfei) loop 

  begin

    n:=dbms_lob.instr(cursor_lob.xff_lob,hextoraw('889911')); 

  exception 

    when others then

      insert into corrupt_lobs values (cursor_lob.r,'xff.t_xifenfei');

      commit; 

    end; 

  end loop; 

end; 

/ 

 

update xff.t_xifenfei 

     set xff_lob = empty_blob() 

     where rowid in (select corrupted_rowid from corrupt_lobs);

本次恢复是由于运气好,遇到异常文件刚好是最近加入,而且都是图片,客户允许少量丢失,如果是不允许丢失的数据文件,可能需要通过找历史的该文件的备份(Oracle 12C的第一次异常恢复—文件头坏块),在某些情况下,如果也没有此类备份,只能通过bbed重构block 1(如果有其他异常块一次处理,如果太多无法处理,最少也需要重构block 1),然后尝试open数据库或者使用dul之类工具处理(因为文件头损坏,工具可能不能识别文件无法恢复)

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索数据库
, 异常
, 文件
, block
错误
oracle12c ora 01122、ora 01210、ora 01122、oracle 01122、连接数据库ora 03113,以便于您获取更多的相关知识。

时间: 2024-10-28 13:25:13

oracle数据库报错ORA-01122 ORA-01210 故障恢复的相关文章

oracle-使用sql server数据库导出至Oracle数据库报错 !

问题描述 使用sql server数据库导出至Oracle数据库报错 ! 求助大神 解决方案 安装64为的oracle试试 解决方案二: 根据提示,你是不是用32bit的客户端用64bit运行了呢. 另外,system.data.oracleclient安装正确么?和你的服务器的版本匹配么?是不是版本过低. 解决方案三: SqlServer2012是64位的,Oracle数据库也是64位的 Oracle客户端是使用的PL/SQL 可能是32位的吧,有没有办法可以使他们版本或系统位数相互兼容的办法

javaweb-java工程连接oracle数据库报错,急用,新人,谢谢了

问题描述 java工程连接oracle数据库报错,急用,新人,谢谢了 ORA-01017: invalid username/password; logon denied 用户名密码都对,有时候能登陆上去,有时候连接不上,这是怎么回事 解决方案 错误信息是:无效的用户名或密码,拒绝登陆. 可能你的normal用户的密码已经过期,或者用户权限没有开通,可重新设置一下 用sysdba用户登陆,会获得最高权限,然后便可进行一切操作(添加用户等) 如果还是不会,就百度: 如果回答对您有帮助,请采纳

使用hibernate连接Oracle数据库报错

问题描述 使用hibernate连接Oracle数据库报错 Exception in thread ""main"" org.hibernate.exception.GenericJDBCException: Cannot open connection at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) at org

asp.net访问oracle数据库报错

问题描述 每隔一段时间访问oracle都会报错,除非重启iis就好了-哪位大神知道原因啊--报错如下:System.Data.OleDb.OleDbException(0x80004005):ORA-12154:TNS:couldnotresolveservicenameatSystem.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionStringconstr,OleDbConnectionconnection)atSystem.D

oracle数据库报错ORA-00600[kjhn_post_ha_alert0-862]原因分析

数据库版本和平台信息 数据库版本为10.2.0.1版本,而且是32位的win 2003 sp2之上 ORACLE V10.2.0.1.0 - Production vsnsta=0 vsnsql=14 vsnxtr=3 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production With the Partitioning, OLAP and Data Mining options Windows Server 20

oracle数据库报错Instance immediate crash after open解决办法

一个朋友公司的数据库出现异常,没有备份. 数据库open之后很快就crash掉,如下的alert log的信息: Tue Jul 08 22:53:03 2014 SMON: enabling cache recovery [13803] Successfully onlined Undo Tablespace 2. Undo initialization finished serial:0 start:7751194 end:7751284 diff:90 (0 seconds) Verify

plsql连接oracle数据库报ora 12154错误解决方法_oracle

plsql连接oracle数据库报ora 12154错误 今天遇到一个问题,使用sqlplus能够连接到远程的数据库,但是使用plsql却连接不上,报错"ORA-12154: TNS: 无法解析指定的连接标识符" 解决方法如下: 1.先检查服务器端的监听服务是否打开,如果没有打开请启动其监听 客户端:tnsping <tns_name> 服务器Linux下: #>lsnrctl status 查看监听状态 #>lsnrctl start 启动监听 2.通过Sql

rehl 5.10安装oracle 11g R1数据库报错

问题描述 rehl 5.10安装oracle 11g R1数据库报错 解决方案 你需要手工创建一个数据库 解决方案二: 手工创建一下数据库试试 http://wenku.baidu.com/view/a43a532f915f804d2b16c1fa.html

Oracle启动报错 ORA-01078: failure in processing system parameters

报错: 在启动Oracle数据库时报错,如下: [oracle@localhost ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.1.0 Production on Sat Feb 16 19:43:43 2013 Copyright (c) 1982, 2009, Oracle. All rights reserved. Connected to an idle instance. SQL> startup ORA-01078: failur