11g数据库查看dataguard是否同步

一、环境
     主库:
      ip地址:192.168.122.203
      oracle根目录:/data/db/oracle
      SID:qyq
      数据文件路径/data/db/oracle/oradata/qyq
      归档文件路径:/data/db/oracle/archive'
 
     备库:
      ip地址:192.168.122.204
      oracle根目录:/data/app/oracle
      SID:qyq
      数据文件路径/data/app/oracle/oradata/qyq
      归档文件路径:/data/app/oracle/archive'
 
二、备库不同步的问题检查方法
 

1、检查主备两边的序号
select max(sequence#) from v$log;   ---检查发现一致


2、备库执行,查看是否有数据未应用
select name,SEQUENCE#,APPLIED from v$archived_log order by sequence#;

select SEQUENCE#,FIRST_TIME,NEXT_TIME ,APPLIED from v$archived_log order by 1;

3、检查备库是否开启实时应用
select recovery_mode from v$archive_dest_status where dest_id=2;

4、检查备库状态
select switchover_status from v$database; --发现状态not allowed 

3、看看进程MRP是否存在
 ps aux|grep mrp      --发现进程不存在

4、如果不存在执行以下:
alter database recover managed standby database using current logfile disconnect;

alter database recover managed standby database disconnect from session;  --后台执行

alter database recover managed standby database --前台执行,执行这个可以看到报错的情况

如果有报错,查看alert日志和log.xml日志 

5、验证是否正常
select process,status from v$managed_standby;
select process,status,sequence# from v$managed_standby;

如果看到mrp0正常

6、以上步骤处理好后,如果数据还不正常,接着处理

关闭备库,接着处理:
把主库上 undotbs01.dbf 文件,物理的重拷到备库机上以前undotbs01.dbf 所在目录下;

$scp /data/oracle/oradata/voip/undotbs01.dbf   192.168.122.204:/data/oracle/oradata/voip

再在主库上重新生成一个standby control file ,拷到备库机上相应目录下,

alter database create standby controlfile as '/data/oracle/oradata/voip/qyqdg01.ctl'

$scp /data/oracle/oradata/voip/qyqdg01.ctl   192.168.122.204:/data/oracle/oradata/voip
$ mv qyqdg01.ctl  control01.ctl
$ cp control01.ctl /data/oracle/flash_recovery_area/qyq/
$cd /data/oracle/flash_recovery_area/qyq/
$ mv control01.ctl  control02.ctl

接着
STARTUP NOMOUNT;
ALTER DATABASE MOUNT STANDBY DATABASE;
ALTER DATABASE RECOVER MANAGED STANDBY DATABASE DISCONNECT FROM SESSION;

--------------------------------------
session恢复完成后,重启打开备库;

alter database open read only;


另外附上检查dg是否正常的几种方法:

查看DG是否正常的四个方法:
一、看备库的告警日志,正在恢复的日志号是否对应得上

二、看三个进程是否都已经启动

SQL>select process from v$managed_standby;
在备库显示:
ARCH、MRPO和RFS
都有表示正常

在主库显示:
PROCESS
---------
ARCH
ARCH
ARCH
ARCH
LNS
没有RFS进程和MRP进程

三、先切换一次日志,再进到归档目录里,看两边的归档文件号是否对得上
四、用命令查看两边归档是否对得上
SQL> selectmax(sequence#) from v$archived_log where applied='YES';

 

 
 
posted @ 2017-11-11 10:42  ClarkYu  阅读(1666)  评论(0编辑  收藏  举报