ORACLE CDCWord文档下载推荐.docx

上传人:b****8 文档编号:22615509 上传时间:2023-02-04 格式:DOCX 页数:15 大小:50.12KB
下载 相关 举报
ORACLE CDCWord文档下载推荐.docx_第1页
第1页 / 共15页
ORACLE CDCWord文档下载推荐.docx_第2页
第2页 / 共15页
ORACLE CDCWord文档下载推荐.docx_第3页
第3页 / 共15页
ORACLE CDCWord文档下载推荐.docx_第4页
第4页 / 共15页
ORACLE CDCWord文档下载推荐.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

ORACLE CDCWord文档下载推荐.docx

《ORACLE CDCWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《ORACLE CDCWord文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。

ORACLE CDCWord文档下载推荐.docx

如,〞病人费用记录〞中的登记时刻,每次只抽取上次抽取记录时刻以后产生的数据。

时刻戳方式存在以下问题:

●无法捕捉对时刻戳往常数据的delete和update操作,在数据准确性上受到了一定的限制。

而类似于ZLHIS这种业务系统对差不多发生的数据进行update和delete操作专门普遍(如划价记录转收费记录),应用场景受到了限制。

●要求业务系统的表必须一个能够标识新旧数据的列,而某些表没有设置这种列。

1.3.CDC的公布订立模型

CDC体系结构基于公布者/订阅者模型。

公布者捕捉变化数据并提供给订阅者。

订阅者使用从公布者那儿获得的变化数据。

通常,CDC系统拥有一个公布者和多个订阅者。

公布者第一需要识别捕捉变化数据所需的源表。

然后,它捕捉变化的数据并将其储存在专门创建的变化表中。

它还使订阅者能够操纵对变化数据的访问。

订阅者需要清晰自己感爱好的是哪些变化数据。

一个订阅者可能可不能对公布者公布的所有数据都感爱好。

订阅者需要创建一个订阅者视图来访问经公布者授权能够访问的变化数据。

CDC有几个重要的差不多概念需要先明确一下:

●源表(SourceTable),业务数据库的需要捕捉数据的源表

●变化表(ChangeTable),储存从源表捕捉的变化数据(包括各种DML产生的数据)

●变化集(ChangeSet),是保证事务一致性的数据集合。

一个变化集对应多个变化表

●订阅视图(SubscriptionView),提供给读取变化表数据的视图

●订阅窗口(SubscriptionWindow),定义了查看变化数据的时刻范畴.就象一个观看变化数据的滑动窗口。

变化数据处理完成后,能够对清除订阅窗口。

1.4.CDC的同步与异步模式

●同步模式,实时的捕捉变化数据并储备到变化表中,公布者与订阅都位于同一数据库中。

以下图说明了同步模式的差不多架构。

●异步模式,以Oracle流复制技术为基础,由于流复制比较复杂,本文档不涉及异步模式的CDC

1.5.CDC相关的数据库对象(Package)

●包(Package)

⏹DBMS_CDC_PUBLISH,用于定义公布操作

⏹DBMS_CDC_SUBSCRIBE,用于定义订阅操作

●角色

⏹EXECUTE_CATALOG_ROLE

⏹SELECT_CATALOG_ROLE

⏹CREATETABLEandCREATESESSIONprivileges

⏹EXECUTEontheDBMS_CDC_PUBLISHpackage

●视图

⏹ALL_SOURCE_TABLES源表

⏹ALL_PUBLISHED_COLUMNS公布的表列

⏹All_Subscribed_Columns订阅的表列

⏹All_Subscriptions所有订阅

⏹All_Subscribed_Tables差不多订阅的表

 

2.CDC的实施步骤

2.1.初始化

2.1.1.设置初始化参数

由于CDC需要在后台开启作业,需要将参数JOB_QUEUE_PROCESSES增加2个,java_pool_size至少在50M以上。

SQL>

altersystemsetjob_queue_processes=14;

Systemaltered

altersystemsetjava_pool_size=50m;

2.1.2.创建订阅、公布用户、表空间

createtablespacets_cdcpubdatafile'

E:

\oracle\product\10.2.0\oradata\orc1\ts_cdcpub.dbf'

size100m;

Tablespacecreated

createusercdc_publisheridentifiedbycdc_publisherdefaulttablespacets_cdcpub;

Usercreated

createusercdc_subcriberidentifiedbycdc_subcriberdefaulttablespacets_cdcpub;

2.1.3.授予相关权限

GRANTCREATESESSIONTOcdc_publisher;

Grantsucceeded

GRANTCREATETABLETOcdc_publisher;

GRANTCREATETABLESPACETOcdc_publisher;

GRANTUNLIMITEDTABLESPACETOcdc_publisher;

GRANTSELECT_CATALOG_ROLETOcdc_publisher;

GRANTEXECUTE_CATALOG_ROLETOcdc_publisher;

GRANTEXECUTEONDBMS_CDC_PUBLISHTOcdc_publisher;

2.1.4.在ZLHIS用户下,创建测试表

CreateTableperson(idNumber,NameVarchar(10),sexVarchar

(2));

Tablecreated

insertintopersonvalues(0,'

毛泽东'

'

男'

);

1rowinserted

彭德怀'

邓颖操'

女'

commit;

Commitcomplete

grantallonpersontocdc_publisher;

grantallonpersontocdc_subscriber;

2.2.公布数据

2.2.1.创建改变集

在同步方式的CDC中,change_source_name参数必须使用默认的改变源,SYNC_SOURCE

BEGIN

2DBMS_CDC_PUBLISH.CREATE_CHANGE_SET(

3change_set_name=>

'

person_change_set'

--改变集

4description=>

Changesetforpersoninfo'

5change_source_name=>

SYNC_SOURCE'

6END;

7/

PL/SQLproceduresuccessfullycompleted

2.2.2.创建改变表

指定源table,和源模式,注意区别owner与source_schema,owner是指公布用户,而不是源表的所有者

SQL>

2DBMS_CDC_PUBLISH.CREATE_CHANGE_TABLE(

3owner=>

cdc_publisher'

4change_table_name=>

person_ct'

5change_set_name=>

6source_schema=>

zlhis'

7source_table=>

person'

8column_type_list=>

IDnumber,NAMEVARCHAR2(10),sexvarchar2

(2)'

9capture_values=>

both'

10rs_id=>

y'

11row_id=>

n'

12user_id=>

13timestamp=>

14object_id=>

15source_colmap=>

16target_colmap=>

17options_string=>

TABLESPACETS_CDCPUB'

18END;

19/

options_string,指定改变表的储备参数。

options_string参数能够使用除partition以外的所有createtable 

中指定的储备参数,如tablespace、pctfree 

等。

2.2.3.将改变表(ChangeTable)的权限授权给订阅者

grantselectonperson_cttocdc_subscriber;

2.3.订阅数据

2.3.1.查看公布信息

当公布者,公布了相关的改变表后,会生成一个惟一的公布id(publicationID), 

能够查阅视图ALL_PUBLISHED_COLUMNS以猎取差不多公布的表及字段信息

selectchange_set_name,pub_id,source_table_namefromALL_PUBLISHED_COLUMNS;

CHANGE_SET_NAMEPUB_IDSOURCE_TABLE_NAME

----------------------------------------------------------------------

PERSON_CHANGE_SET70403PERSON

6rowsselected

2.3.2.创建订阅

使用DBMS_CDC_SUBSCRIBE.CREATE_SUBSCRIPTION创建订阅操作,一次订阅与改变集对应,由于改变集与源表之间是一对多的关系,因此一次订阅就能够订阅多张表.

2DBMS_CDC_SUBSCRIBE.CREATE_SUBSCRIPTION(

PERSON_CHANGE_SET'

Changedataforperson'

5subscription_name=>

PERSON_SUB'

2.3.3.订阅表,假如改变集中有多个表,需要操作多次

2DBMS_CDC_SUBSCRIBE.SUBSCRIBE(

3subscription_name=>

4source_schema=>

5source_table=>

6column_list=>

id,name,sex'

7subscriber_view=>

PERSON_VIEW'

8END;

9/

2.4.激活订阅

订阅需要使用DBMS_CDC_SUBSCRIBE.ACTIVATE_SUBSCRIPTION进行激活,才能生生效,激活订阅后CDC就开始捕捉改变数据.

Begin

2dbms_cdc_subscribe.activate_subscription(subscription_name=>

3END;

4/

2.5.扩展窗口的应用(查看增量的数据)

订阅都调用DBMS_CDC_SUBSCRIBE.EXTEND_WINDOW过程取得改变数据的集合,假如第一次执行,就取得激活订阅后所有改变数据.每次执行DBMS_CDC_SUBSCRIBE.EXTEND_WINDOW后,扩展窗口只看到上次执行DBMS_CDC_SUBSCRIBE.EXTEND_WINDOW至今的数据.

2DBMS_CDC_SUBSCRIBE.EXTEND_WINDOW(

4END;

5/

2.6.测试及查看改变数据

--以zlhis登录,改变测试表数据

connectzlhis/his@117orc1;

ConnectedtoOracleDatabase10gEnterpriseEditionRelease10.2.0.1.0

Connectedaszlhis

select*fromperson;

IDNAMESEX

-----------------------

0毛泽东男

0彭德怀男

0邓颖操女

insertintopersonvalues('

1'

刘少奇'

updatepersonsetname='

毛主席'

wherename='

;

1rowupdated

deletefrompersonwherename='

1rowdeleted

--以订立用户查看改变数据

connectcdc_subscriber/cdc_subscriber@117orc1;

Connectedascdc_subscriber

--直截了当查看改变数据视图是看不到的,必须执行dbms_cdc_subscribe.extend_window('

),以确定扩展窗口

select*fromperson_view;

OPERATION$CSCN$COMMIT_TIMESTAMP$RSID$SOURCE_COLMAP$TARGET_COLMAP$IDNAMESEX

-------------------------------------------------------------------------------------------------------------------

begin

2dbms_cdc_subscribe.extend_window('

3end;

--捕捉的改变数据

--------------------------------------------------------------------------------------------------------

I105880772007-6-12上午1110E000000000000000FE030000000000000000000001刘少奇男

UU105880772007-6-12上午112040000000000000007E000000000000000000000000毛泽东男

UN105880772007-6-12上午112040000000000000007E010000000000000000000000毛主席男

D105880772007-6-12上午113000000000000000007E000000000000000000000001刘少奇男

能够看到订阅视图中包括了改变数据、操作类型(update、delete或insert),操作时刻,我们能够依照自己的需要提取改变数据进行处理。

2.7.清空扩展窗口

使用扩展窗口的数据能够进行清空操作,幸免改变数据过多带来的系统负载。

2DBMS_CDC_SUBSCRIBE.PURGE_WINDOW(

总结一下,同步模式下的CDC配置依旧比较简单的:

●修改初始化参数

●创建订阅、公布用户和储备的表空间

●授予相关权限

●创建改变集

●建立改变表

●订阅公布数据,创建订阅

●订阅公布的表

●扩展窗口,以查阅改变数据

3.CDC的性能测试

我们使用sql_trace工具对比应用了CDC捕捉改变表数据与未设置CDC的表插入同样的数据进行性能对比。

--创建与测试表结构相同的表

createtableperson_tempasselect*fromperson;

表已创建。

altersessionsetsql_trace=true;

会话已更换。

--开启sql-trace,分别插入相同的数据

insertintopersonselectobject_id,substr(object_name,1,0),'

s'

fromdba_objects;

已创建57674行。

统计信息

----------------------------------------------------------

0recursivecalls

0dbblockgets

0consistentgets

0physicalreads

0redosize

0bytessentviaSQL*Nettoclient

0bytesreceivedviaSQL*Netfromclient

0SQL*Netroundtripsto/fromclient

0sorts(memory)

0sorts(disk)

57674rowsprocessed

insertintoperson_tempselectobject_id,substr(object_name,1,0),'

从统计信息来看,两者并无差别。

我们再看一下两者的sql_trace记录:

插入Person表的trace记录

insertintopersonselectobject_id,substr(object_name,1,0),'

fromdba_objects

callcountcpuelapseddiskquerycurrentrows

-----------------------------------------------------------------------

Parse20.030.020000

Execute20.6019.502425089118728

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1