数据库作为企业的核心,如果数据库因损坏无法正常运行,导致数据丢失,将给企业带来无法挽回的经济损坏。当您的数据库出现故障,又没有有效的备份之时,我们就是您的最后一道防线,尽最大可能帮您挽救数据库,减少损失。我们有几百套Oracle数据库恢复经历;版本从ORACLE 7.3、ORACLE 8/8I,ORACLE 9I、ORACLE 10G,ORACLE 11G和ORACLE 12C;平台有Linux、Windows、AIX、HP-UNIX、SOLARIS等;客户从西藏到海南,从黑龙江到贵州遍布中国所有省份;客户有医疗、军队、政府、制造、超市、社保、医保、物流、互联网、金融、医院、政务、公安等各个行业。不管你是什么样的数据库故障,不管你找过多少个人和公司恢复没成功,我们都是你的一个值得考虑选择。我们不能承诺全国技术第一,但我们可以保证如果我们不能恢复的Oracle数据库,你的数据库几乎无人可以恢复成功。我们承诺:所有数据库恢复不成功,未达到实现承诺不收取任何费用
如果需要专业ORACLE数据库恢复技术支持,请联系我们
Phone:17813235971 Q Q:107644445 E-Mail:dba@xifenfei.com
主要支持数据库恢复内容但不仅限如此
drop user 恢复
drop table 恢复
误删除表空间恢复
truncate table 恢复
误delete/update 恢复
丢失system文件数据库恢复
asm 磁盘被意外格式化恢复
bootstarp$中对象验证损坏
asm磁盘组损坏,无法正常mount
操作系统层面误删除数据文件恢复
数据库因为undo损坏/丢失无法正常启动
数据库因为某些数据块损坏不能正常工作
数据库因为ORA-600错误而不能正常启动
exp dmp文件损坏,无法正常导入数据库恢复
数据库因为控制文件损坏/丢失无法正常启动
数据库因为redo损坏/丢失导致无法正常启动
数据库因为数据文件损坏/丢失无法正常启动
数据库因为操作系统损坏,只有数据文件恢复
数据库因存储异常,导致数据库无法正常启动
数据库因为丢失归档导致数据文件无法online
数据库错误offline system文件导致无法启动
expdp dmp文件损坏,无法正常导入数据库恢复
部分asm磁盘丢失导致asm 磁盘组无法正常使用
数据库因为错误的resetlogs操作导致恢复无法继续
数据库因为断电、异常关机等原因导致不能正常启动
以下是比较典型的ORACLE故障恢复
system rollback异常恢复
ORA-00604 ORA-00607 ORA-00600[4194]
Thu Jul 26 13:21:11 2012 Recovery of Online Redo Log: Thread 1 Group 1 Seq 3994 Reading mem 0 Mem# 0: /orasvr/mispdata/redo01.log Block recovery completed at rba 3994.5.16, scn 0.89979533 Thu Jul 26 13:21:11 2012 Errors in file /orasvr/admin/mispdata/udump/mispdata_ora_2865.trc: ORA-00604: error occurred at recursive SQL level 1 ORA-00607: Internal error occurred while making a change to a data block ORA-00600: internal error code, arguments: [4194], [31], [2], [], [], [], [], [] Error 604 happened during db open, shutting down database USER: terminating instance due to error 604 Instance terminated by USER, pid = 2865 ORA-1092 signalled during: ALTER DATABASE OPEN...
undo segment异常恢复
ORA-00704 ORA-00604 ORA-01555
Fri May 4 21:04:21 2012 select ctime, mtime, stime from obj$ where obj# = :1 Fri May 4 21:04:21 2012 Errors in file /oracle/admin/standdb/udump/perfdb_ora_1286288.trc: ORA-00704: bootstrap process failure ORA-00704: bootstrap process failure ORA-00604: error occurred at recursive SQL level 1 ORA-01555: snapshot too old: rollback segment number 40 with name "_SYSSMU40$" too small Error 704 happened during db open, shutting down database USER: terminating instance due to error 704 Instance terminated by USER, pid = 1286288 ORA-1092 signalled during: alter database open resetlogs...
ORA-00704 ORA-00604 ORA-01173
MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set Wed Feb 12 10:16:00 2014 SMON: enabling cache recovery Errors in file H:\ORACLE\diag\rdbms\orcl\orcl\trace\orcl_ora_9232.trc: ORA-01173: data dictionary indicates missing data file from system tablespace Errors in file H:\ORACLE\diag\rdbms\orcl\orcl\trace\orcl_ora_9232.trc: ORA-00704: bootstrap process failure ORA-00704: bootstrap process failure ORA-00604: error occurred at recursive SQL level 1 ORA-01173: data dictionary indicates missing data file from system tablespace Errors in file H:\ORACLE\diag\rdbms\orcl\orcl\trace\orcl_ora_9232.trc: ORA-00704: bootstrap process failure ORA-00704: bootstrap process failure ORA-00604: error occurred at recursive SQL level 1 ORA-01173: data dictionary indicates missing data file from system tablespace Error 704 happened during db open, shutting down database USER (ospid: 9232): terminating the instance due to error 704 Instance terminated by USER, pid = 9232 ORA-1092 signalled during: alter database open resetlogs...
obj$事务异常恢复
ORA-00704 ORA-00600[4000]
Thu Feb 28 19:29:10 2013 SMON: enabling cache recovery Thu Feb 28 19:29:11 2013 Errors in file /u1/PROD/prodora/db/tech_st/10.2.0/admin/PROD_oracle/udump/prod_ora_20989.trc: ORA-00600: internal error code, arguments: [4000], [50], [], [], [], [], [], [] Thu Feb 28 19:29:13 2013 Incremental checkpoint up to RBA [0x1.3.0], current log tail at RBA [0x1.3.0] Thu Feb 28 19:29:13 2013 Errors in file /u1/PROD/prodora/db/tech_st/10.2.0/admin/PROD_oracle/udump/prod_ora_20989.trc: ORA-00704: bootstrap process failure ORA-00704: bootstrap process failure ORA-00600: internal error code, arguments: [4000], [50], [], [], [], [], [], [] Thu Feb 28 19:29:13 2013 Error 704 happened during db open, shutting down database USER: terminating instance due to error 704 Instance terminated by USER, pid = 20989 ORA-1092 signalled during: ALTER DATABASE OPEN RESETLOGS...
IO异常恢复
ORA-01115 ORA-01110 ORA-27070 OSD-04016
Tue May 14 15:32:10 2013 Completed redo scan 16941 redo blocks read, 1106 data blocks need recovery Tue May 14 15:32:17 2013 Errors in file d:\oracle\product\10.2.0\admin\water\bdump\water_p002_1472.trc: ORA-01115: IO error reading block from file 6 (block # 81951) ORA-01110: data file 6: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\WATER\YD_DATA01.DBF' ORA-27070: async read/write failed OSD-04016: 异步 I/O 请求排队时出错。 O/S-Error: (OS 23) 数据错误(循环冗余检查)。
常见错误信息
表或者索引坏块相关错误
ORA-01578/ORA-08103/ORA-01410/ORA-08102/ORA-600 kdsgrp1/ORA-600 qertbfetchbyrowid/ORA-01499/ORA-01555/ORA-26040/ORA-27046
控制文件异常
ORA-00202/ORA-600 kccsbck_first/ORA-600 kccscf_1/ORA-600[kccsbck_first]/ORA-600 kccsbck_first/ORA-00205/ORA-600 kccpb_sanity_check_2
REDO或者UNDO异常
ORA-00376/ORA-00600 4097/ORA-01595/ORA-600 4194/ORA-600 4193/ORA-600 kcfrbd_3/ORA-00600 4137/ORA-01594/ORA-01555/ORA-00704/ORA-00604/ORA-00607/ORA-600 4000/ORA-00600[3705]/ORA-00316/ORA-00312/ORA-00327/ORA-01623/ORA-01624/ORA-01194/ORA-600 2662/ORA-00368/ORA-00353/ORA-00305/ORA-00340/ORA-00345/ORA-00354
各种ORA-600错误
ORA-600 4497/ORA-600 6947/ORA-600 2662/ORA-600 4194/ORA-600 4193/ORA-00600 4137/ORA-600 4000/ORA- 600 kcrf_resilver_log_1/ORA- 600 kdxlin:psno out of range/ORA-600 3020/ORA-600 kccpb_sanity_check_2/ORA-600 3705/ORA-600 kccscf_1/ORA-600 kghstack_free2/ORA-600 kcfrbd_3/ORA-600 ktbdchk1: bad dscn/ORA-600 2252/ORA-600 kcratr_nab_less_than_odr/ORA-600 kccsbck_first/ORA-600 kcratr1_lostwrt/ORA-600 ktspNextL1:4/ORA-600 13013/ORA-600 kdsgrp1/ORA-600 kmgs_parameter_update_timeout_1/ORA-600 kcbgtcr_1/ORA-600 kcbgtcr_1a/ORA-600 kcbgtcr_3/ORA-600 kcbgtcr_4/ORA-600 kcbgtcr_5/ORA-600 kcbgtcr_6/ORA-600 kcbgtcr_7/ORA-600 kcbgtcr_10/ORA-600 kcbgtcr_12/ORA-600 kcbgtcr_13/ORA-600 qertbfetchbyrowid/ORA-600 kmgs_parameter_update_timeout_1
为了能快速评估你的库故障,恢复难以程度,请使用Oracle Database Recovery Check检查数据库,生成html, alert日志, trace文件发我(adb@xifenfei.com)。
近期无备份数据库恢复主要案例
The reference to a ROWID may be implicit from a WHERE CURRENT OF clause or directly from a WHERE ROWID=… clause.
ORA 1410 indicates the ROWID is for a BLOCK that is not part of this table.
If the error is reproducible, following may be the reasons:-
a.) The header block has an invalid block type.
b.) The data_object_id (seg/obj) stored in the block is different than the data_object_id stored in the segment header. See dba_objects.data_object_id and compare it to the decimal value stored in the block (field seg/obj).
This error generally manifests itself when there is inconsistency in the data/Index block. Some of the block check errors that may be found:-
a.) Row locked by a non-existent transaction
b.) The amount of space used is not equal to block size
c.) Transaction header lock count mismatch.
While support are processing the tracefile it may be worth the re-running the ANALYZE after restarting the database to help show if the corruption is consistent or if it ‘moves’.
Send the tracefile to support for analysis.
If the ANALYZE was against an index you should check the whole object. Eg: Find the tablename and execute:
ANALYZE TABLE xxx VALIDATE STRUCTURE CASCADE;
One or more entries does not point to the appropriate cross-reference.
This Error raises always together with ORA-1578
A mismatch was found between the index rowid and the data block it is pointing to. The rowid points to a non-existent row in the data block. The corruption can be in data and/or index blocks.
ORA-600 [12700] can also be reported due to a consistent read (CR) problem.
There is an inconsistency between the information stored in the redo and the information stored in a database block being recovered.
We are validating the Undo record number relating to the change being applied against the maximum undo record number recorded in the undo block.
This error is reported when the validation fails.
We are validating the Undo block sequence number in the undo block against the Redo block sequence number relating to the change being applied.
This error is reported when this validation fails.
This would indicate a corrupted rollback segment.
If the entry number is invalid, ORA-600 [2130] is logged.
If the lock number is greater than the number of lock entries, ORA-600 [4512] is reported followed by a stack trace, process state and block dump.
This error possibly indicates a block corruption.
The ORA-600 [2662] occurs when an SCN is compared to the dependent SCN stored in a UGA variable.
If the SCN is less than the dependent SCN then we signal the ORA-600 [2662] internal error.
However, the xid given is in the future of the transaction table.
This could be due to a rollback segment corruption issue OR you might be hitting the following known problem.
ORA-600[6006] is usually caused by a media corruption problem related to either a lost write to disk or a corruption on disk.
The second argument is the block type received.
This internal error is raised when this check fails.
invalid tablespace ID and/or rdba found
ORA-600[kdblkcheckerror]
The dependent scn is greater than the current scn.
1.丢失数据文件(ORA-01157)
SQL> startup
ORACLE instance started.
Total System Global Area 260046848 bytes
Fixed Size 1266896 bytes
Variable Size 83888944 bytes
Database Buffers 167772160 bytes
Redo Buffers 7118848 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 4 – see DBWR trace file
ORA-01110: data file 4: ‘/u01/oracle/oradata/XFF/users01.dbf’
数据文件丢失,处理方法:
1).使用备份还原丢失数据然后
2).非undo,system可以offline 掉该文件继续打开数据库
3).如果是undo需要谨慎,可能导致ORA-00376错误
4).如果是system offline可能导致ORA-01147
2. 丢失redo(ORA-00313)
SQL> startup
ORACLE instance started.
Total System Global Area 260046848 bytes
Fixed Size 1266896 bytes
Variable Size 83888944 bytes
Database Buffers 167772160 bytes
Redo Buffers 7118848 bytes
Database mounted.
ORA-00313: open failed for members of log group 1 of thread 1
ORA-00312: online log 1 thread 1: ‘/u01/oracle/oradata/XFF/redo01.log’
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
redo文件丢失,处理步骤:
1).查询v$log确认该redo是否是current或者active
2).确定该redo是否被归档
3).如果是inactive使用clear 或者 clear unarchived
4).如果是active或者current,需要通过不完全恢复,甚至隐含参数等方法解决
3. 丢失undo(ORA-01092 ORA-00376)
SQL> startup
ORACLE instance started.
Total System Global Area 260046848 bytes
Fixed Size 1266896 bytes
Variable Size 83888944 bytes
Database Buffers 167772160 bytes
Redo Buffers 7118848 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 2 – see DBWR trace file
ORA-01110: data file 2: ‘/u01/oracle/oradata/XFF/undotbs01.dbf’
SQL> alter database datafile 2 offline drop;
Database altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01092: ORACLE instance terminated. Disconnection forced
ORA-01092是前台错误,通过查询alert日志发现后台错误主要是:
Fri Oct 25 08:16:36 2013
Errors in file /u01/oracle/admin/XFF/bdump/xff_smon_7437.trc:
ORA-00604: error occurred at recursive SQL level 1
ORA-00376: file 2 cannot be read at this time
ORA-01110: data file 2: ‘/u01/oracle/oradata/XFF/undotbs01.dbf’
因为undo文件丢失,有事务无法正常回滚,从而出现该错误,需要通过使用隐含参数屏蔽事务来解决
4. 丢失system(ORA-01147)
SQL> startup
ORACLE instance started.
Total System Global Area 260046848 bytes
Fixed Size 1266896 bytes
Variable Size 83888944 bytes
Database Buffers 167772160 bytes
Redo Buffers 7118848 bytes
Database mounted.
ORA-01157: cannot identify/lock data file 1 – see DBWR trace file
ORA-01110: data file 1: ‘/u01/oracle/oradata/XFF/system01.dbf’
SQL> alter database datafile 1 offline drop;
Database altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01147: SYSTEM tablespace file 1 is offline
ORA-01110: data file 1: ‘/u01/oracle/oradata/XFF/system01.dbf’
system表空间是系统表空间,该表空间中的数据文件不能被offline,如果该表空间数据文件丢失,数据库无法正常方法,可以考虑使用bbed模拟system文件欺骗数据库(非file# 1)或者使用dul抽取数据
5. 丢失控制文件(ORA-00205 ORA-00202)
SQL> startup
ORACLE instance started.
Total System Global Area 260046848 bytes
Fixed Size 1266896 bytes
Variable Size 83888944 bytes
Database Buffers 167772160 bytes
Redo Buffers 7118848 bytes
ORA-00205: error in identifying control file, check alert log for more info
ORA-00205是前台错误,具体需要结合日志分析:
Fri Oct 25 08:35:40 2013
ALTER DATABASE MOUNT
Fri Oct 25 08:35:40 2013
ORA-00202: control file: ‘/u01/oracle/oradata/XFF/control01.ctl’
ORA-27037: unable to obtain file status
Linux Error: 2: No such file or directory
Additional information: 3
这里可以看出来,是因为控制问文件丢失该值该错误,处理办法:
1).使用备份控制文件还原
2).查找是否还有其他控制文件,拷贝一份
3).列举数据文件重建控制文件
如果你在使用这些思路进行恢复遇到突发情况不能自我解决,请联系我:
Phone:13429648788 Q Q:107644445 E-Mail:dba@xifenfei.com
数据库current/active redo异常的各种情况报错
redo文件损坏报错
Started redo scan
Errors in file d:\app\administrator\diag\rdbms\hzyl\hzyl\trace\hzyl_ora_2960.trc (incident=214262):
ORA-00353: 日志损坏接近块 12014 更改 9743799889 时间 12/05/2011 09:21:11
ORA-00312: 联机日志 3 线程 1: ‘R:\ORADATA\HZYL\REDO03.LOG’
Incident details in: d:\app\administrator\diag\rdbms\hzyl\hzyl\incident\incdir_214262\hzyl_ora_2960_i214262.trc
Aborting crash recovery due to error 368
Errors in file d:\app\administrator\diag\rdbms\hzyl\hzyl\trace\hzyl_ora_2960.trc:
ORA-00368: 重做日志块中的校验和错误
ORA-00353: 日志损坏接近块 12014 更改 9743799889 时间 12/05/2011 09:21:11
ORA-00312: 联机日志 3 线程 1: ‘R:\ORADATA\HZYL\REDO03.LOG’
ORA-368 signalled during: ALTER DATABASE OPEN…
redo文件被其他实例占用报错
Wed May 16 17:03:11 2012
Started redo scan
Wed May 16 17:03:11 2012
Errors in file /oracle/admin/odsdb/udump/odsdb1_ora_2040024.trc:
ORA-00305: log 14 of thread 1 inconsistent; belongs to another database
ORA-00312: online log 14 thread 1: ‘/dev/rods_redo1_2_2′
ORA-00305: log 14 of thread 1 inconsistent; belongs to another database
ORA-00312: online log 14 thread 1: ‘/dev/rods_redo1_2_1′
ORA-305 signalled during: ALTER DATABASE OPEN…
存储整体异常
Mon Oct 17 09:35:09 2011
Errors in file /oracle/app/admin/orcl/bdump/orcl2_lgwr_348814.trc:
ORA-00340: IO error processing online log 4 of thread 2
ORA-00345: redo log write error block 6732 count 2
ORA-00312: online log 4 thread 2: ‘/dev/rredo21′
ORA-27063: number of bytes read/written is incorrect
IBM AIX RISC System/6000 Error: 6: No such device or address
Additional information: -1
Additional information: 1024
Mon Oct 17 09:35:09 2011
LGWR: terminating instance due to error 340
存储IO异常
Fri Feb 21 08:44:42 2014
Thread 1 advanced to log sequence 591 (LGWR switch)
Current log# 1 seq# 591 mem# 0: J:\ORADATA\ORCL\REDO01.LOG
Fri Feb 21 15:31:20 2014
Errors in file c:\oracle\product\10.2.0\admin\orcl\bdump\orcl_lgwr_10312.trc:
ORA-00316: log 1 of thread 1, type 286 in header is not log file
ORA-00312: online log 1 thread 1: ‘J:\ORADATA\ORCL\REDO01.LOG’
使用_disable_logging参数
Sat May 14 23:16:49 2005
Errors in file d:\oracle\admin\rman\bdump\rman_arc0_736.trc:
ORA-16038: log 3 sequence# 72 cannot be archived
ORA-00354: corrupt redo log block header
ORA-00312: online log 3 thread 1: ‘D:\ORACLE\ORADATA\RMAN\REDO03.LOG’
如果你在使用这些思路进行恢复遇到突发情况不能自行解决,请联系我们,将为您提供专业数据库技术支持:
Phone:13429648788 Q Q:107644445 E-Mail:dba@xifenfei.com