掉电数据块损坏引起数据库不能正常打开

来源:互联网 发布:江苏软件考试网 编辑:程序博客网 时间:2024/04/20 15:40

昨天由于掉电一个测试机上的oracle不能启动了,后来经过折腾搞好了,记录下虽然好记性不如赖笔头

说明,数据库没有备份,非归档模式运行的

一般会出现

ORA-01172: 线程 1的恢复停止在块XXX

ORA-01151: 如果需要,请使用介质恢复以恢复块和还原备份
当然我也尝试了recover database 后alter database open,可是又出现了

ORA-00607ORA-00600600等错误,提示undo表空间甚什么不一致等等,察看日志,出现大量错误信息

Thu Dec 12 18:19:37 2013
Thread 1 cannot allocate new log, sequence 84353
Checkpoint not complete
  Current log# 1 seq# 84352 mem# 0: E:\APP\ADMINISTRATOR\ORADATA\YANGJIAN\REDO01.LOG
Thread 1 advanced to log sequence 84353 (LGWR switch)
  Current log# 2 seq# 84353 mem# 0: E:\APP\ADMINISTRATOR\ORADATA\YANGJIAN\REDO02.LOG
OER 7451 in Load Indicator : Error Code = OSD-04500: 指定了非法选项

1、启动数据库到nomount状态,创建pfile

2、修改pfile

修改init初始化参数,添加禁用段的内容,从而逃避数据库的数据块验证,不过有些表不能访问因为有坏块

undo_management='MANUAL'
*._corrupted_rollback_segments=("_SYSSMU1$","_SYSSMU2$","_SYSSMU3$","_SYSSMU3$","_SYSSMU4$","_SYSSMU5$","

_SYSSMU6$","_SYSSMU7$","

_SYSSMU8$","_SYSSMU9$","_SYSSMU10$","_SYSSMU11$","_SYSSMU12$","_SYSSMU13$","_SYSSMU14$","_SYSSMU15$","_SYSSMU16$","_SYSS

MU17$","_SYSSMU18$")

其中参数*._corrupted_rollback_segments的内容,我往上看了,有说快速启动数据库查询SELECT SEGMENT_NAME FROM DBA_ROLLBACK_SEGS;这个时间很短,但是我没试,我直接写的这些

3、然后尝试以pfile启动数据库,mount

4、恢复

recover dtabase

5、第五步会提示以BACKUP CONTROLFILE选项恢复数据库

RECOVER DATABASE USING BACKUP CONTROLFILE UNTIL CANCEL

这部执行时间过长,我等了很久,手动取消的

6、ALTER DATABASE OPEN RESETLOGS;

7、打开数据库之后尽快备份数据库

 

下一步就是恢复这个库了

1、创建spfile

有可能创建不成功,检查权限,或者查看是否已经有spfile了

2、启动到mount下

修改参数

log_archive_dest_1='LOCATION=I:\oracle\product\11.2.0\oradata\center\archivelog'
log_archive_dest_2='LOCATION=I:\oracle\product\11.2.0\oradata\center\log2'

log_archive_format = "archive_%t_%s_%r.arc"

log_archive_max_processes = 5

如果实在不行就将这些参数写道pfile中,使用pfile运行数据库

3、重新启动数据库

4、修改归档模式

alter database archivelog ;

 

另外数据库启动之后如果表还是不能访问的话,可以使用

create table t1 as select * from t2,删除重建恢复,不过丢数据了

世界清静了!

0 0
原创粉丝点击