Oracle CDC实验备忘
来源:互联网 发布:清朗网络手抄报 编辑:程序博客网 时间:2024/04/28 11:34
Oracle CDC实验备忘
1.实验环境
windows2003, Oracle 10.2.0.1.0
2.实现原理理解
整个过程分为 发布 与 订阅两部分
发布部分的原理为:建立统一的变更集Change Set,在变更集,针对需要发布的表,建立变更表Change Table,再定制需要发布的列信息,Oracle CDC内部机制(应该是触发器)会将需要捕获的表的变动记录到Change Table
订阅部分原理为:订阅者首先建立订阅,然后提交需要订阅的表名与列信息(前提是发布者已发布这些表与列),订阅活动会自动创建一个接收变更的视图,在激活订阅活动后,订阅者需要定时调用extend_window以获取最新的变动到视图中,以获取订阅信息。
3.实验过程中,使用内建的sys做测试,一直失败,建立网友发布的资料中的所有环境后,按照资料照搬所有实验语句,运行成功,还没找到原因,现把测试语句摘抄如下:
发布模块--------
查看Oracle版本号
select * from v$version;
创建发布者用户名
create user cdcpub identified by cdcpub;
分别赋予不同的权限
grant execute_catalog_role to cdcpub;
grant select_catalog_role to cdcpub;
grant create table to cdcpub;
grant create session to cdcpub;
grant execute on dbms_cdc_publish to cdcpub;
设置系统java_pool_size参数
alter system set java_pool_size=48M;
给用户cdcpub授予需要发布表的所有权限
grant all on ning.sales to cdcpub;
创建变更集
begin
dbms_cdc_publish.create_change_set(
change_set_name =>'ning_sales',
description =>'change set for ning.sales',
change_source_name =>'SYNC_SOURCE');
end;
将表创建到users表空间
alter user cdcpub quota unlimited on users;
创建变更表Change Table
begin
dbms_cdc_publish.create_change_table(
owner =>'cdcpub',
change_table_name=>'sales_ct',
change_set_name=>'ning_sales',
source_schema=>'ning',
source_table=>'sales',
column_type_list=>'id int,productid int,price number(10,2),quantity int',
capture_values=>'both',
rs_id=>'y',
row_id=>'n',
user_id=>'n',
timestamp=>'n',
object_id=>'n',
source_colmap=>'y',
target_colmap=>'y',
options_string=>'tablespace users');
end;
创建订阅者
create user cdcsub identified by cdcsub;
并赋予相应权限
grant create session to cdcsub;
grant create table to cdcsub;
grant select on cdcpub.sales_ct to cdcsub;
订阅部分--------
查看可以订阅的表
select * from all_source_tables;
查看可以订阅的Change Set 和 Column
select distinct change_set_name,column_name,pub_id
from all_published_columns
where source_schema_name='NING' and source_table_name='SALES';
创建订阅
begin
dbms_cdc_subscribe.create_subscription(
change_set_name=>'ning_sales',
description=>'change data for sales',
subscription_name=>'sales_sub');
end;
订阅具体的表和列
begin
dbms_cdc_subscribe.subscribe(
subscription_name=>'sales_sub',
source_schema=>'NING',
source_table=>'SALES',
column_list=>'id,productid,price,quantity',
subscriber_view=>'sales_view');
end;
激活订阅
begin
dbms_cdc_subscribe.activate_subscription(
subscription_name=>'SALES_SUB');
end;
在源表中对数据进行添加删除修改等DML语言操作,并Commit
扩展订阅查询
begin
dbms_cdc_subscribe.extend_window(
subscription_name=>'SALES_SUB');
end;
查询捕获到的数据DML事件
select id,productid,price,quantity from sales_view;
在每次新的DML操作后,必须重新进行扩展订阅,方能查询到变更
清除订阅到的变化的数据,清除后,下次扩展查询后不会再次出现被清除的DML记录
begin
dbms_cdc_subscribe.purge_window(
subscription_name=>'SALES_SUB');
end;
停止订阅
begin
dbms_cdc_subscribe.drop_subscription(
subscription_name=>'SALES_SUB');
end;
- Oracle CDC实验备忘
- oracle - CDC - (1)
- ETL--oracle --CDC技术
- 在Oracle建立CDC
- Oracle CDC部署
- Oracle备忘
- ORACLE备忘
- 备忘:Oracle
- oracle备忘
- oracle 备忘
- oracle包抽取cdc数据
- Oracle CDC(Change Data Capture)
- Oracle CDC Autolog配置步骤
- Oracle变化数据捕获CDC
- Oracle CDC说明及实施
- Oracle CDC数据增量测试
- dll的实验备忘
- 实验室实验备忘
- 世界上的动物都有自己生存的本领
- SQL 查询当天,本月,本周的记录
- VLAN在linux中的实现
- request getRequestURL 和request getRequestURI 有什么区别
- 如何引入一个example到eclipse
- Oracle CDC实验备忘
- 报表常用函数
- Initialization Sequence for Camera Drivers of CE6.0
- study android
- VirtualBox 虚拟机使用图解
- CImg库介绍
- zoj 1951 || poj 2262 Goldbach's Conjecture(水水~)
- (转)class.getResource()的用法
- C++ primer4 Chapter 3. Library Types