ImageVerifierCode 换一换
格式:DOC , 页数:16 ,大小:113.50KB ,
资源ID:7022175      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/7022175.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(ORACLE_CDC.doc)为本站上传会员【xrp****65】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

ORACLE_CDC.doc

1、Oracle CDC操作手册 Oracle的增量数据处理方案 中联新时代 1. CDC简介 1.1. CDC是一种数据增量处理技术 在构建数据仓库系统的ETL过程中,增量数据的抽取是一个非常关键的环节.对解决方案一般有两点要求: l 准确性,能够将业务系统中的数据按一定的频率准确的取到数据仓库中 l 性能,不能对业务系统造成太大的压力,影响现有业务 目前,最为常用的ETL增量数据处理方式有三种: l 时间戳 l 日志对比(CDC) l 全面数据对比 三种方式各有优劣,时间戳是目前应用比较普遍的方式。在Oracle=中推出了两种主要的ETL方案,一种

2、是我们熟悉的物化视图(materialized view),另一种就是本文将要介绍的CDC组件(Change Data Capture 改变数据捕获)。 CDC 特性是在Oracle9i数据库中引入的。CDC能够帮助你识别从上次提取之后发生变化的数据。利用CDC,在对源表进行INSERT、UPDATE或 DELETE等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。 1.2. CDC与传统增量处理方式的对比分析 我们对比一下CDC方式与传统的全表对比与时间戳方式。 全表对比使用数据仓库中的

3、当前表与业务系统表进行对比,取得变化了的数据,典型是使用minus语句: SELECT * FROM new_version MINUS SELECT * FROM old_version; 使用全表对比有以下几方面的问题: l 需要将业务系统中表全部转输,造成很高的网络负载 l 需要对两版本的表进行全表扫描,性能代价非常高 l 无法反映数据的历史状态,如无法捕捉库存的历史变化记录 还有一种常用的方式是时间戳, 它是以业务表中某一个字段的值,作为判断新旧数据的标志。如,”病人费用记录”中的登记时间,每次只抽取上次抽取记录时间以后产生的数据。时间戳方式存在以下问题: l

4、无法捕获对时间戳以前数据的delete和update操作,在数据准确性上受到了一定的限制。而类似于ZLHIS这种业务系统对已经发生的数据进行update和delete操作非常普遍(如划价记录转收费记录),应用场景受到了限制。 l 要求业务系统的表必须一个可以标识新旧数据的列,而某些表没有设置这种列。 1.3. CDC的发布订立模型 CDC体系结构基于发布者/订阅者模型。发布者捕捉变化数据并提供给订阅者。订阅者使用从发布者那里获得的变化数据。通常,CDC系统拥有一个发布者和多个订阅者。发布者首先需要识别捕获变化数据所需的源表。然后,它捕捉变化的数据并将其保存在特别创建的变化表中。它还使

5、订阅者能够控制对变化数据的访问。订阅者需要清楚自己感兴趣的是哪些变化数据。一个订阅者可能不会对发布者发布的所有数据都感兴趣。 订阅者需要创建一个订阅者视图来访问经发布者授权可以访问的变化数据。 CDC有几个重要的基本概念需要先明确一下: l 源表(Source Table),业务数据库的需要捕获数据的源表 l 变化表(Change Table) ,保存从源表捕获的变化数据(包括各种DML产生的数据) l 变化集(Change Set),是保证事务一致性的数据集合。一个变化集对应多个变化表 l 订阅视图(Subscription View),提供给读取变化表数据的视图 l 订阅窗口

6、Subscription Window) ,定义了查看变化数据的时间范围.就象一个观察变化数据的滑动窗口。变化数据处理完成后,可以对清除订阅窗口。 1.4. CDC的同步与异步模式 l 同步模式,实时的捕获变化数据并存储到变化表中,发布者与订阅都位于同一数据库中。下图说明了同步模式的基本架构。 l 异步模式,以Oracle流复制技术为基础,由于流复制比较复杂,本文档不涉及异步模式的CDC 1.5. CDC相关的数据库对象 (Package) l 包(Package) n DBMS_CDC_PUBLISH, 用于定义发布操作 n DBMS_CDC_SUBSCRIB

7、E,用于定义订阅操作 l 角色 n EXECUTE_CATALOG_ROLE n SELECT_CATALOG_ROLE n CREATE TABLE and CREATE SESSION privileges n EXECUTE on the DBMS_CDC_PUBLISH package l 视图 n ALL_SOURCE_TABLES 源表 n ALL_PUBLISHED_COLUMNS 发布的表列 n All_Subscribed_Columns 订阅的表列 n All_Subscriptions 所有订阅 n All_Subscribed_Tab

8、les 已经订阅的表 2. CDC的实施步骤 2.1. 初始化 2.1.1. 设置初始化参数 由于CDC需要在后台开启作业,需要将参数JOB_QUEUE_PROCESSES增加2个,java_pool_size至少在50M以上。 SQL> alter system set job_queue_processes = 14; System altered SQL> alter system set java_pool_size = 50m; System altered SQL> 2.1.2. 创建订阅、发布用户、表空间 SQL> create

9、 tablespace ts_cdcpub datafile 'E:\oracle\product\10.2.0\oradata\orc1\ts_cdcpub.dbf' size 100m; Tablespace created SQL> create user cdc_publisher identified by cdc_publisher default tablespace ts_cdcpub; User created SQL> create user cdc_subcriber identified by cdc_subcriber default tablespace t

10、s_cdcpub; User created 2.1.3. 授予相关权限 SQL> GRANT CREATE SESSION TO cdc_publisher; Grant succeeded SQL> GRANT CREATE TABLE TO cdc_publisher; Grant succeeded SQL> GRANT CREATE TABLESPACE TO cdc_publisher; Grant succeeded SQL> GRANT UNLIMITED TABLESPACE TO cdc_publisher; Grant succeeded SQL>

11、GRANT SELECT_CATALOG_ROLE TO cdc_publisher; Grant succeeded SQL> GRANT EXECUTE_CATALOG_ROLE TO cdc_publisher; Grant succeeded SQL> GRANT EXECUTE ON DBMS_CDC_PUBLISH TO cdc_publisher; Grant succeeded SQL> grant create session to cdc_subcriber; 授权成功。 2.1.4. 在ZLHIS用户下,创建测试表 SQL> Create Table p

12、erson (id Number,Name Varchar(10),sex Varchar(2)); Table created SQL> insert into person values(0,'毛泽东','男'); 1 row inserted SQL> insert into person values(0,'彭德怀','男'); 1 row inserted SQL> insert into person values(0,'邓颖操','女'); 1 row inserted SQL> commit; Commit complete SQL> grant all o

13、n person to cdc_publisher; Grant succeeded SQL> grant all on person to cdc_subscriber; Grant succeeded 2.2. 发布数据 2.2.1. 创建改变集 在同步方式的CDC中,change_source_name参数必须使用默认的改变源, SYNC_SOURCE SQL> BEGIN 2 DBMS_CDC_PUBLISH.CREATE_CHANGE_SET( 3 change_set_name => 'person_change_set', --改

14、变集 4 description => 'Change set for person info', 5 change_source_name => 'SYNC_SOURCE'); 6 END; 7 / PL/SQL procedure successfully completed SQL> 2.2.2. 创建改变表 指定源table,和源模式,注意区别owner与source_schema,owner是指发布用户,而不是源表的所有者 SQL> BEGIN 2 DBMS_CDC_PUBLISH.CREATE_CHANGE_TABL

15、E( 3 owner => 'cdc_publisher', 4 change_table_name => 'person_ct', 5 change_set_name => 'person_change_set', 6 source_schema => 'zlhis', 7 source_table => 'person', 8 column_type_list => 'ID number,NAME VARCHAR2(10),sex varchar2(2)', 9 capture_values => 'both', 10 rs_i

16、d => 'y', 11 row_id => 'n', 12 user_id => 'n', 13 timestamp => 'n', 14 object_id => 'n', 15 source_colmap => 'y', 16 target_colmap => 'y', 17 options_string => 'TABLESPACE TS_CDCPUB'); 18 END; 19 / PL/SQL procedure successfully completed SQL> options_string,指定改变表的存储参数

17、options_string参数可以使用除partition以外的所有create table 中指定的存储参数,如tablespace、pctfree 等。 2.2.3. 将改变表(Change Table)的权限授权给订阅者 SQL> grant select on person_ct to cdc_subscriber; Grant succeeded 2.3. 订阅数据 2.3.1. 查看发布信息 当发布者,发布了相关的改变表后,会生成一个惟一的 发布id( publication ID), 可以查阅视图ALL_PUBLISHED_COLUMNS 以获取已经发

18、布的表及字段信息 SQL> select change_set_name,pub_id,source_table_name from ALL_PUBLISHED_COLUMNS ; CHANGE_SET_NAME PUB_ID SOURCE_TABLE_NAME ------------------------------ ---------- ------------------------------ PERSON_CHANGE_SET 70403 PERSON PERSON_CHANGE_SET

19、 70403 PERSON PERSON_CHANGE_SET 70403 PERSON 6rows selected SQL> 2.3.2. 创建订阅 ---------------------以下操作以订阅者用户执行 使用DBMS_CDC_SUBSCRIBE.CREATE_SUBSCRIPTION创建订阅操作,一次订阅与改变集对应,由于改变集与源表之间是一对多的关系,所以一次订阅就可以订阅多张表. SQL> BEGIN 2 DBMS_CDC_SUBSCRIBE.CREATE_SUBSCRIPTION(

20、 3 change_set_name => 'PERSON_CHANGE_SET', 4 description => 'Change data for person', 5 subscription_name => 'PERSON_SUB'); 6 END; 7 / PL/SQL procedure successfully completed 2.3.3. 订阅表,如果改变集中有多个表,需要操作多次 SQL> BEGIN 2 DBMS_CDC_SUBSCRIBE.SUBSCRIBE( 3 subscription_name =>

21、'PERSON_SUB', 4 source_schema => 'zlhis', 5 source_table => 'person', 6 column_list => 'id,name,sex', 7 subscriber_view => 'PERSON_VIEW'); 8 END; 9 / PL/SQL procedure successfully completed SQL> 2.4. 激活订阅 订阅需要使用DBMS_CDC_SUBSCRIBE.ACTIVATE_SUBSCRIPTION进行激活,才能生生效,激活订阅后CDC

22、就开始捕获改变数据. SQL> Begin 2 dbms_cdc_subscribe.activate_subscription(subscription_name => 'PERSON_SUB'); 3 END; 4 / PL/SQL procedure successfully completed 2.5. 扩展窗口的应用(查看增量的数据) 在源表数据变化后,变化的数据在订阅端需要执行extend_window后才能看见,订阅都调用DBMS_CDC_SUBSCRIBE.EXTEND_WINDOW过程取得改变数据的集合,如果第一次执行,就取得激活订阅后所有改变

23、数据.每次执行DBMS_CDC_SUBSCRIBE.EXTEND_WINDOW后,扩展窗口只看到上次执行DBMS_CDC_SUBSCRIBE.EXTEND_WINDOW至今的数据. SQL> BEGIN 2 DBMS_CDC_SUBSCRIBE.EXTEND_WINDOW( 3 subscription_name => 'PERSON_SUB'); 4 END; 5 / PL/SQL procedure successfully completed 2.6. 测试及查看改变数据 --以zlhis登录,改变测试表数据 SQL> connect z

24、lhis/his@117orc1; Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 Connected as zlhis SQL> select * from person; ID NAME SEX ---------- ---------- --- 0 毛泽东 男 0 彭德怀 男 0 邓颖操 女 SQL> insert into person values('1','

25、刘少奇','男'); 1 row inserted SQL> update person set name='毛主席' where name='毛泽东'; 1 row updated SQL> delete from person where name ='刘少奇'; 1 row deleted SQL> commit; Commit complete --以订立用户查看改变数据 SQL> connect cdc_subscriber/cdc_subscriber@117orc1; Connected to Oracle Database 1

26、0g Enterprise Edition Release 10.2.0.1.0 Connected as cdc_subscriber --直接查看改变数据视图是看不到的,必须执行dbms_cdc_subscribe.extend_window('PERSON_SUB'),以确定扩展窗口 SQL> select * from person_view; OPERATION$ CSCN$ COMMIT_TIMESTAMP$ RSID$ SOURCE_COLMAP$ TARGET_COLMAP$ ID NAME

27、 SEX ---------- ---------- ----------------- ---------- -------------------------------------------------------------------- SQL> begin 2 dbms_cdc_subscribe.extend_window('PERSON_SUB'); 3 end; 4 / PL/SQL procedure successfully completed --捕获的改变数据 SQL> select * from person_view;

28、 OPERATION$ CSCN$ COMMIT_TIMESTAMP$ RSID$ SOURCE_COLMAP$ TARGET_COLMAP$ ID NAME SEX ---------- ---------- ----------------- ---------- ---------------------------------- ---------- ---------- --- I 10588077 2007-6-12 上午 11 1 0E0000000000000

29、00 FE03000000000000000000000 1 刘少奇 男 UU 10588077 2007-6-12 上午 11 2 04000000000000000 7E00000000000000000000000 0 毛泽东 男 UN 10588077 2007-6-12 上午 11 2 04000000000000000 7E01000000000000000000000 0 毛主席 男 D 105880

30、77 2007-6-12 上午 11 3 00000000000000000 7E00000000000000000000000 1 刘少奇 男 SQL> 可以看到订阅视图中包括了改变数据、操作类型(update、delete或insert),操作时间,我们可以根据自己的需要提取改变数据进行处理。 2.7. 清空扩展窗口 使用扩展窗口的数据可以进行清空操作,避免改变数据过多带来的系统负载。 SQL> BEGIN 2 DBMS_CDC_SUBSCRIBE.PURGE_WINDOW( 3 subscription_name

31、> 'PERSON_SUB'); 4 END; 5 / PL/SQL procedure successfully completed SQL> 总结一下,同步模式下的CDC配置还是比较简单的: l 修改初始化参数 l 创建订阅、发布用户和存储的表空间 l 授予相关权限 l 创建改变集 l 建立改变表 l 订阅发布数据,创建订阅 l 订阅发布的表 l 扩展窗口,以查阅改变数据 3. CDC的性能测试 我们使用sql_trace工具对比应用了CDC捕获改变表数据与未设置CDC的表插入同样的数据进行性能对比。 --创建与测试表结构相同的表 SQL

32、> create table person_temp as select * from person; 表已创建。 SQL> alter session set sql_trace = true; 会话已更改。 --开启sql-trace,分别插入相同的数据 SQL> insert into person select object_id,substr(object_name,1,0),'s' from dba_objects; 已创建57674行。 统计信息 ----------------------------------------------------------

33、 0 recursive calls 0 db block gets 0 consistent gets 0 physical reads

34、 0 redo size 0 bytes sent via SQL*Net to client 0 bytes received via SQL*Net from client

35、 0 SQL*Net roundtrips to/from client 0 sorts (memory) 0 sorts (disk) 57674 rows processed

36、 SQL> insert into person_temp select object_id,substr(object_name,1,0),'s' from dba_objects; 已创建57674行。 统计信息 ---------------------------------------------------------- 0 recursive calls

37、 0 db block gets 0 consistent gets 0 physical reads 0 redo size

38、 0 bytes sent via SQL*Net to client 0 bytes received via SQL*Net from client 0 SQL*Net roundtrips to/from client 0 sorts (memor

39、y) 0 sorts (disk) 57674 rows processed SQL> commit; 从统计信息来看,两者并无差别。我们再看一下两者的sql_trace记录: 插入Person表的trace记录 i

40、nsert into person select object_id,substr(object_name,1,0),'s' from dba_objects call count cpu elapsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 2 0.03 0.02 0

41、 0 0 0 Execute 2 0.60 19.50 24 25089 118728 115348 Fetch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 4 0.

42、64 19.52 24 25089 118728 115348 Misses in library cache during parse: 1 Optimizer mode: ALL_ROWS Parsing user id: 57 插入Person_Temp表的trace记录 insert into person_temp select object_id,substr(object_name,1,0),'s' from dba_objects call count cpu el

43、apsed disk query current rows ------- ------ -------- ---------- ---------- ---------- ---------- ---------- Parse 1 0.00 0.00 0 0 0 0 Execute 1 0.26 0.25 0 12671 1634 57674 Fe

44、tch 0 0.00 0.00 0 0 0 0 ------- ------ -------- ---------- ---------- ---------- ---------- ---------- total 2 0.26 0.26 0 12671 1634 57674 Misses in library cache during parse: 1 Optimizer mode: ALL_ROWS Parsing user id: 57 从结果来看,CDC对插入操作的性能影响还是比较明显的,但由于业务系统中一次插入近6万行数据的可能性不大,这种性能影响还是在可接受的范围内。 参考资料: 《Oracle 10g Data Warehousing Guide》

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服