dataguard-(ORA-16004/ORA-01196/ORA-01110)-(转)

author:skate
time: 2009/08/01

1. 故障现象:

一次突然断电导致我的standby,open时报如下的错误:

ORA-16004: 备份数据库需要恢复
ORA-01196: 文件 1 由于介质恢复会话失败而不一致
ORA-01110: 数据文件 1: 'D:ORACLEPRODUCT10.2.0ORADATAORCLDGSYSTEM01.DBF'

[@more@]

author:skate
time: 2009/08/01

1. 故障现象:

一次突然断电导致我的standby,open时报如下的错误:

ORA-16004: 备份数据库需要恢复
ORA-01196: 文件 1 由于介质恢复会话失败而不一致
ORA-01110: 数据文件 1: 'D:ORACLEPRODUCT10.2.0ORADATAORCLDGSYSTEM01.DBF'

2. 环境:


os: windows XP
oracle : oracle10.2


3.解决:

standby库操作:
C:Documents and Settingsskate>sqlplus "sys/aibo@orcl as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on 星期六 8月 1 14:35:19 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

已连接到空闲例程。

SQL> startup mount
ORACLE 例程已经启动。

Total System Global Area 612368384 bytes
Fixed Size 1250428 bytes
Variable Size 247466884 bytes
Database Buffers 356515840 bytes
Redo Buffers 7135232 bytes
数据库装载完毕。

SQL> alter database recover managed standby database using current logfile disconnect from session;


在primary 库

sql> alter system switch logfile; ---目的使standby更完全的apply来自primary的log


在standby库:

SQL> alter database recover managed standby database cancel;

数据库已更改。

SQL> alter database open;
alter database open
*
第 1 行出现错误:
ORA-16004: 备份数据库需要恢复
ORA-01196: 文件 1 由于介质恢复会话失败而不一致
ORA-01110: 数据文件 1: 'D:ORACLEPRODUCT10.2.0ORADATAORCLDGSYSTEM01.DBF'

这个时候要注意,一般对于单库活着primary库可以用resotre database或recover database
如果用这两个命令会报:Ora-01666:controlfile is for a standby database

但这里不能用,一般的方法是:

1.把standby库启动到recover模式,

SQL> alter database recover managed standby database using current logfile disconnect from session;

2.然后在paimary库执行归档sql

SQL> alter system switch logfile;

3.standby取消recover模式,一般到这里就可以open了

SQL> alter database recover managed standby database cancel;
SQL> alter database open;

插曲结束,实际继续操作:

在standby库:

SQL> alter database recover managed standby database using current logfile disconnect from session;

数据库已更改。

这时在primary库上:


SQL> alter system switch logfile;

系统已更改。


在回到standby库:

SQL> alter database recover managed standby cancel;
alter database recover managed standby cancel
*
第 1 行出现错误:
ORA-02000: 缺失 DATABASE 关键字


SQL> alter database recover managed standby database cancel;

数据库已更改。


这个时候应该可以打开standby库了

SQL> alter database open;

数据库已更改。

SQL>

但是如果standby库没有primary的datafile,这个可以结合standby库和主库的v$datafile


例如: select * from v$database。 在alert.log里面提示很全面的

这个时候就需要手工为standby创建一个datafile

方法:

alter database create datafile 'v$datafile_name' as 'expected_file_name';

然后:

1.alter database recover managed standby database using current logfile disconnect from session;

2.primary 数据库做alter system switch logfile;

3. 在standby库, alter database recover managed standby database

此时standby数据库应该能够open了。

---end----

http://blog.csdn.net/wyzxg/archive/2009/08/01/4399865.aspx

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

转载于:http://blog.itpub.net/789833/viewspace-1029242/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值