Oracle10gR2 Streams(五)全库复制之三
上一篇:Oracle10gR2 Streams(四)全库复制之二 下一篇:微软live.com邮箱开放注册

Oracle10gR2 Streams(五)全库复制之三

在《Oracle10gR2 Streams(四)全库复制之二》中利用maintain_global配置了一个downstream的全库复制,本例将在该试验的基础上修改成real-time downstream的全库复制。

所谓实时异地捕获,其实和普通的异地捕获基本上是一致的,所不同的,就是传递到捕获进程所在库的不再是归档日志,而是通过lgwr进程直接传送当前redo。这和data guard中使用arch还是lgwr来传送日志的机制是一样的。

一、在捕获进程所在库创建standby redo logfile

STRMADM@dest>alter database add standby logfile
  2  'F:\oracle\oradata\dest\stdbyredo01.log' size 5m;

Database altered.

STRMADM@dest>alter database add standby logfile
  2  'F:\oracle\oradata\dest\stdbyredo02.log' size 5m;

Database altered.

STRMADM@dest>alter database add standby logfile
  2  'F:\oracle\oradata\dest\stdbyredo03.log' size 5m;

Database altered.

STRMADM@dest>alter database add standby logfile
  2  'F:\oracle\oradata\dest\stdbyredo04.log' size 5m;

Database altered.

二、在源库修改日志传送方式

STRMADM@ning>alter system set log_archive_dest_2='service=dest lgwr async noregister';

System altered.

三、修改capture进程属性,启用实时捕获

STRMADM@dest>select capture_name from dba_capture;

CAPTURE_NAME
------------------------------
NING$CAP

STRMADM@dest>BEGIN
  2    DBMS_CAPTURE_ADM.SET_PARAMETER(
  3      capture_name => 'NING$CAP',
  4      parameter    => 'downstream_real_time_mine',
  5      value        => 'y');
  6  END;
  7  /

PL/SQL procedure successfully completed.

STRMADM@dest>select capture_name,parameter,value from dba_capture_parameters;

CAPTURE_NA PARAMETER                      VALUE
---------- ------------------------------ ------------------------------
NING$CAP   DISABLE_ON_LIMIT               N
NING$CAP   DOWNSTREAM_REAL_TIME_MINE      Y
NING$CAP   MAXIMUM_SCN                    INFINITE
NING$CAP   MESSAGE_LIMIT                  INFINITE
NING$CAP   PARALLELISM                    1
NING$CAP   STARTUP_SECONDS                0
NING$CAP   TIME_LIMIT                     INFINITE
NING$CAP   TRACE_LEVEL                    0
NING$CAP   WRITE_ALERT_LOG                Y

9 rows selected.

四、在源库归档当前日志,使得capture进程切换到standby redo logfile中捕获数据

STRMADM@ning>alter system archive log current;

System altered.

此后在目标库的alert中可以发现如下记录,表明已经开始实时捕获

Sun Nov 04 21:36:48 2007
LOGMINER: Begin mining logfile: F:\ORACLE\ORADATA\DEST\STDBYREDO01.LOG

五、验证实时捕获是否成功

STRMADM@ning>select group#,sequence#,status from v$log;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         1        241 INACTIVE
         2        242 CURRENT
         3        240 INACTIVE

STRMADM@ning>insert into ning.teststrm values(2);

1 row created.

STRMADM@ning>insert into ning.teststrm values(3);

1 row created.

STRMADM@ning>commit;

Commit complete.

稍等片刻后,在目标库查询

STRMADM@dest>select * from ning.teststrm;

         I
----------
         1
         2
         3

可见数据已经复制过来,此时再看源库的logfile sequence

STRMADM@ning>select group#,sequence#,status from v$log;

    GROUP#  SEQUENCE# STATUS
---------- ---------- ----------------
         1        241 INACTIVE
         2        242 CURRENT
         3        240 INACTIVE

也就是说,并没有新的归档日志产生。新的事务日志实时的传递到了目标库的standby redo logfile中,然后capture进程实时的从standby redo logfile中解析出事务并应用。这样数据的复制就不再需要等待归档,源库和目标库之间的数据就能基本保持一致了。

本文网址:http://www.ningoo.net/html/2007/oracle10gr2_streams_database_level_replication_3.html

订阅到Google | 收藏到Del.icio.us | 推荐到鲜果

相关文章 随机文章

本文Tags: ,

没有评论


(Required)
(Required, will not be published)