最近在做备份恢复的实验,被个controlfile

弄的是晕头转向,实际上也不怪我,我完全跟着小布老师去操作,可是我的总是报错,下面来解说一下具体情况和故障以及超快速的解决办法(现在解决很快,当时我可是绞尽脑汁啊,不知道死了多少脑细胞)

当时情况:

首先做了一个Closed

backup,然后在原有表里面写入一些数据。不ARCH,只COMMIT(这样归档文件就没有这些新写入的数据,而redo里面就有,因为我做的是Incomplete恢复)

SQL> alte database

backup controlfile to trace as '/tmp/ir2.sql';

然后用第二种情况改写成脚本(这都是次要的),然后将所有的*.dbf,redo*.log,control*.ctl全部删除,接下来就是恢复.

恢复操作及故障出现:

首先将旧的冷备文件全部复制回去。然后:

SQL>

shutdown abort

ORACLE instance shut down.

SQL>

@/tmp/ir2.sql

ORACLE instance started.

Total System Global Area 318046208 bytes

Fixed

Size 1336260 bytes

Variable Size 239078460 bytes

Database

Buffers 71303168 bytes

Redo

Buffers 6328320 bytes

Control file created.

PL/SQL procedure successfully

completed.

PL/SQL procedure successfully

completed.

SQL>

recover database using backup controlfile until cancel

ORA-00279: change 2734986 generated at 06/22/2011 17:49:36 needed

for thread 1

ORA-00289: suggestion :

/u01/admin/john/archtest/1_5_754492832.dbf

ORA-00280: change 2734986 for thread 1 is in sequence

#5

Specify log:

{=suggested | filename | AUTO |

CANCEL}

ORA-00279: change 2736053 generated at 06/22/2011

18:12:40 needed for thread 1

ORA-00289: suggestion :

/u01/admin/john/archtest/1_6_754492832.dbf

ORA-00280: change 2736053 for thread 1 is in sequence #6

ORA-00278: log file '/u01/admin/john/archtest/1_5_754492832.dbf' no

longer

needed for this recovery

Specify log:

{=suggested | filename | AUTO |

CANCEL}

cancel

ORA-10879: error signaled in parallel recovery slave

ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get

error below

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1:

'/u01/oradata/john/system01.dbf'

SQL>

alter database open resetlogs;

alter database open resetlogs

*

ERROR at line 1:

ORA-01194: file 1 needs more recovery to be consistent

ORA-01110: data file 1:

'/u01/oradata/john/system01.dbf'

问题来了。小布老师这样操作后,就可以打开数据库了。为什么我不行。反反复复啊,怎么都不行。

解决办法:(就这一句)

SQL> alter system set

"_allow_resetlogs_corruption"=true

scope=spfile;

System altered.

SQL>

shutdown immediate

ORA-01109: database not open

Database dismounted.

ORACLE instance shut down.

SQL>

startup

SQL>

alter database open resetlogs;

Database

altered.问题解决了。好了。多简单的问题,就少一个语句去修改spfile。

PS:经过去网上查资料,了解该条语句的含义,是对spfile进行修改,允许使用resetlogs模式启动数据库,我想是不是初始状态下,spfile中的这个值是false,至于为什么默认是关闭,文档里解释是为了安全考虑。

Logo

一站式 AI 云服务平台

更多推荐