您的位置:首页 > 数据库

数据库不能打开,没有备份处理方法之一强行打开

2017-06-10 09:50 204 查看
 由于企业的数据库人员经验不足,或是根本没有dba,因此,可能会出现数据瘫痪,数据库不能打开但是又没有备份的现象,那么我们可能有两种方法:

 a,数据库强行打开;

 b,使用oracle dul工具来把数据抽取出来

 这篇文章简述一下如果数据库不能打开强行打开的方法

1 .把init文件中的:

undo_management=manual

3、在init.ora中加入如下参数

_allow_resetlogs_corruption=TRUE

_corrupted_rollback_segments=(_syssmu1$,_syssmu2$,_syssmu3$,_syssmu4$,_syssmu5$,_syssmu6$,_syssmu7$,_syssmu8$,_syssmu9$,_syssmu10$,_syssmu11$,_syssmu12$,_syssmu13$,_syssmu14$,_syssmu15$,_syssmu16$,_syssmu17$,_syssmu18$,_syssmu19$,_syssmu20$,_syssmu21$,_syssmu22$,_syssmu23$,_syssmu24$,_syssmu25$,_syssmu26$,_syssmu27$,_syssmu28$,_syssmu29$,_syssmu30$,_syssmu31$,_syssmu32$,_syssmu33$)

可以先尝试使用_offline_rollback_segments=true,因为这个不会破坏回滚段。

如果不行再使用_corrupted_rollback_segments

4.然后启动数据库到mount状态

recover database until cancel

5.alter database open resetlogs;

由于数据库是不一致方式打开,因此,打开后把数据库的数据使用exp或是expdp导出来,然后重新创建数据库,然后导入数据

在打开的时候可能会报ora-600[2662]错误,那么需要如下办法处理

ORA-600 [2662]"Block SCN is ahead of Current SCN",说明当前数据库的数据块的SCN早于当前的SCN,主要是和存储在UGA变量中的dependent
SCN进行比较,如果当前的SCN小于它,数据库就会产生这个ORA-600 [2662]的错误了。这个错误一共有五个参数,分别代表不同的含义,

ORA-600 [2662] [a][b] [c] [d] [e]
Arg [a] Current SCNWRAP
Arg [b] Current SCNBASE
Arg [c] dependentSCN WRAP
Arg [d] dependentSCN BASE
Arg [e] Where present this is theDBA where the dependent SCN came from.
 

ORA-00600: internal error code, arguments: [2662], [0], [431267936], [0], [431273216],
[0], [], []
说明数据文件的scn高于redoscn
此时只有把redo的scn一直往前追赶
两种办法:
 如果差别少,那么添加上边两个隐含参数,然后重复去open resetlogs,如下:
A.添加参数
_allow_resetlogs_corruption=TRUE

_corrupted_rollback_segments=(_syssmu1$,_syssmu2$,_syssmu3$,_syssmu4$,_syssmu5$,_syssmu6$,_syssmu7$,_syssmu8$,_syssmu9$,_syssmu10$,_syssmu11$,_syssmu12$,_syssmu13$,_syssmu14$,_syssmu15$,_syssmu16$,_syssmu17$,_syssmu18$,_syssmu19$,_syssmu20$,_syssmu21$,_syssmu22$,_syssmu23$,_syssmu24$,_syssmu25$,_syssmu26$,_syssmu27$,_syssmu28$,_syssmu29$,_syssmu30$,_syssmu31$,_syssmu32$,_syssmu33$)
B回复数据库
Sql>recoverdatabase until cancel using backup controlfile ;
Cancel
A.        打开数据库
Sql>alterdatabase open resetlogs;
尝试多次,直到打开为止
如果差别多,通过添加adjust_scn来打开,如下:
Oracle 10g以后,需要增加此参数
*._allow_error_simulation=true
如果数据库mount状态下做:
 alter session set events '10015 trace nameadjust_scn level 1';
如果数据库打开:
alter session set events'IMMEDIATE trace name ADJUST_SCN level 1';
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐