oracle数据库宕机原因之一,三个redo.log日志误删导致。
三个redo.log日志被删,数据库无法启动。
解决步骤:
1、sqlplus /nolog
无日志登录
2、conn /as sysdba
进入到sql命令下
3、startup mount ;
启动数据库到挂载模式下
4、alter database open ;
尝试打开数据库,注意报错信息。
一般会报错如下(为英文)。
ora-00313:无法打开日志组1(线程1)的成员
ora-00312:联机日志1线程1:‘../REDO01.LOG’。
可以确定是REDO01.LOG日志被误删了,导致缺失。
3、select group#,sequence#,archived,status from v$log;
查看重组日志组成员和个数状态信息。
4、alter database clear logfile group 1;
清除任务组1的日志文件
5、alter database open
再次尝试打开数据库
依旧报错。
ora-00313:无法打开日志组2(线程1 )的成员 ora-00312:联机日志1线程1:‘../REDO0 2.LOG ’。
可以确定是REDO02.LOG日志也被误删了,导致缺失。
6、 alter database clear logfile group 2;
清除任务组2的日志文件
7、 alter database open
可以确定是REDO03.LOG日志也被误删了,导致缺失。
8、 alter database clear logfile group 3;
清除任务组3的日志文件。但此时报错!
ora-01624:日志3需要恢复
ora-00312:联机日志3线程1:‘../REDO03.LOG’。
这是因为日志3正是当前数据库使用的重做日志,无法直接清除。
9、recover database until cancel;
恢复数据库
10、auto
第一选择自动,通过归档日志恢复。
但若没开启归档日志,则会报错。
ora-00308:不能打开archive.log日志
ora-27037:无法获取文件状态
11、recover database until cancel;
二次尝试恢复数据库
12、cancel
这次选择cancel
13、alter databse open;
再次打开数据库,一般都会成功,但仍有数据库会失败(我解决时就是后者,失败了)
失败,请继续执行步骤14。
14、alter database open resetlogs;
ora-01194:文件1需要更多的恢复。
ora-01110:data file '../undo01.dbf'
15、shutdown immediate;
先关闭数据库。
16、在pfile加入隐藏参数
*_allow_resetlogs_corruption=TRUE
17、startup mount pfile='../xxx.ora';
启动到mount下
18、alter databse open ;
再次尝试打开,失败!
ora-00600: [13013] [5001] [267]
这意味着警告日志也有报错。
19、show parameter undo;
查看重做表空间
20、drop system undotbs01 including contents and datafiles
尝试删除undo表空间。
失败,提示需要打开数据库才能删除。
21、shutdown immediate
关闭数据库
22、新建一个pfile1文件,将其中的undo_management=Manual
将自动管理重做关闭
23、startup mount pfile='../pfile1';
启动到挂载模式
24、alter database open;
打开数据库。
25、show parameter undo;
再次查看undo表空间
26、create UNDO tablespace UNDOTBS datafile '../undotbs01.dbf' size 5120m;
创建新的undo表空间
27、drop tablespce undotbs1 including contents and datafiles;
删除旧的undo表空间
28、alter system set undo_tablespace='UNDOTBS'
将undo参数配置改为新的UNDOTBS
29、shutdown immediate;
关闭数据库
30、startup;
重启解决!
三个redo.log日志被删,数据库无法启动。
解决步骤:
1、sqlplus /nolog
无日志登录
2、conn /as sysdba
进入到sql命令下
3、startup mount ;
启动数据库到挂载模式下
4、alter database open ;
尝试打开数据库,注意报错信息。
一般会报错如下(为英文)。
ora-00313:无法打开日志组1(线程1)的成员
ora-00312:联机日志1线程1:‘../REDO01.LOG’。
可以确定是REDO01.LOG日志被误删了,导致缺失。
3、select group#,sequence#,archived,status from v$log;
查看重组日志组成员和个数状态信息。
4、alter database clear logfile group 1;
清除任务组1的日志文件
5、alter database open
再次尝试打开数据库
依旧报错。
ora-00313:无法打开日志组2(线程1 )的成员 ora-00312:联机日志1线程1:‘../REDO0 2.LOG ’。
可以确定是REDO02.LOG日志也被误删了,导致缺失。
6、 alter database clear logfile group 2;
清除任务组2的日志文件
7、 alter database open
再次尝试打开数据库
依旧报错。
ora-00313:无法打开日志组3(线程1 )的成员
ora-00312:联机日志3线程1:‘../REDO0
3.LOG
’。
依旧报错。
ora-00313:无法打开日志组3(线程1 )的成员
可以确定是REDO03.LOG日志也被误删了,导致缺失。
8、 alter database clear logfile group 3;
清除任务组3的日志文件。但此时报错!
ora-01624:日志3需要恢复
ora-00312:联机日志3线程1:‘../REDO03.LOG’。
这是因为日志3正是当前数据库使用的重做日志,无法直接清除。
9、recover database until cancel;
恢复数据库
10、auto
第一选择自动,通过归档日志恢复。
但若没开启归档日志,则会报错。
ora-00308:不能打开archive.log日志
ora-27037:无法获取文件状态
11、recover database until cancel;
二次尝试恢复数据库
12、cancel
这次选择cancel
13、alter databse open;
再次打开数据库,一般都会成功,但仍有数据库会失败(我解决时就是后者,失败了)
失败,请继续执行步骤14。
14、alter database open resetlogs;
ora-01194:文件1需要更多的恢复。
ora-01110:data file '../undo01.dbf'
15、shutdown immediate;
先关闭数据库。
16、在pfile加入隐藏参数
*_allow_resetlogs_corruption=TRUE
17、startup mount pfile='../xxx.ora';
启动到mount下
18、alter databse open ;
再次尝试打开,失败!
ora-00600: [13013] [5001] [267]
这意味着警告日志也有报错。
19、show parameter undo;
查看重做表空间
20、drop system undotbs01 including contents and datafiles
尝试删除undo表空间。
失败,提示需要打开数据库才能删除。
21、shutdown immediate
关闭数据库
22、新建一个pfile1文件,将其中的undo_management=Manual
将自动管理重做关闭
23、startup mount pfile='../pfile1';
启动到挂载模式
24、alter database open;
打开数据库。
25、show parameter undo;
再次查看undo表空间
26、create UNDO tablespace UNDOTBS datafile '../undotbs01.dbf' size 5120m;
创建新的undo表空间
27、drop tablespce undotbs1 including contents and datafiles;
删除旧的undo表空间
28、alter system set undo_tablespace='UNDOTBS'
将undo参数配置改为新的UNDOTBS
29、shutdown immediate;
关闭数据库
30、startup;
重启解决!