SlideShare a Scribd company logo
1 of 11
Download to read offline
11g 新特性 Streams 同步
       捕获


      by Maclean.liu
            liu.maclean@gmail.com
        www.oracledatabase12g.com
About Me

l Email:liu.maclean@gmail.com
l Blog:www.oracledatabase12g.com
l Oracle Certified Database Administrator Master 10g
and 11g
l Over 6 years experience with Oracle DBA technology
l Over 7 years experience with Linux technology
l Member Independent Oracle Users Group
l Member All China Users Group
l Presents for advanced Oracle topics: RAC,
DataGuard, Performance Tuning and Oracle Internal.
11g 中引入了新的 Streams 特性:Synchronous Capture 同步捕获。不同于传统 Streams 的捕获机制,
Synchronous Capture 同步捕获不基于归档日志或者在线重做日志来捕捉数据库中的变化。取而代之,同步捕获
使用另一种内部机制来捕捉数据库中的变化并对这些捕获的变化实施格式化,最终形成一条 LCR(Logical change
Record)。这些由同步捕获捕捉到得记录被称为 persistent LCRs。同步捕捉总是将记录入列(enqueue)到一个提
交时队列中(commit-time queue)以保证事务的顺序准确。




即便我们采用了同步捕捉来替代传统的捕捉方式,propagation 和 apply 并不会有什么不同,这我们无需担忧。
同步捕获可以捕捉由 UPDATE、INSERT、DELETE 和 MERGE 四种 DML 语句产生的 DML 变化。因为其不依赖
于重做和归档的特性,其甚至可以被用在非归档模式下,并且不要求打开任何追加日志。
同步捕捉可能适用于以下几种情景中:



  1. 无法使用基于重做(redo-based)的传统捕获方式(例如在 Oracle database Standards Edition 中)

  2. 无法使用重做或基于日志挖掘相关的功能,但可以用到其他 Streams 进程

  3. 要求在用户事务发生的同时执行捕获

  4. 捕获的变化被要求存放在磁盘上的队列中

  5. 克隆较少更新的表上的数据



同步捕获支持对以下数据类型列的 DML 变更捕捉:

  •   VARCHAR2

  •   NVARCHAR2

  •   NUMBER

  •   FLOAT

  •   DATE

  •   BINARY_FLOAT

  •   BINARY_DOUBLE

  •   TIMESTAMP

  •   TIMESTAMP WITH TIME ZONE

  •   TIMESTAMP WITH LOCAL TIME ZONE
•   INTERVAL YEAR TO MONTH

    •   INTERVAL DAY TO SECOND

    •   RAW

    •   CHAR

    •   NCHAR

    •   UROWID



需要注意的是不同于传统捕获方式,同步捕获不能使用如 ADD_SCHEMA_RULES 或 ADD_GLOBAL_RULES 存
储过程建立。同步捕获仅能通过 ADD_TABLE_RULES 建立白名规则(table rule with a positive rule set),而不支
持建立黑名规则(negative rule set)。




下面我们通过实例来体验一下该同步捕获新特性。



一、首先我们需要配置 Streams 所要求的软件环境和前提条件,这包括:


1.确保合理设置 Streams 相关的初始化参数,可以参考<How to setup Oracle Streams Bi-Directional>一文中
Streams 推荐的初始化参数的配置



2.在各个数据库中创建 Streams 管理员用户(一般为 strmadmin)



[oracle@rh2 ~]$ export ORACLE_SID=MACLEAN
[oracle@rh2 ~]$ sqlplus    / as sysdba


SQL*Plus: Release 11.2.0.2.0 Production on Wed Apr 6 15:54:51 2011


create user STRMADMIN identified by STRMADMIN
default tablespace USERS
quota unlimited on USERS;


Grant DBA TO STRMADMIN


begin
DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('STRMADMIN');
end;
/
GRANT SELECT ANY DICTIONARY TO STRMADMIN;
grant insert any table TO STRMADMIN;
grant update any table TO STRMADMIN;
grant delete any table TO STRMADMIN;
grant select any table TO STRMADMIN;
grant alter any table TO STRMADMIN;


grant read on directory data_pump_dir to strmadmin;
grant write on directory data_pump_dir to strmadmin;


3.在源端数据库(source database)以 STRMADMIN 使用 sqlplus 登录,并创建以 STRMADMIN 用户身份连接到目
标端数据库中的数据库连接(database link):



SQL> conn strmadmin/STRMADMIN
Connected.


SQL> create database link DW connect to strmadmin identified by STRMADMIN using 'DW';
Database link created.




二、正式开始配置使用同步捕获的 Streams


1.进一步确认以上配置的初始化参数、用户权限及数据库连接均已经到位



2.创建示例使用的用户模式以及模式下的示例用表,该步骤在源端和目标端都需要执行:



SQL> create user user1 identified by user1    default tablespace   users   temporary
tablespace temp;
User created.


SQL> grant connect,resource to user1;
Grant succeeded.


SQL> conn user1/user1
Connected.


SQL> create table TAB1(   empid number primary key,   name varchar2(10), comments
varchar2(10) );
Table created.
3.以 Streams 管理员身份登录到源端数据库和目标端数据库中,执行以下创建队列(queue)的操作:



BEGIN
DBMS_STREAMS_ADM.SET_UP_QUEUE(
queue_table => 'strmadmin.sync_queue_table',
queue_name => 'strmadmin.sync_cap_queue',
queue_user => 'user1');
END;
/




4.在目标端数据库中创建 apply 队列:



BEGIN

DBMS_STREAMS_ADM.SET_UP_QUEUE(

queue_table => 'strmadmin.sync_queue_table',

queue_name => 'strmadmin.sync_apply_queue',

queue_user => 'user1');
END;
/




5.在目标端数据库创建 apply 进程,但暂时不启动它:



BEGIN

DBMS_APPLY_ADM.CREATE_APPLY(

queue_name => 'strmadmin.sync_apply_queue',

apply_name => 'sync_apply',

apply_captured => FALSE);
END;

/




6.在目标端数据库中为 apply 进程添加应用规则,该规则要求 SYNC_APPLY 应用进程将 SYNC_APPLY_QUEUE
队列中出现的所有 DML 变更 apply 到 USER1.TAB1 表上。
BEGIN

    DBMS_STREAMS_ADM.ADD_TABLE_RULES(

    table_name => 'user1.tab1',

    streams_type => 'apply',

    streams_name => 'sync_apply',

    queue_name => 'strmadmin.sync_apply_queue',

    source_database => 'MACLEAN');                 /*此处填入源端数据库的 global name */

    END;

    /




7.在源端数据库中创建 propagation 进程将捕获到的变更传播到目标端数据库中。使用
ADD_TABLE_PROPAGATION_RULES 存储过程创建该 propagation 及其白名规则(positive rule set)。在源端数
据库中以 STRMADMIN 身份登录,创建该 propagation:




BEGIN

DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES(

table_name => 'user1.tab1',

streams_name => 'sync_prop',

source_queue_name => 'strmadmin.sync_cap_queue',

destination_queue_name => 'strmadmin.sync_apply_queue@DW',       /*@后面跟上连接到目标端
数据库的 dblink 名字 */

 source_database => 'MACLEAN',                           /* 此处填入源端数据库的 global name
*/

queue_to_queue => TRUE);
END;
/


8.在源端数据库中创建同步捕获进程(synchronous capture),且仅捕捉 USER1.TAB1 表上的变更:



BEGIN

    DBMS_STREAMS_ADM.ADD_TABLE_RULES(

    table_name => 'user1.tab1',

    streams_type => 'sync_capture',

    streams_name => 'sync_capture',

    queue_name => 'strmadmin.sync_cap_queue');
END;
/


9.为目标端数据库中的 USER1.TAB1 表设置实例化 SCN 号(instantiation SCN):
DECLARE

    iscn NUMBER; -- Variable to hold instantiation SCN value

    BEGIN

    iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();

 DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@DW(                /*@后面跟上连接到目标端数据库的
dblink 名字*/

    source_object_name => 'USER1.TAB1',

 source_database_name => 'MACLEAN',                                      /* 此处填入源端
数据库的 global name */

    instantiation_scn => iscn);
END;




10.在目标端数据库中启动 apply:



BEGIN

    DBMS_APPLY_ADM.START_APPLY(

apply_name => 'sync_apply');
END;
/




因为同步捕获进程会被隐式地启动,所以我们在这里无需去手动启动 sync_capture 进程。
同时我们无法从 dba_capture 视图中找到同步捕获进程的信息,因为它们记录在 dba_sync_capture 视图中:




SQL> set linesize 200


SQL> select state , capture_name from v$streams_capture;


no rows selected


SQL> select status from dba_capture;


no rows selected


SQL> select capture_name, queue_name, rule_set_name, capture_user

    2   from dba_sync_capture;
CAPTURE_NAME                      QUEUE_NAME                        RULE_SET_NAME
CAPTURE_USER
------------------------------ ------------------------------
------------------------------ ------------------------------
SYNC_CAPTURE                      SYNC_CAP_QUEUE                    RULESET$_8 STRMADMIN




可以通过以下 SQL 语句了解同步捕获所涉及的表名:



col streams_name for a20
col rule_name for a20


SELECT r.STREAMS_NAME,

   r.RULE_NAME,

   r.SUBSETTING_OPERATION,

   t.TABLE_OWNER,

   t.TABLE_NAME,

   t.ENABLED

 FROM DBA_STREAMS_TABLE_RULES r, DBA_SYNC_CAPTURE_TABLES t

WHERE r.STREAMS_TYPE = 'SYNC_CAPTURE'

 AND r.TABLE_OWNER = t.TABLE_OWNER

 AND r.TABLE_NAME = t.TABLE_NAME;


STREAMS_NAME          RULE_NAME                SUBSET TABLE_OWNER
TABLE_NAME                        ENA
-------------------- -------------------- ------ ------------------------------
------------------------------ ---
SYNC_CAPTURE          TAB17                           USER1                           TAB1 YES




也可以通过以下 SQL 语句查询了解那些列上不支持使用同步捕获(synchronous captures):




SELECT OWNER, TABLE_NAME, COLUMN_NAME, SYNC_CAPTURE_REASON

 FROM DBA_STREAMS_COLUMNS

WHERE SYNC_CAPTURE_VERSION IS NULL;


OWNER                             TABLE_NAME                        COLUMN_NAME
SYNC_CAPTURE_REASON
------------------------------ ------------------------------
------------------------------ ---------------------------------------
IX                               AQ$_ORDERS_QUEUETABLE_T     MSGID
AQ queue table
IX                               AQ$_ORDERS_QUEUETABLE_H     HINT
AQ queue table
IX                               AQ$_ORDERS_QUEUETABLE_I     HINT
AQ queue table
IX                               AQ$_ORDERS_QUEUETABLE_I     MSGID
AQ queue table
IX                               AQ$_ORDERS_QUEUETABLE_I     MSG_LOCAL_ORDER_NO
AQ queue table
IX                               AQ$_STREAMS_QUEUE_TABLE_T   ACTION
AQ queue table
IX                               AQ$_STREAMS_QUEUE_TABLE_H   NAME AQ queue table




11.测试并验证数据复制的情况

SQL> conn user1/user1
Connected.


SQL>    insert into tab1 values(8,'MACLEAN','PERFECT');
1 row created.


SQL> commit;
Commit complete.


/* 连接到目标端数据库并查询 TAB1 表 */


SQL> conn user1/user1@DW
Connected.


SQL> select * from tab1;


     EMPID NAME      COMMENTS
---------- ---------- ----------

       8 MACLEAN    PERFECT




12.停止并清理 Streams 环境;注意以下步骤会将已有的 Streams 配置移除,因此在执行前应当保证数据库中没有配置
其他 Streams:
exec dbms_apply_adm.stop_apply('sync_apply');                           /* 目标端数据库 */
exec dbms_capture_adm.drop_capture('sync_capture',true);     /* 源端数据库   */

exec dbms_apply_adm.drop_apply('sync_apply',true);             /* 目标端数据库 */

exec dbms_streams_adm.remove_streams_configuration;        /* both */



同时删除 Streams 管理员和示例所用用户模式:

drop user user1 cascade;

drop user strmadmin cascade;




© 2011, www.oracledatabase12g.com. 版权所有.文章允许转载,但必须以链接方式注明源地址,否则追求法律责
任.

More Related Content

What's hot

深入了解Oracle自动内存管理asmm
深入了解Oracle自动内存管理asmm深入了解Oracle自动内存管理asmm
深入了解Oracle自动内存管理asmmmaclean liu
 
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理maclean liu
 
【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 zmaclean liu
 
Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹Chien Chung Shen
 
Oracle使用者安全設定
Oracle使用者安全設定Oracle使用者安全設定
Oracle使用者安全設定Chien Chung Shen
 
MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220Jinrong Ye
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rmanted-xu
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance managementted-xu
 
百度分布式数据实践与进展
百度分布式数据实践与进展百度分布式数据实践与进展
百度分布式数据实践与进展yp_fangdong
 
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11g
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11gOracle管理藝術第1章 在Linux作業體統安裝Oracle 11g
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11gChien Chung Shen
 
CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)Chengjen Lee
 
Memcached内存分析、调优、集群
Memcached内存分析、调优、集群Memcached内存分析、调优、集群
Memcached内存分析、调优、集群hik_lhz
 
Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例maclean liu
 
Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1Zianed Hou
 
Cassandra的初步使用及一些简单的操作
Cassandra的初步使用及一些简单的操作Cassandra的初步使用及一些简单的操作
Cassandra的初步使用及一些简单的操作zhubin885
 
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410maclean liu
 
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)Chengjen Lee
 

What's hot (20)

深入了解Oracle自动内存管理asmm
深入了解Oracle自动内存管理asmm深入了解Oracle自动内存管理asmm
深入了解Oracle自动内存管理asmm
 
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理【Maclean liu技术分享】深入理解oracle中mutex的内部原理
【Maclean liu技术分享】深入理解oracle中mutex的内部原理
 
【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z【Ask maclean技术分享】oracle dba技能列表 z
【Ask maclean技术分享】oracle dba技能列表 z
 
Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹Oracle 資料庫檔案介紹
Oracle 資料庫檔案介紹
 
Oracle使用者安全設定
Oracle使用者安全設定Oracle使用者安全設定
Oracle使用者安全設定
 
MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220MySQL 6.0 下的cluster + replicate - 20080220
MySQL 6.0 下的cluster + replicate - 20080220
 
Oracle 資料庫建立
Oracle 資料庫建立Oracle 資料庫建立
Oracle 資料庫建立
 
9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman9, OCP - restore and recovery with rman
9, OCP - restore and recovery with rman
 
3, OCP - instance management
3, OCP - instance management3, OCP - instance management
3, OCP - instance management
 
百度分布式数据实践与进展
百度分布式数据实践与进展百度分布式数据实践与进展
百度分布式数据实践与进展
 
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11g
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11gOracle管理藝術第1章 在Linux作業體統安裝Oracle 11g
Oracle管理藝術第1章 在Linux作業體統安裝Oracle 11g
 
Mysql集群
Mysql集群Mysql集群
Mysql集群
 
CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)CKAN 技術介紹 (基礎篇)
CKAN 技術介紹 (基礎篇)
 
Memcached内存分析、调优、集群
Memcached内存分析、调优、集群Memcached内存分析、调优、集群
Memcached内存分析、调优、集群
 
Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例Sql调优clustering factor影响数据删除速度一例
Sql调优clustering factor影响数据删除速度一例
 
Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1Oracle试题Exam Adminv1.1
Oracle试题Exam Adminv1.1
 
Cassandra的初步使用及一些简单的操作
Cassandra的初步使用及一些简单的操作Cassandra的初步使用及一些简单的操作
Cassandra的初步使用及一些简单的操作
 
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
【Maclean liu技术分享】开oracle调优鹰眼,深入理解awr性能报告 第二讲 正式版 20130410
 
Oracle Instance 介紹
Oracle Instance 介紹Oracle Instance 介紹
Oracle Instance 介紹
 
CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)CKAN 技術介紹 (開發篇)
CKAN 技術介紹 (開發篇)
 

Viewers also liked

Экспедиция X-territory (ноябр, 2010)
Экспедиция X-territory (ноябр, 2010)Экспедиция X-territory (ноябр, 2010)
Экспедиция X-territory (ноябр, 2010)Eleonor Fedorey
 
Measuring of non ionising radiation due to wi fi, dect, 4g (lte) or radar- sc...
Measuring of non ionising radiation due to wi fi, dect, 4g (lte) or radar- sc...Measuring of non ionising radiation due to wi fi, dect, 4g (lte) or radar- sc...
Measuring of non ionising radiation due to wi fi, dect, 4g (lte) or radar- sc...Leishman Associates
 
Keeping radiation management at beverley uranium mine at best practice woods
Keeping radiation management at beverley uranium mine at best practice  woodsKeeping radiation management at beverley uranium mine at best practice  woods
Keeping radiation management at beverley uranium mine at best practice woodsLeishman Associates
 
TripAdvisor online policy primer
TripAdvisor online policy primerTripAdvisor online policy primer
TripAdvisor online policy primerleannex
 
Biochemistry preastation
Biochemistry preastationBiochemistry preastation
Biochemistry preastationrkgene
 
Content Marketing 101: A Step-by-Step Playbook
Content Marketing 101: A Step-by-Step PlaybookContent Marketing 101: A Step-by-Step Playbook
Content Marketing 101: A Step-by-Step PlaybookJay Acunzo
 
b. angustia marketing plan
b. angustia marketing planb. angustia marketing plan
b. angustia marketing planbamangustia
 
New Zealand Franchising Confidence Index | October 2012
New Zealand Franchising Confidence Index | October 2012New Zealand Franchising Confidence Index | October 2012
New Zealand Franchising Confidence Index | October 2012Franchize Consultants
 
Collaboaration tools for non profit agencies
Collaboaration tools for non profit agenciesCollaboaration tools for non profit agencies
Collaboaration tools for non profit agenciesmewren
 
Plantilla3
Plantilla3Plantilla3
Plantilla3bugatito
 
Expo wc organiser
Expo wc organiserExpo wc organiser
Expo wc organiserlaurenztack
 
Modular energie supply
Modular energie supplyModular energie supply
Modular energie supplylaurenztack
 
Evaluating my magazine
Evaluating my magazineEvaluating my magazine
Evaluating my magazineabcdsmile
 
Ifc 2010 workshop david and goliath
Ifc 2010 workshop   david and goliathIfc 2010 workshop   david and goliath
Ifc 2010 workshop david and goliathJason Potts
 
Assessing the biological effects form low dose exposures similar to medical a...
Assessing the biological effects form low dose exposures similar to medical a...Assessing the biological effects form low dose exposures similar to medical a...
Assessing the biological effects form low dose exposures similar to medical a...Leishman Associates
 
Closing Work Orders
Closing Work OrdersClosing Work Orders
Closing Work Orderskalebhanly
 

Viewers also liked (20)

Экспедиция X-territory (ноябр, 2010)
Экспедиция X-territory (ноябр, 2010)Экспедиция X-territory (ноябр, 2010)
Экспедиция X-territory (ноябр, 2010)
 
Measuring of non ionising radiation due to wi fi, dect, 4g (lte) or radar- sc...
Measuring of non ionising radiation due to wi fi, dect, 4g (lte) or radar- sc...Measuring of non ionising radiation due to wi fi, dect, 4g (lte) or radar- sc...
Measuring of non ionising radiation due to wi fi, dect, 4g (lte) or radar- sc...
 
Keeping radiation management at beverley uranium mine at best practice woods
Keeping radiation management at beverley uranium mine at best practice  woodsKeeping radiation management at beverley uranium mine at best practice  woods
Keeping radiation management at beverley uranium mine at best practice woods
 
TripAdvisor online policy primer
TripAdvisor online policy primerTripAdvisor online policy primer
TripAdvisor online policy primer
 
BPM & KM: They Converge Quite Nicely
BPM & KM: They Converge Quite NicelyBPM & KM: They Converge Quite Nicely
BPM & KM: They Converge Quite Nicely
 
Biochemistry preastation
Biochemistry preastationBiochemistry preastation
Biochemistry preastation
 
Content Marketing 101: A Step-by-Step Playbook
Content Marketing 101: A Step-by-Step PlaybookContent Marketing 101: A Step-by-Step Playbook
Content Marketing 101: A Step-by-Step Playbook
 
b. angustia marketing plan
b. angustia marketing planb. angustia marketing plan
b. angustia marketing plan
 
Tbo
TboTbo
Tbo
 
New Zealand Franchising Confidence Index | October 2012
New Zealand Franchising Confidence Index | October 2012New Zealand Franchising Confidence Index | October 2012
New Zealand Franchising Confidence Index | October 2012
 
Collaboaration tools for non profit agencies
Collaboaration tools for non profit agenciesCollaboaration tools for non profit agencies
Collaboaration tools for non profit agencies
 
Svithjod
SvithjodSvithjod
Svithjod
 
Plantilla3
Plantilla3Plantilla3
Plantilla3
 
Expo wc organiser
Expo wc organiserExpo wc organiser
Expo wc organiser
 
Modular energie supply
Modular energie supplyModular energie supply
Modular energie supply
 
Evaluating my magazine
Evaluating my magazineEvaluating my magazine
Evaluating my magazine
 
History project!
History project!History project!
History project!
 
Ifc 2010 workshop david and goliath
Ifc 2010 workshop   david and goliathIfc 2010 workshop   david and goliath
Ifc 2010 workshop david and goliath
 
Assessing the biological effects form low dose exposures similar to medical a...
Assessing the biological effects form low dose exposures similar to medical a...Assessing the biological effects form low dose exposures similar to medical a...
Assessing the biological effects form low dose exposures similar to medical a...
 
Closing Work Orders
Closing Work OrdersClosing Work Orders
Closing Work Orders
 

Similar to 11g新特性streams同步捕获

数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器Leyi (Kamus) Zhang
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert systemted-xu
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuningted-xu
 
Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期yiditushe
 
A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步WASecurity
 
真正读懂oracle sql执行计划execution plan v20131025
真正读懂oracle sql执行计划execution plan v20131025真正读懂oracle sql执行计划execution plan v20131025
真正读懂oracle sql执行计划execution plan v20131025maclean liu
 
了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinition了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinitionmaclean liu
 
Itpub电子杂志(第五期)
Itpub电子杂志(第五期)Itpub电子杂志(第五期)
Itpub电子杂志(第五期)yiditushe
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 Lheima911
 
Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作maclean liu
 
美团点评技术沙龙010-美团Atlas实践
美团点评技术沙龙010-美团Atlas实践美团点评技术沙龙010-美团Atlas实践
美团点评技术沙龙010-美团Atlas实践美团点评技术团队
 
Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法maclean liu
 
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptOracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptjames tong
 
Mysql handlersocket
Mysql handlersocketMysql handlersocket
Mysql handlersocketpwesh
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networkingted-xu
 
Row Set初步学习V1.1
Row Set初步学习V1.1Row Set初步学习V1.1
Row Set初步学习V1.1Zianed Hou
 
Intorduction to the cbo optimizer
Intorduction to the cbo optimizerIntorduction to the cbo optimizer
Intorduction to the cbo optimizerZhaoyang Wang
 
MySQL Replication新功能介绍
MySQL Replication新功能介绍 MySQL Replication新功能介绍
MySQL Replication新功能介绍 orczhou
 
1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能WASecurity
 
11g r2新特性之standby max_data_delay
11g r2新特性之standby max_data_delay11g r2新特性之standby max_data_delay
11g r2新特性之standby max_data_delaymaclean liu
 

Similar to 11g新特性streams同步捕获 (20)

数据库性能诊断的七种武器
数据库性能诊断的七种武器数据库性能诊断的七种武器
数据库性能诊断的七种武器
 
11, OCP - awr & alert system
11, OCP - awr & alert system11, OCP - awr & alert system
11, OCP - awr & alert system
 
12, OCP - performance tuning
12, OCP - performance tuning12, OCP - performance tuning
12, OCP - performance tuning
 
Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期Csdn Emag(Oracle)第二期
Csdn Emag(Oracle)第二期
 
A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步A.oracle 数据字典与脚本初步
A.oracle 数据字典与脚本初步
 
真正读懂oracle sql执行计划execution plan v20131025
真正读懂oracle sql执行计划execution plan v20131025真正读懂oracle sql执行计划execution plan v20131025
真正读懂oracle sql执行计划execution plan v20131025
 
了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinition了解Oracle在线重定义online redefinition
了解Oracle在线重定义online redefinition
 
Itpub电子杂志(第五期)
Itpub电子杂志(第五期)Itpub电子杂志(第五期)
Itpub电子杂志(第五期)
 
Install Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 LInstall Oracle11g For Aix 5 L
Install Oracle11g For Aix 5 L
 
Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作Oracle数据库升级前必要的准备工作
Oracle数据库升级前必要的准备工作
 
美团点评技术沙龙010-美团Atlas实践
美团点评技术沙龙010-美团Atlas实践美团点评技术沙龙010-美团Atlas实践
美团点评技术沙龙010-美团Atlas实践
 
Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法Oracle中比对2张表之间数据是否一致的几种方法
Oracle中比对2张表之间数据是否一致的几种方法
 
Oracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.pptOracle数据库体系结构简介.ppt
Oracle数据库体系结构简介.ppt
 
Mysql handlersocket
Mysql handlersocketMysql handlersocket
Mysql handlersocket
 
4, OCP - oracle networking
4, OCP - oracle networking4, OCP - oracle networking
4, OCP - oracle networking
 
Row Set初步学习V1.1
Row Set初步学习V1.1Row Set初步学习V1.1
Row Set初步学习V1.1
 
Intorduction to the cbo optimizer
Intorduction to the cbo optimizerIntorduction to the cbo optimizer
Intorduction to the cbo optimizer
 
MySQL Replication新功能介绍
MySQL Replication新功能介绍 MySQL Replication新功能介绍
MySQL Replication新功能介绍
 
1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能1.oracle 11g 用户管理新功能
1.oracle 11g 用户管理新功能
 
11g r2新特性之standby max_data_delay
11g r2新特性之standby max_data_delay11g r2新特性之standby max_data_delay
11g r2新特性之standby max_data_delay
 

More from maclean liu

Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践maclean liu
 
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアルOracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアルmaclean liu
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略maclean liu
 
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案maclean liu
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例maclean liu
 
PRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health CheckPRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health Checkmaclean liu
 
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案maclean liu
 
Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响maclean liu
 
【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案maclean liu
 
Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2maclean liu
 
Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2maclean liu
 
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1maclean liu
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 maclean liu
 
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangOrclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangmaclean liu
 
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24maclean liu
 
追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?maclean liu
 
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践maclean liu
 
Prm dul is an oracle database recovery tool database
Prm dul is an oracle database recovery tool   databasePrm dul is an oracle database recovery tool   database
Prm dul is an oracle database recovery tool databasemaclean liu
 
Oracle prm dul, jvm and os
Oracle prm dul, jvm and osOracle prm dul, jvm and os
Oracle prm dul, jvm and osmaclean liu
 
Oracle dba必备技能 使用os watcher工具监控系统性能负载
Oracle dba必备技能   使用os watcher工具监控系统性能负载Oracle dba必备技能   使用os watcher工具监控系统性能负载
Oracle dba必备技能 使用os watcher工具监控系统性能负载maclean liu
 

More from maclean liu (20)

Mysql企业备份发展及实践
Mysql企业备份发展及实践Mysql企业备份发展及实践
Mysql企业备份发展及实践
 
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアルOracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
Oracle専用データ復旧ソフトウェアprm dulユーザーズ・マニュアル
 
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
【诗檀软件 郭兆伟-技术报告】跨国企业级Oracle数据库备份策略
 
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
基于Oracle 12c data guard & far sync的低资源消耗两地三数据中心容灾方案
 
TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例TomCat迁移步骤简述以及案例
TomCat迁移步骤简述以及案例
 
PRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health CheckPRM DUL Oracle Database Health Check
PRM DUL Oracle Database Health Check
 
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
dbdao.com 汪伟华 my-sql-replication复制高可用配置方案
 
Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响Vbox virtual box在oracle linux 5 - shoug 梁洪响
Vbox virtual box在oracle linux 5 - shoug 梁洪响
 
【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案【诗檀软件】Mysql高可用方案
【诗檀软件】Mysql高可用方案
 
Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2Shoug at apouc2015 4min pitch_biotwang_v2
Shoug at apouc2015 4min pitch_biotwang_v2
 
Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2Apouc 4min pitch_biotwang_v2
Apouc 4min pitch_biotwang_v2
 
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
使用Oracle osw analyzer工具分析oswbb日志,并绘制系统性能走势图1
 
诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础 诗檀软件 Oracle开发优化基础
诗檀软件 Oracle开发优化基础
 
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wangOrclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
Orclrecove 1 pd-prm-dul testing for oracle database recovery_20141030_biot_wang
 
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
诗檀软件 – Oracle数据库修复专家 oracle数据块损坏知识2014-10-24
 
追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?追求Jdbc on oracle最佳性能?如何才好?
追求Jdbc on oracle最佳性能?如何才好?
 
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
使用Virtual box在oracle linux 5.7上安装oracle database 11g release 2 rac的最佳实践
 
Prm dul is an oracle database recovery tool database
Prm dul is an oracle database recovery tool   databasePrm dul is an oracle database recovery tool   database
Prm dul is an oracle database recovery tool database
 
Oracle prm dul, jvm and os
Oracle prm dul, jvm and osOracle prm dul, jvm and os
Oracle prm dul, jvm and os
 
Oracle dba必备技能 使用os watcher工具监控系统性能负载
Oracle dba必备技能   使用os watcher工具监控系统性能负载Oracle dba必备技能   使用os watcher工具监控系统性能负载
Oracle dba必备技能 使用os watcher工具监控系统性能负载
 

11g新特性streams同步捕获

  • 1. 11g 新特性 Streams 同步 捕获 by Maclean.liu liu.maclean@gmail.com www.oracledatabase12g.com
  • 2. About Me l Email:liu.maclean@gmail.com l Blog:www.oracledatabase12g.com l Oracle Certified Database Administrator Master 10g and 11g l Over 6 years experience with Oracle DBA technology l Over 7 years experience with Linux technology l Member Independent Oracle Users Group l Member All China Users Group l Presents for advanced Oracle topics: RAC, DataGuard, Performance Tuning and Oracle Internal.
  • 3. 11g 中引入了新的 Streams 特性:Synchronous Capture 同步捕获。不同于传统 Streams 的捕获机制, Synchronous Capture 同步捕获不基于归档日志或者在线重做日志来捕捉数据库中的变化。取而代之,同步捕获 使用另一种内部机制来捕捉数据库中的变化并对这些捕获的变化实施格式化,最终形成一条 LCR(Logical change Record)。这些由同步捕获捕捉到得记录被称为 persistent LCRs。同步捕捉总是将记录入列(enqueue)到一个提 交时队列中(commit-time queue)以保证事务的顺序准确。 即便我们采用了同步捕捉来替代传统的捕捉方式,propagation 和 apply 并不会有什么不同,这我们无需担忧。 同步捕获可以捕捉由 UPDATE、INSERT、DELETE 和 MERGE 四种 DML 语句产生的 DML 变化。因为其不依赖 于重做和归档的特性,其甚至可以被用在非归档模式下,并且不要求打开任何追加日志。 同步捕捉可能适用于以下几种情景中: 1. 无法使用基于重做(redo-based)的传统捕获方式(例如在 Oracle database Standards Edition 中) 2. 无法使用重做或基于日志挖掘相关的功能,但可以用到其他 Streams 进程 3. 要求在用户事务发生的同时执行捕获 4. 捕获的变化被要求存放在磁盘上的队列中 5. 克隆较少更新的表上的数据 同步捕获支持对以下数据类型列的 DML 变更捕捉: • VARCHAR2 • NVARCHAR2 • NUMBER • FLOAT • DATE • BINARY_FLOAT • BINARY_DOUBLE • TIMESTAMP • TIMESTAMP WITH TIME ZONE • TIMESTAMP WITH LOCAL TIME ZONE
  • 4. INTERVAL YEAR TO MONTH • INTERVAL DAY TO SECOND • RAW • CHAR • NCHAR • UROWID 需要注意的是不同于传统捕获方式,同步捕获不能使用如 ADD_SCHEMA_RULES 或 ADD_GLOBAL_RULES 存 储过程建立。同步捕获仅能通过 ADD_TABLE_RULES 建立白名规则(table rule with a positive rule set),而不支 持建立黑名规则(negative rule set)。 下面我们通过实例来体验一下该同步捕获新特性。 一、首先我们需要配置 Streams 所要求的软件环境和前提条件,这包括: 1.确保合理设置 Streams 相关的初始化参数,可以参考<How to setup Oracle Streams Bi-Directional>一文中 Streams 推荐的初始化参数的配置 2.在各个数据库中创建 Streams 管理员用户(一般为 strmadmin) [oracle@rh2 ~]$ export ORACLE_SID=MACLEAN [oracle@rh2 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Wed Apr 6 15:54:51 2011 create user STRMADMIN identified by STRMADMIN default tablespace USERS quota unlimited on USERS; Grant DBA TO STRMADMIN begin DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE('STRMADMIN'); end; /
  • 5. GRANT SELECT ANY DICTIONARY TO STRMADMIN; grant insert any table TO STRMADMIN; grant update any table TO STRMADMIN; grant delete any table TO STRMADMIN; grant select any table TO STRMADMIN; grant alter any table TO STRMADMIN; grant read on directory data_pump_dir to strmadmin; grant write on directory data_pump_dir to strmadmin; 3.在源端数据库(source database)以 STRMADMIN 使用 sqlplus 登录,并创建以 STRMADMIN 用户身份连接到目 标端数据库中的数据库连接(database link): SQL> conn strmadmin/STRMADMIN Connected. SQL> create database link DW connect to strmadmin identified by STRMADMIN using 'DW'; Database link created. 二、正式开始配置使用同步捕获的 Streams 1.进一步确认以上配置的初始化参数、用户权限及数据库连接均已经到位 2.创建示例使用的用户模式以及模式下的示例用表,该步骤在源端和目标端都需要执行: SQL> create user user1 identified by user1 default tablespace users temporary tablespace temp; User created. SQL> grant connect,resource to user1; Grant succeeded. SQL> conn user1/user1 Connected. SQL> create table TAB1( empid number primary key, name varchar2(10), comments varchar2(10) ); Table created.
  • 6. 3.以 Streams 管理员身份登录到源端数据库和目标端数据库中,执行以下创建队列(queue)的操作: BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE( queue_table => 'strmadmin.sync_queue_table', queue_name => 'strmadmin.sync_cap_queue', queue_user => 'user1'); END; / 4.在目标端数据库中创建 apply 队列: BEGIN DBMS_STREAMS_ADM.SET_UP_QUEUE( queue_table => 'strmadmin.sync_queue_table', queue_name => 'strmadmin.sync_apply_queue', queue_user => 'user1'); END; / 5.在目标端数据库创建 apply 进程,但暂时不启动它: BEGIN DBMS_APPLY_ADM.CREATE_APPLY( queue_name => 'strmadmin.sync_apply_queue', apply_name => 'sync_apply', apply_captured => FALSE); END; / 6.在目标端数据库中为 apply 进程添加应用规则,该规则要求 SYNC_APPLY 应用进程将 SYNC_APPLY_QUEUE 队列中出现的所有 DML 变更 apply 到 USER1.TAB1 表上。
  • 7. BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'user1.tab1', streams_type => 'apply', streams_name => 'sync_apply', queue_name => 'strmadmin.sync_apply_queue', source_database => 'MACLEAN'); /*此处填入源端数据库的 global name */ END; / 7.在源端数据库中创建 propagation 进程将捕获到的变更传播到目标端数据库中。使用 ADD_TABLE_PROPAGATION_RULES 存储过程创建该 propagation 及其白名规则(positive rule set)。在源端数 据库中以 STRMADMIN 身份登录,创建该 propagation: BEGIN DBMS_STREAMS_ADM.ADD_TABLE_PROPAGATION_RULES( table_name => 'user1.tab1', streams_name => 'sync_prop', source_queue_name => 'strmadmin.sync_cap_queue', destination_queue_name => 'strmadmin.sync_apply_queue@DW', /*@后面跟上连接到目标端 数据库的 dblink 名字 */ source_database => 'MACLEAN', /* 此处填入源端数据库的 global name */ queue_to_queue => TRUE); END; / 8.在源端数据库中创建同步捕获进程(synchronous capture),且仅捕捉 USER1.TAB1 表上的变更: BEGIN DBMS_STREAMS_ADM.ADD_TABLE_RULES( table_name => 'user1.tab1', streams_type => 'sync_capture', streams_name => 'sync_capture', queue_name => 'strmadmin.sync_cap_queue'); END; / 9.为目标端数据库中的 USER1.TAB1 表设置实例化 SCN 号(instantiation SCN):
  • 8. DECLARE iscn NUMBER; -- Variable to hold instantiation SCN value BEGIN iscn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER(); DBMS_APPLY_ADM.SET_TABLE_INSTANTIATION_SCN@DW( /*@后面跟上连接到目标端数据库的 dblink 名字*/ source_object_name => 'USER1.TAB1', source_database_name => 'MACLEAN', /* 此处填入源端 数据库的 global name */ instantiation_scn => iscn); END; 10.在目标端数据库中启动 apply: BEGIN DBMS_APPLY_ADM.START_APPLY( apply_name => 'sync_apply'); END; / 因为同步捕获进程会被隐式地启动,所以我们在这里无需去手动启动 sync_capture 进程。 同时我们无法从 dba_capture 视图中找到同步捕获进程的信息,因为它们记录在 dba_sync_capture 视图中: SQL> set linesize 200 SQL> select state , capture_name from v$streams_capture; no rows selected SQL> select status from dba_capture; no rows selected SQL> select capture_name, queue_name, rule_set_name, capture_user 2 from dba_sync_capture;
  • 9. CAPTURE_NAME QUEUE_NAME RULE_SET_NAME CAPTURE_USER ------------------------------ ------------------------------ ------------------------------ ------------------------------ SYNC_CAPTURE SYNC_CAP_QUEUE RULESET$_8 STRMADMIN 可以通过以下 SQL 语句了解同步捕获所涉及的表名: col streams_name for a20 col rule_name for a20 SELECT r.STREAMS_NAME, r.RULE_NAME, r.SUBSETTING_OPERATION, t.TABLE_OWNER, t.TABLE_NAME, t.ENABLED FROM DBA_STREAMS_TABLE_RULES r, DBA_SYNC_CAPTURE_TABLES t WHERE r.STREAMS_TYPE = 'SYNC_CAPTURE' AND r.TABLE_OWNER = t.TABLE_OWNER AND r.TABLE_NAME = t.TABLE_NAME; STREAMS_NAME RULE_NAME SUBSET TABLE_OWNER TABLE_NAME ENA -------------------- -------------------- ------ ------------------------------ ------------------------------ --- SYNC_CAPTURE TAB17 USER1 TAB1 YES 也可以通过以下 SQL 语句查询了解那些列上不支持使用同步捕获(synchronous captures): SELECT OWNER, TABLE_NAME, COLUMN_NAME, SYNC_CAPTURE_REASON FROM DBA_STREAMS_COLUMNS WHERE SYNC_CAPTURE_VERSION IS NULL; OWNER TABLE_NAME COLUMN_NAME SYNC_CAPTURE_REASON ------------------------------ ------------------------------ ------------------------------ ---------------------------------------
  • 10. IX AQ$_ORDERS_QUEUETABLE_T MSGID AQ queue table IX AQ$_ORDERS_QUEUETABLE_H HINT AQ queue table IX AQ$_ORDERS_QUEUETABLE_I HINT AQ queue table IX AQ$_ORDERS_QUEUETABLE_I MSGID AQ queue table IX AQ$_ORDERS_QUEUETABLE_I MSG_LOCAL_ORDER_NO AQ queue table IX AQ$_STREAMS_QUEUE_TABLE_T ACTION AQ queue table IX AQ$_STREAMS_QUEUE_TABLE_H NAME AQ queue table 11.测试并验证数据复制的情况 SQL> conn user1/user1 Connected. SQL> insert into tab1 values(8,'MACLEAN','PERFECT'); 1 row created. SQL> commit; Commit complete. /* 连接到目标端数据库并查询 TAB1 表 */ SQL> conn user1/user1@DW Connected. SQL> select * from tab1; EMPID NAME COMMENTS ---------- ---------- ---------- 8 MACLEAN PERFECT 12.停止并清理 Streams 环境;注意以下步骤会将已有的 Streams 配置移除,因此在执行前应当保证数据库中没有配置 其他 Streams: exec dbms_apply_adm.stop_apply('sync_apply'); /* 目标端数据库 */
  • 11. exec dbms_capture_adm.drop_capture('sync_capture',true); /* 源端数据库 */ exec dbms_apply_adm.drop_apply('sync_apply',true); /* 目标端数据库 */ exec dbms_streams_adm.remove_streams_configuration; /* both */ 同时删除 Streams 管理员和示例所用用户模式: drop user user1 cascade; drop user strmadmin cascade; © 2011, www.oracledatabase12g.com. 版权所有.文章允许转载,但必须以链接方式注明源地址,否则追求法律责 任.