Oracle CDC数据增量备份使用手册文档格式.docx
- 文档编号:16129840
- 上传时间:2022-11-20
- 格式:DOCX
- 页数:13
- 大小:50.18KB
Oracle CDC数据增量备份使用手册文档格式.docx
《Oracle CDC数据增量备份使用手册文档格式.docx》由会员分享,可在线阅读,更多相关《Oracle CDC数据增量备份使用手册文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
利用CDC,在对源表进行INSERT、UPDATE或DELETE等操作的同时就可以提取数据,并且变化的数据被保存在数据库的变化表中。
这样就可以捕获发生变化的数据,然后利用数据库视图以一种可控的方式提供给目标系统。
1.2.CDC与传统增量处理方式的对比分析
我们对比一下CDC方式与传统的全表对比与时间戳方式。
全表对比使用数据仓库中的当前表与业务系统表进行对比,取得变化了的数据,典型是使用minus语句:
SELECT*FROMnew_version
MINUSSELECT*FROMold_version;
使用全表对比有以下几方面的问题:
●需要将业务系统中表全部转输,造成很高的网络负载
●需要对两版本的表进行全表扫描,性能代价非常高
●无法反映数据的历史状态,如无法捕捉库存的历史变化记录
还有一种常用的方式是时间戳,
它是以业务表中某一个字段的值,作为判断新旧数据的标志。
如,”病人费用记录”中的登记时间,每次只抽取上次抽取记录时间以后产生的数据。
时间戳方式存在以下问题:
●无法捕获对时间戳以前数据的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以获取已经发布的表及字段信息
sele
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle CDC数据增量备份使用手册 CDC 数据 增量 备份 使用手册