DataGuard Real-Time Apply

本文介绍如何通过Oracle DataGuard的Real-Time Apply特性实现实时数据同步。通过创建Standby Redo日志并启用实时应用功能,可以在备用数据库上快速应用主数据库的日志更新,减少数据延迟。

DataGuard Real-Time Apply

 

 

   一般搭建的Physical Standby 不能做到实时同步主库数据,当主库Online Redo 归档后,才会将这个归档日志
传到备机并Applied 到备库,这个延迟时间较长,如果主库业务不繁忙,可能好几天才产生一个归档文件,这时
备库数据和主库数据相差就好几天了,今天看了下Oracle DataGuard官方文档,Oracle 提供实时应用日志的方式,
以下摘自官网,就不翻译了。  

1 Using Real-Time Apply to Apply Redo Data Immediately
If the real-time apply feature is enabled, log apply services can apply redo data as it is received,
without waiting for the current standby redo log file to be archived. This results in faster switchover
and failover times because the standby redo log files have been applied already to the standby database by the time
the failover or switchover begins.


Figure 6-1 shows a Data Guard configuration with a local destination and a standby destination.
As the remote file server (RFS) process writes the redo data to standby redo log files on the standby database,
 log apply services can recover redo from standby redo log files as they are being filled.


下面是在已经搭建Physical Standby 的基础上进行,
  
1 停 Standby REDO 应用进程 (On standby )

SQL>    alter database recover managed standby database cancel;
Database altered.

2 增加 STANDBY redo 日志 (Both on standby and Primary)

ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 4 ('/oradata/MANUA/stadnbylog/stdlog01.rdo') SIZE 50M reuse;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 5 ('/oradata/MANUA/stadnbylog/stdlog02.rdo') SIZE 50M reuse;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 6 ('/oradata/MANUA/stadnbylog/stdlog03.rdo') SIZE 50M reuse;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 7 ('/oradata/MANUA/stadnbylog/stdlog04.rdo') SIZE 50M reuse;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 8 ('/oradata/MANUA/stadnbylog/stdlog05.rdo') SIZE 50M reuse;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 9 ('/oradata/MANUA/stadnbylog/stdlog06.rdo') SIZE 50M reuse;
ALTER DATABASE ADD STANDBY LOGFILE thread 1 GROUP 10 ('/oradata/MANUA/stadnbylog/stdlog7.rdo') SIZE 50M reuse;

SQL> SELECT GROUP#,THREAD#,SEQUENCE#,ARCHIVED,STATUS FROM V$STANDBY_LOG;

    GROUP#    THREAD#  SEQUENCE# ARC STATUS
---------- ---------- ---------- --- ----------
         4          1         14 YES ACTIVE
         5          1          0 YES UNASSIGNED
         6          1          0 YES UNASSIGNED
         7          1          0 YES UNASSIGNED
         8          1          0 YES UNASSIGNED
         9          1          0 YES UNASSIGNED
        10          1          0 YES UNASSIGNED

7 rows selected.

 
3 启动数据库到实时恢复管理模式(On Standby)
SQL> alter database recover managed standby database using current logfile disconnect from session;

Database altered.

4 主库创建一张测试表
SQL> create table test_1 (id integer,name varchar2(32));

Table created.

SQL> insert into test_1 values (1,'francs');

1 row created.

SQL> insert into test_1 values(2,'tf');

1 row created.

SQL> commit;

Commit complete.

SQL> select * from test_1;

        ID NAME
---------- --------------------------------
         1 francs
         2 tf
        
   注意,这步操作后,不执行日志切换操作 "Alter system switch log file", 并接着观察日志是否进来。
        
5 备库上初次验证
SQL> alter database recover managed standby database cancel;

Database altered.

SQL> alter database open read only;

Database altered.

SQL>   select * from test_1;

        ID NAME
---------- --------------------------------------------------

2 rows selected.
        
   说明:第下次验证发现数据没有传过来,表是已经创建上了,猜想可能有延迟,再等等。


6 过了大概五分钟后,备库上再次验证
SQL> alter database recover managed standby database cancel;

Database altered.

SQL> alter database open read only;

Database altered.

SQL>   select * from test_1;

        ID NAME
---------- --------------------------------------------------
         1 francs
         2 tf

2 rows selected.

  发现数据已经同步了。
 
  总结:1 在备库上创建 standby log ,可以实现主备机实时数据同步;
              2 这种实时数据同步的方法比归档日志传递的方法高效得多,但也有延迟,这个延迟应该在五分钟以内
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值