ITPub博客

首页 > 数据库 > Oracle > dataguard-(ORA-16004/ORA-01196/ORA-01110)-(转)

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

原创 Oracle 作者:ningzi82 时间:2009-12-01 15:59:46 0 删除 编辑

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博客 ” ,链接:https://blog.itpub.net/789833/viewspace-1029242/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-12-16

  • 博文量
    130
  • 访问量
    358880