ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 记一次简单的数据库恢复,控制文件不一致导致的启动失败。

记一次简单的数据库恢复,控制文件不一致导致的启动失败。

原创 Linux操作系统 作者:wei-xh 时间:2010-07-07 10:51:02 0 删除 编辑
很可惜,我没能保存一开始的报错信息(alert文件竟然没记录)。报错在mount阶段,报错的意思是控制文件2与控制文件1不一致,2比1版本更高。数据库的损坏是由于非法断电导致的。
修改参数文件pfile,只保留控制文件2,启动数据库。
SQL> conn / as sysdba
已连接。
SQL> create pfile from spfile;

文件已创建。

SQL> create spfile from pfile;
create spfile from pfile
*
ERROR 位于第 1 行:
ORA-32002: ??????????? SPFILE
可以猜到报错为不能创建正在使用的SPFILE。当然可也修改nls_language设置语言。

SQL> shutdown immediate
ORA-01507: ??????


ORACLE 例程已经关闭。
SQL> create spfile from pfile;

文件已创建。

SQL> startup
ORACLE 例程已经启动。

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
ORA-01113: 文件 1 需要介质恢复
ORA-01110: 数据文件 1: 'D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF'


SQL> select status from v$datafile;

STATUS
-------
SYSTEM
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE
ONLINE

已选择10行。

SQL> recover datafile 1;
完成介质恢复。
SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-01113: 文件 2 需要介质恢复
ORA-01110: 数据文件 2: 'D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF'


SQL> recover database;
完成介质恢复。


注意这里是完全恢复,恢复成功了,说明应用日志完全了,不存在丢失。

SQL> alter database open;
alter database open
*
ERROR 位于第 1 行:
ORA-00314: 日志 2 (线程 1),预计序号  与  不匹配
ORA-00312: 联机日志 2 线程 1: 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG'

ORA-00314说明Cause: The online log is corrupted or is an old version.既然是完全恢复的,我们可以resetlogs,不会造成丢失。

SQL> select * from v$Log;

    GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC STATUS
---------- ---------- ---------- ---------- ---------- --- ----------------
FIRST_CHANGE# FIRST_TIME
------------- ----------
         1          1        320  104857600          1 NO  INVALIDATED
     47548236 06-7月 -10

         2          1        318  104857600          1 NO  INACTIVE
     47366790 05-7月 -10

         3          1        319  104857600          1 NO  INACTIVE
     47386928 05-7月 -10


SQL> recover database until cancel;
完成介质恢复。
SQL> alter database open resetlogs;

数据库已更改。

SQL> shutdown immediate
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。

Total System Global Area  135338868 bytes
Fixed Size                   453492 bytes
Variable Size             109051904 bytes
Database Buffers           25165824 bytes
Redo Buffers                 667648 bytes
数据库装载完毕。
数据库已经打开。
SQL>

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22034023/viewspace-667413/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
Oracle ACE组成员,DBGeeK用户组发起人。曾在DTCC、ORACLE技术嘉年华、Gdevops等公开场合做过数据库技术专题分享,2017年应Oracle邀请在世界最大的数据库会议OOW上做技术分享。组织翻译了《拨云见日,解密Oracle ASM内核》一书。

注册时间:2009-07-04

  • 博文量
    422
  • 访问量
    2425317