+ -
当前位置:首页 → 问答吧 → oracle建立的dataguard主从库数据不能同步

oracle建立的dataguard主从库数据不能同步

时间:2010-08-20

来源:互联网

主从库监听正常.用oracle的tnsping工具可以互相ping通.

查询两边的规档日志,在主库执行:
select recid,name,applied from v$archived_log;
16 rows selected.
从库执行,没有记录
select recid,name,applied from v$archived_log;
0 rows selected.

在从库执行startup报错,无法打开数据库.
SQL> startup
ORACLE instance started.

Total System Global Area  167772160 bytes
Fixed Size                  1218316 bytes
Variable Size              79694068 bytes
Database Buffers           83886080 bytes
Redo Buffers                2973696 bytes
Database mounted.
ORA-16004: backup database requires recovery
ORA-01152: file 1 was not restored from a sufficiently old backup
ORA-01110: data file 1: '/home/oracle/oracle/oradata/orcl/system01.dbf'

从库的控制文件是在主库建立的
主库执行:alter database create standby controlfile as '/home/risetek/oracle/product/10.2.0/redo/standby.ctl';
然后复制在从库的/home/risetek/oracle/oradata/bill目录(存放数据的文件,主从库是一致的)里面在.并且复制standby.ctl为control01.ctl,control02.ctl,control03.ctl.
数据文件是主库rman建的,从库恢复没有报错.


在主库新建表a.
commit后
执行:alter system archive log current;
在从库也无法查看表a信息.

作者: mfkwwgi   发布时间: 2010-08-20

1. 故障现象:
一次突然断电导致我的standby,open时报如下的错误:
ORA-16004: 备份数据库需要恢复
ORA-01196: 文件 1 由于介质恢复会话失败而不一致
ORA-01110: 数据文件 1: 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\SYSTEM01.DBF'
2. 环境:

os: windows XP
oracle : oracle10.2

3.解决:
standby库操作:
C:\Documents and Settings\skate>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:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCLDG\SYSTEM01.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----

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wyzxg/archive/2009/08/01/4399865.aspx

作者: renxiao2003   发布时间: 2010-08-20

热门下载

更多