异步部署

1. 环境的配置准备

1.1.    数据库版本

SQL> select * from v$version;
BANNER
-----------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

1.2.    配置数据库参数

SQL> show parameter job_que
NAME                                 TYPE        VALUE
----------------------------------------------- job_queue_processes                  integer     1000SQL> show parameter streams_pool_size
NAME                                 TYPE        VALUE
-----------------------------------------------
streams_pool_size                    big integer 0SQL> show parameter sga_targ
NAME                                 TYPE        VALUE
-----------------------------------------------
sga_target                           big integer 0SQL> show parameter memory_targ
NAME                                 TYPE        VALUE
----------------------------------------------
memory_target                        big integer 472MSQL> show parameter java_pool
NAME                                 TYPE        VALUE
------------------------------------ -----------
java_pool_size                       big integer 0

SQL> alter system set streams_pool_size=50m ;System altered.SQL> show parameter java_poolNAME                                 TYPE        VALUE
------------------------------------ -----------
java_pool_size                       big integer 0
SQL> alter system set java_pool_size=50m;System altered.SQL> show parameter undo_retNAME                                 TYPE        VALUE
------------------------------------ -----------
undo_retention                       integer     900
SQL> alter system set undo_retention=3600;System altered.

SQL> show parameter streams_pool
NAME                                 TYPE        VALUE
------------------------------------ -----------
streams_pool_size                    big integer 52MSQL> show parameter java_pool
NAME                                 TYPE        VALUE
------------------------------------ -----------
java_pool_size                       big integer 52MSQL> show parameter undo_re
NAME                                 TYPE        VALUE
------------------------------------ -----------
undo_retention                       integer     3600

1.3.    开启归档及补充日志

SQL> archive log list
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u02/archivelog_dest
Oldest online log sequence     401
Next log sequence to archive   403
Current log sequence           403

SQL> alter database force logging;  Database altered.SQL> alter database add supplemental log data;  Database altered.SQL> select LOG_MODE,FORCE_LOGGING,SUPPLEMENTAL_LOG_DATA_MIN2  from v$database;LOG_MODE     FOR SUPPLEME
------------ --- --------
ARCHIVELOG   YES YES

1.4.    准备测试的表

SQL> conn scott/tiger
Connected.
SQL> create table test(id int,name varchar2(30),mark varchar2(50));Table created.SQL> select * from tab;TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
BONUS                          TABLE
DEPT                           TABLE
EMP                            TABLE
GTT                            TABLE
SALGRADE                       TABLE
TEMP                           TABLE
TEST                           TABLE7 rows selected.

2. 创建发布者和订阅者

2.1.    创建发布者/授权

SQL> create tablespace cdc_tbsp
datafile '/u02/app/oradata/ORCL/cdc_tbsp01.dbf' size 200m;Tablespace created.SQL> create user cdc_publisher identified by cdc_publisher
default tablespace cdc_tbsp temporary tablespace temp;User created.

SQL> grant create session TO cdc_publisher;Grant succeeded.SQL> grant create table TO cdc_publisher;Grant succeeded.SQL> grant create sequence TO cdc_publisher; Grant succeeded.SQL> grant create procedure TO cdc_publisher;  Grant succeeded.SQL> grant create any job TO cdc_publisher;  Grant succeeded.SQL> grant execute_catalog_role TO cdc_publisher; Grant succeeded.SQL> grant select_catalog_role TO cdc_publisher;  Grant succeeded.SQL> grant execute ON dbms_cdc_publish TO cdc_publisher;  Grant succeeded.SQL> grant execute ON dbms_lock TO cdc_publisher;  Grant succeeded.SQL> GRANT UNLIMITED TABLESPACE TO cdc_publisher;Grant succeeded.SQL> execute dbms_streams_auth.grant_admin_privilege('CDC_PUBLISHER');  PL/SQL procedure successfully completed.SQL> grant all on scott.test to cdc_publisher;Grant succeeded.

2.2.    创建订阅者/授权

SQL> create user cdc_subscriber identified by cdc_subscriber2  default tablespace cdc_tbsp temporary tablespace temp;User created.

SQL> grant create session TO cdc_subscriber;Grant succeeded.

3. 发布/订阅具体数据

3.1.    发布:准备源表(Source Table)

SQL> conn cdc_publisher/cdc_publisher
Connected.
SQL> BEGIN2  DBMS_CAPTURE_ADM.PREPARE_TABLE_INSTANTIATION(
TABLE_NAME => 'scott.test');3  END;4  /PL/SQL procedure successfully completed.

3.2.    发布:创建变更集(Data Set)

SQL> conn cdc_publisher/cdc_publisher
Connected.
SQL> BEGIN2  DBMS_CDC_PUBLISH.CREATE_CHANGE_SET(3  change_set_name => 'CDC_SCOTT_TEST',4  description => 'Change set for product info',5  change_source_name => 'HOTLOG_SOURCE',6  stop_on_ddl => 'y',7  begin_date => sysdate,8  end_date => sysdate+5);9  END;10  /PL/SQL procedure successfully completed.

3.3.    发布:创建变更表

SQL> BEGIN2     DBMS_CDC_PUBLISH.CREATE_CHANGE_TABLE(3     owner              => 'cdc_publisher',4     change_table_name  => 'cdc_test', 5     change_set_name    => 'CDC_SCOTT_TEST',6     source_schema      => 'SCOTT',7     source_table       => 'TEST',8     column_type_list   => 'ID NUMBER(5), NAME VARCHAR2(30),MARK VARCHAR2(50)',9     capture_values     => 'both',10     rs_id              => 'y',11     row_id             => 'n',12     user_id            => 'n',13     timestamp          => 'n',14     object_id          => 'n',15     source_colmap      => 'n',16     target_colmap      => 'y',17     options_string     => 'TABLESPACE CDC_TBSP');18  END;19  /PL/SQL procedure successfully completed.

3.4.    发布:激活变更集

SQL> BEGIN2     DBMS_CDC_PUBLISH.ALTER_CHANGE_SET(3        change_set_name => 'CDC_SCOTT_TEST',4        enable_capture => 'y');5  END;6  /PL/SQL procedure successfully completed.

SQL> grant select on  cdc_test to cdc_subscriber;Grant succeeded.

备注:其实到此cdc_subscriber用户已经可以检测到scott.test表的变更了

如下测试:

[oracle@std ~]$ sqlplus scott/tigerSQL*Plus: Release 11.2.0.1.0 Production on Wed Jan 13 17:03:17 2016Copyright (c) 1982, 2009, Oracle.  All rights reserved.Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL> insert into test values(1,'beijing','11');1 row created.SQL> commit;Commit complete.SQL> update test set name='shanghai' where id=1;1 row updated.SQL> commit;Commit complete.SQL> delete test where id=1;1 row deleted.SQL> commit;Commit complete.

SQL> conn cdc_subscriber/cdc_subscriber
Connected.
SQL> select t.operation$,t.commit_timestamp$,t.id,t.name,t.mark2  from cdc_publisher.cdc_test t;OP COMMIT_TIMESTAMP$          ID NAME                           MARK
-- ------------------ ---------- ------------------------------
I  13-JAN-16                   1 beijing                        11
UO 13-JAN-16                   1 beijing                        11
UN 13-JAN-16                   1 shanghai                       11
D  13-JAN-16                   1 shanghai                       11

3.5.    订阅:创建订阅集

SQL> conn cdc_subscriber/cdc_subscriber
Connected.
SQL> BEGIN2  dbms_cdc_subscribe.create_subscription(3  change_set_name=>'CDC_SCOTT_TEST',4  description=>'cdc scott subx', 5  subscription_name=>'CDC_SCOTT_SUB');6  END;7  /PL/SQL procedure successfully completed.

3.6.    订阅:开始订阅表信息

SQL> BEGIN2  dbms_cdc_subscribe.subscribe(3  subscription_name=>'CDC_SCOTT_SUB', 4  source_schema=>'SCOTT', 5  source_table=>'TEST',6  column_list=>'ID, NAME,MARK',7  subscriber_view=>'TEST_TEMP');8  END;9  /PL/SQL procedure successfully completed.

SQL> select * from tab;TNAME                          TABTYPE  CLUSTERID
------------------------------ ------- ----------
TEST_TEMP                      VIEW

3.7.    订阅:激活订阅

SQL> BEGIN2  dbms_cdc_subscribe.activate_subscription(3  subscription_name=>'CDC_SCOTT_SUB');4  END;5  /PL/SQL procedure successfully completed.

3.8.    订阅:扩展订阅窗口

SQL> conn cdc_subscriber/cdc_subscriber
Connected.
SQL> BEGIN2  dbms_cdc_subscribe.extend_window(3  subscription_name=>'CDC_SCOTT_SUB');4  END;5  /PL/SQL procedure successfully completed.

SQL> conn cdc_subscriber/cdc_subscriber
Connected.
SQL> select t.operation$,t.commit_timestamp$,t.id,t.name,t.mark2  from test_temp t; OP COMMIT_TIMESTAMP$          ID NAME                           MARK
-- ------------------ ---------- ------------------------------
I  13-JAN-16                   1 beijing                        11
UO 13-JAN-16                   1 beijing                        11
UN 13-JAN-16                   1 shanghai                       11
D  13-JAN-16                   1 shanghai                       11

4. 测试订阅发布

4.1.    SCOTT表更改

SQL> conn scott/tiger
Connected.
SQL> insert into test values(2,'renqinglei','aa');1 row created.SQL> commit;Commit complete.SQL> update test set mark='tt' where id=2;1 row updated.SQL> commit;Commit complete.SQL> delete test where id=2;1 row deleted.SQL> commit;Commit complete.

4.2.    查询数据发布情况

SQL> conn cdc_publisher/cdc_publisher
Connected.
SQL> select t.operation$,t.commit_timestamp$,t.id,t.name,t.mark2  from cdc_publisher.cdc_test t;OP COMMIT_TIMESTAMP$          ID NAME                           MARK
-- ------------------ ---------- ------------------------------
I  13-JAN-16                   1 beijing                        11
UO 13-JAN-16                   1 beijing                        11
UN 13-JAN-16                   1 shanghai                       11
D  13-JAN-16                   1 shanghai                       11
I  13-JAN-16                   2 renqinglei                     aa
UO 13-JAN-16                   2 renqinglei                     aa
UN 13-JAN-16                   2 renqinglei                     tt
D  13-JAN-16                   2 renqinglei                     tt8 rows selected.

4.3.    查询数据订阅情况

SQL> conn cdc_subscriber/cdc_subscriber
Connected.
SQL> select t.operation$,t.commit_timestamp$,t.id,t.name,t.mark2  from test_temp t; OP COMMIT_TIMESTAMP$          ID NAME                           MARK
-- ------------------ ---------- ------------------------------
I  13-JAN-16                   1 beijing                        11
UO 13-JAN-16                   1 beijing                        11
UN 13-JAN-16                   1 shanghai                       11
D  13-JAN-16                   1 shanghai                       11

发现订阅的数据没有变化,扩展一下订阅窗口:

SQL> conn cdc_subscriber/cdc_subscriber
Connected.
SQL> BEGIN2  dbms_cdc_subscribe.extend_window(3  subscription_name=>'CDC_SCOTT_SUB');4  END;5  /PL/SQL procedure successfully completed.SQL> select t.operation$,t.commit_timestamp$,t.id,t.name,t.mark2  from test_temp t; OP COMMIT_TIMESTAMP$          ID NAME                           MARK
-- ------------------ ---------- ------------------------------
I  13-JAN-16                   1 beijing                        11
UO 13-JAN-16                   1 beijing                        11
UN 13-JAN-16                   1 shanghai                       11
D  13-JAN-16                   1 shanghai                       11
I  13-JAN-16                   2 renqinglei                     aa
UO 13-JAN-16                   2 renqinglei                     aa
UN 13-JAN-16                   2 renqinglei                     tt
D  13-JAN-16                   2 renqinglei                     tt8 rows selected.

4.4.    清除变更数据集

SQL> conn cdc_subscriber/cdc_subscriber
Connected.
SQL> BEGIN2  DBMS_CDC_SUBSCRIBE.PURGE_WINDOW(3  subscription_name => 'CDC_SCOTT_SUB');4  END;5  /PL/SQL procedure successfully completed.SQL> select t.operation$,t.commit_timestamp$,t.id,t.name,t.mark2  from test_temp t;no rows selected

4.5.    重新生成变化数据

SQL> conn scott/tiger
Connected.
SQL> insert into test values(3,'shandong','hh');1 row created.SQL> insert into test values(4,'diankeyuan','hh');1 row created.SQL> commit;Commit complete.

SQL> conn cdc_publisher/cdc_publisher
Connected.
SQL> select t.operation$,t.commit_timestamp$,t.id,t.name,t.mark2  from cdc_publisher.cdc_test t;OP COMMIT_TIMESTAMP$          ID NAME                           MARK
-- ------------------ ---------- ------------------------------
I  13-JAN-16                   1 beijing                        11
UO 13-JAN-16                   1 beijing                        11
UN 13-JAN-16                   1 shanghai                       11
D  13-JAN-16                   1 shanghai                       11
I  13-JAN-16                   2 renqinglei                     aa
UO 13-JAN-16                   2 renqinglei                     aa
UN 13-JAN-16                   2 renqinglei                     tt
D  13-JAN-16                   2 renqinglei                     tt
I  13-JAN-16                   3 shandong                       hh
I  13-JAN-16                   4 diankeyuan                     hh10 rows selected.

SQL> conn cdc_subscriber/cdc_subscriber
Connected.
SQL> BEGIN2  dbms_cdc_subscribe.extend_window(3  subscription_name=>'CDC_SCOTT_SUB');4  END;5  /PL/SQL procedure successfully completed.SQL> select t.operation$,t.commit_timestamp$,t.id,t.name,t.mark2  from test_temp t;OP COMMIT_TIMESTAMP$          ID NAME                           MARK
-- ------------------ ---------- ------------------------------
I  13-JAN-16                   3 shandong                       hh
I  13-JAN-16                   4 diankeyuan                     hh

4.6.    删除发布的数据

SQL> conn cdc_publisher/cdc_publisher
Connected.
SQL> select t.operation$,t.commit_timestamp$,t.id,t.name,t.mark2  from cdc_publisher.cdc_test t;OP COMMIT_TIMESTAMP$          ID NAME                           MARK
-- ------------------ ---------- ------------------------------
I  13-JAN-16                   1 beijing                        11
UO 13-JAN-16                   1 beijing                        11
UN 13-JAN-16                   1 shanghai                       11
D  13-JAN-16                   1 shanghai                       11
I  13-JAN-16                   2 renqinglei                     aa
UO 13-JAN-16                   2 renqinglei                     aa
UN 13-JAN-16                   2 renqinglei                     tt
D  13-JAN-16                   2 renqinglei                     tt
I  13-JAN-16                   3 shandong                       hh
I  13-JAN-16                   4 diankeyuan                     hh10 rows selected.SQL> truncate cdc_test;
truncate cdc_test*
ERROR at line 1:
ORA-03290: Invalid truncate command - missing CLUSTER or TABLE keywordSQL> delete cdc_test;10 rows deleted.SQL> commit;Commit complete.SQL> select t.operation$,t.commit_timestamp$,t.id,t.name,t.mark2  from cdc_publisher.cdc_test t;no rows selected

转载于:https://www.cnblogs.com/myrunning/p/5329139.html

Oracle CDC配置案例相关推荐

  1. hp-ux+oracle双机配置案例

    Hp rx8640 主机两台,每台机器配两个hba光纤通道卡,4块千兆网卡(两块作心跳网卡,两块作服务网卡) ,两块143G硬盘,需要制作mirror disk,以实现操作系统冗余. 一个hp eva ...

  2. linux安装oracle 操作系统内核参数 aio,Oracle Study之案例--安装Oracle内核参数配置

    Oracle Study之案例--安装Oracle内核参数配置 在Linux系统下,安装Oracle之前,除了检查操作系统的硬件和软件是否满足安装需要之外,一个重点就是修改内核参数,其中最主要的是和内 ...

  3. 【ORACLE 高可用】ORACLE STREAM 基于用户的流复制配置 案例

    基于用户的流复制配置 案例 主数据库: 操作系统:REDHAT 5 IP地址:192.168.10.87 数据库:Oracle 11.2.0.3 ORACLE_SID:DB1 Global_name: ...

  4. oracle rac 环境配置文件,学习笔记:Oracle RAC spfile参数文件配置案例详解

    天萃荷净 rac中的spfile探讨,记录一下Oracle RAC搭建完成后关于spfile参数文件的配置案例,与更改RAC环境中参数文件的方法 今天朋友的的rac,因为被同事做数据库升级,分别在两个 ...

  5. linux oracle em使用,案例:五步解决linux操作系统Oracle EM乱码的问题

    天萃荷净 用户生产环境Linux系统Oracle数据库配置OEM使用时出现乱码情况 如果想以中文显示,则需要修改一些配置文件. 包括三个目录: $ORACLE_HOME/jdk/jre/lib $OR ...

  6. 5.5.35 - mysql 同步_MySQL 5.6.35主从同步配置案例

    MySQL 5.6主从同步配置案例分享 本文环境 主库:Redhat 6.5 x64 192.168.1.180 mysql-5.6.35 备库:Redhat 6.5 x64 192.168.1.18 ...

  7. linux oraclerman自动备份,Linux平台下的Oracle自动备份案例(使用RMAN)

    有个童鞋问rman的自动备份脚本程序,我之前有写过exp备份指定方案自动备份案例(Linux平台下的Oracle自动备份案例(使用exp工具)  http://www.linuxidc.com/Lin ...

  8. MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决

    MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 一.简介 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发.发布并支持的.有以下特点: MySQL是 ...

  9. oracle系列(三)oracle的配置与管理

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 前言:我们前面学习了安装oracle以及 ...

最新文章

  1. Facebook 开源高质量实例分割数据集 LVIS
  2. 零基础学python用什么书-零基础自学python3 好用的入门书籍推荐
  3. 40个亿非负整数中找到未出现的数
  4. sysctl: 深入使用Linux的必经之路
  5. Linux下各种常见环境变量的配置
  6. Linux系统中安装nodejs的步骤教程
  7. 一通电话被骗走4年生活费,她决定用技术守护千万用户
  8. 技术人应该如何投资时间?
  9. 完全二叉树基本操作(不含遍历)
  10. android项目编译命令行,命令行编译Android项目
  11. [react] React的displayName有什么作用?
  12. LeetCode 582. 杀死进程(图的遍历)
  13. Yii-- DeleteAll连表删除报错问题的解决方法
  14. APUE---chap3文件I/O---3.11原子操作
  15. 什么是冒烟测试?什么是回归测试?
  16. java将模糊的图片变清晰_java高清图生成缩略图变得模糊
  17. python哈姆雷特词频统计_python day 17 文本词频统计
  18. 一个大型高并发系统的性能调优会涉及到什么?
  19. OBS_Classic经典版框架
  20. 苹果5更新系统无服务器,苹果5手机系统更新不了出现无法检查更新怎么处理

热门文章

  1. 打工人,从 JMM 透析 volatile 与 synchronized 原理
  2. 熬了一个通宵,终于把 7 千万个 Key 删完了
  3. 在机器学习中处理大量数据!
  4. 美观实用!Star 过万,用 Python 做交互式图形的这款工具火了!
  5. 达观杯_构建模型(一)linearSVM
  6. 985高校挖出古墓!网友:毕业论文自己找上门来了
  7. Facebook 田渊栋:NeurIPS 2020 中了两篇,感觉还算不错
  8. Facebook工程师教你什么是随机森林,就算零基础也可以看懂 | 干货
  9. 我,斯坦福AI读博,李飞飞是师娘,5年5篇顶会论文,依然一度抑郁怀疑人生
  10. 实战 | 某小公司项目环境部署演变之路