一、ORACLE环境检查

查oracle数据库版本(>9.2.0.4.0).

select * from v$version;

BANNER

Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Prod

PL/SQL Release 10.2.0.1.0 - Production

CORE        10.2.0.1.0        Production

TNS for 32-bit Windows: Version 10.2.0.1.0 - Production

NLSRTL Version 10.2.0.1.0 - Production

查oracle是否安装CDC component 支持.

select * from v$option;

PARAMETER

VALUE

Change Data Capture

TRUE

二、查初始化参数支持

select name,value/1024/1024 "Size (MB)" from v$parameter

where name in('java_pool_size','sga_max_size','shared_pool_size'

,'job_queue_processes');

NAME

Size (MB)

shared_pool_size

200

sga_max_size

881.0716553

java_pool_size

64

job_queue_processes

10

这里如果是10g以上版本的话java_pool_size和shared_pool_size会为0,这个因为10g以上都是由SGA_TARGET自动管理内存使用的,这样就不用设置shared_pool_size和java_pool_size等参数的大小,他们会根据需要自动的进行调整的。我们一般都是才用10g以上的版本。

查CDC用户是否具有如下权限(用户名根据现场情况确定)

-- Grant/Revoke object privileges

grant select on SYS.CHANGE_TABLES to TY_CDC;

grant select on SYS.DBA_SUBSCRIBED_TABLES to TY_CDC;

grant execute on SYS.DBMS_CDC_PUBLISH to TY_CDC;

grant execute on SYS.DBMS_CDC_SUBSCRIBE to TY_CDC;

-- Grant/Revoke role privileges

grant execute_catalog_role to TY_CDC;

grant select_catalog_role to TY_CDC;

-- Grant/Revoke system privileges

grant create any sequence to TY_CDC;

grant create database link to TY_CDC;

grant create procedure to TY_CDC;

grant create session to TY_CDC;

grant create synonym to TY_CDC;

grant create table to TY_CDC;

grant create tablespace to TY_CDC;

grant create trigger to TY_CDC;

grant create view to TY_CDC;

grant debug connect session to TY_CDC;

grant unlimited tablespace to TY_CDC;

在资源库上建立相应的表

这里需要在资源库TYGMCC用户下建立相应的表来接收同步过来的数据。

在TYGMCC用户下执行:00crt_all_tabs_to_TYGMCC.sql;

这里最好顺便建立相应的试图,可以再资源库执行查询:

SELECT 'CREATE OR REPLACE VIEW V_'||TABLE_NAME||' AS SELECT * FROM '||TABLE_NAME||';' FROM USER_TABLES WHERE INSTR(TABLE_NAME,'GMCC')=1;

把查询结果在COMMAND窗口中执行。

这里可以在TYGMCC用户下执行:00crt_all_views_to_TYGMCC.sql;

四、开始安装

创建CDC用户的数据库对象.

首先在TY_CDC用户下创建数据链路并测试链路是否连通建立脚本可以参考crt_dababase_link.txt文件:

1). 目标链路TARGET_LINK

2). 连接数据链路TO_TY

在TY_CDC测试是否连通:

select * from dual@TO_TY;

注意:这里数据链路都必须先修改相应的连接串以及用户名和密码。

Create table,index,sequence,synonym,view,function,procedure,etc

在TY_CDC用户下执行:01crt_all_objects.sql和01crt_lob_views.sql;

装载初始化数据到三张配置表b_cfg_table、b_cfg_bgx、b_cfg_sjy。

b_cfg_table表数据主要用于CDC变化表的生成,及数据刷新CDC_REFRESH_RECORD时用。

b_cfg_bgx表数据为ETL的发起点,CDC_ETL启动时会遍历此表。

b_cfg_sjy此表主要用于ETL过程中动态装配生成SQL语句。

在TY_CDC用户下执行:02crt_4cfg_data_all.sql;

根据TY_CDC用户进行相关栏目的重置:

在TY_CDC用户下执行:

update b_cfg_table set schema='TY_GMCC',view_name=null,handle=null where schema='TY_GMCC';

commit;

注意:这里红色的需要改成我们要监控的用户名,这里是以烟台的参考,其他地市则需要改成相应的用户名。

把对应表的查询权限授给TY_CDC用户

在TY用户下执行: 03grt_privs_frm_TY.sql;

在TY_CDC用户下创建同义词

在TY_CDC用户下执行查询:

SELECT 'CREATE OR REPLACE SYNONYM '||TABLE_NAME||' FOR '||SCHEMA||'.'||TABLE_NAME||';' FROM B_CFG_TABLE;

把查询结果在TY_CDC用户下的COMMAND窗口执行;

创建变化表, 检查是否存在多余的订阅及检查是否检测到数据变化.

该步骤中, cdc_cfg_setchangetable只能执行一次,如果有失败或者异常应先清除已存在的用户订阅,然后再生新订阅.否则,后期维护过程中会造成订阅过的历史数据清理不掉,而导致CDC使用的表空间膨胀.

在TY_CDC用户下执行:exec cdc_cfg_setchangetable;

检查是否存在多次重复订阅:

select count(1),source_table_name from user_subscribed_tables group by source_table_name;

清除订阅的语句如下:

select 'exec dbms_cdc_publish.drop_subscriber_view('||handle||','||''''||source_schema_name||''''||','||''''||source_table_name||''''||');' from user_subscribed_tables;

五、创建JOB

这里CDC创建变化表会自动创建一个JOB,这里我们先在TY_CDC用户下执行:

select 'exec sys.dbms_job.remove('||job||');

commit;' dele from user_jobs;

把查询结果在TY_CDC用户下的COMMAND窗口下执行。

在TY_CDC用户下创建JOB:

declare

job number;

begin

sys.dbms_job.submit(job       => job,

what      => 'CDC_MANAGER(''1'');',

next_date => trunc(sysdate + 1) + 1 / 1440,

interval  => 'decode(trunc(to_char(sysdate,' || '''' ||

'HH24' ||

''') / 12),1,trunc(sysdate+1)+1/1440,trunc(sysdate)+12/24)+1/1440',

instance  => 1);

commit;

--sys.dbms_job.run(job,true);

sys.dbms_job.submit(job       => job,

what      => 'dbms_cdc_publish.purge;',

next_date => trunc(sysdate + 1) + 5 / 24,

interval  => 'trunc(sysdate+1)+5/24',

instance  => 1);

commit;

--sys.dbms_job.run(job,true);

--print job;

end;

/

这里指定JOB创建在第一个实例上,以便以后的维护和管理。

六、数据同步

完成了CDC的部署以后需要把业务库中现有数据同步到资源库中。鉴于业务库现在数据量比较少,所以这里采用直接刷新的方式让CDC把数据同步过来,这样做同时还可以测试一下CDC的速度。

同步TY的数据:

select 'update '||table_name||' set '||table_column||'='||table_column||';

commit;',schema from b_cfg_table t where instr(schema,'TY')=8;

把查询结果拿到TY用户下的COMMAND窗口中执行。

=================End================================

oracle cdc 提交顺序,Oracle CDC部署流程相关推荐

  1. oracle select执行顺序,oracle select执行顺序的详解

    oracle select执行顺序的详解 SQL Select语句完整的执行顺序:1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子 ...

  2. oracle没有提交更新,oracle 中更新update不成功的原因

    oracle 中执行insert into 与delete 都正常,但是执行update 却没有反应. 原因: 是因为记录锁.这种只有update无法执行其他语句可以执行的其实是因为记录锁导致的,在o ...

  3. oracle cdc 关闭,Oracle CDC部署流程

    一.ORACLE环境检查 查oracle数据库版本(>9.2.0.4.0). select * from v$version; BANNER Oracle Database 10g Enterp ...

  4. oracle expense po,ORACLE ERP中PO/INV/AP/GL流程对应那些关键基表、接口表?

    ORACLE ERP中PO/INV/AP/GL流程对应那些关键基表.接口表? 这个要看你用的哪一种ERP,如果是EBS,接口表参考如下信息: AP接口表: AP_INVOICES_INTERFACE ...

  5. oracle 表字段顺序_Oracle数据库如何修改表中字段顺序

    Oracle数据库如何修改表中字段顺序 发布时间:2020-07-09 15:53:15 来源:亿速云 阅读:166 本篇文章给大家分享的是有关Oracle数据库如何修改表中字段顺序,小编觉得挺实用的 ...

  6. oracle 表字段顺序_如何更改Oracle数据库表中字段顺序

    软件安装:装机软件必备包 SQL是Structured Query Language(结构化查询语言)的缩写.SQL是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言.在使用它时,只需要发出& ...

  7. oracle dml commit,Oracle dml开始到commit期间的流程

    Oracle dml开始到commit期间的流程 1.确认需要的数据块,先去db buffer cache里找,没有的去磁盘上找,找到的数据复制到buffer cache里 2.申请undo,把待修改 ...

  8. 提交优化Oracle Tuning Log File Sync 等待事件的几种策略

    发一下牢骚和主题无关: 在 一个繁频 commit/rollback 或盘磁 I/O 有问题.量大物理读写争用    那么.我们便会经常瞧见 LOG FILE SYNC 待等事件出现在 TOP EVE ...

  9. oracle可以使用提交完成的事务,【体系结构】Oracle数据提交与事务隔离实验 oradebug挂起lgwr进程...

    Oracle数据提交与事务隔离实验 oradebug挂起lgwr进程 原文作者:dbsnake 崔华 实验参考原文链接: Oracle 里未 commit 的数据除了当前 session 之外,其他 ...

最新文章

  1. 电大计算机统考模拟题在哪里学,[2017年电大]电大-计算机统考模拟题.doc
  2. SD--关于销售环节的折扣、折让、回扣、佣金的介绍
  3. 【学习笔记】《数据挖掘:理论与算法》CH5 支持向量机
  4. 无忧考吧python编译环境不存在_python:flake8找不到不存在的方法
  5. 原生js 样式的操作整理
  6. Mac上Jupyter notebook代码补全
  7. hadoop 入门学习系列十一----hue安装
  8. 爬虫学习笔记(一)初识爬虫
  9. 《微信小程序-进阶篇》组件封装-Icon组件的实现(二)
  10. Multisim14仿真基本模拟电路之 10.2单管共射放大电路的仿真实验与分析
  11. 08.15恒指/德指做单思路导图及晚盘前瞻
  12. 利用R语言ggplot2包制作金字塔图,展示人口结构数据
  13. 个人网页制作(教你制作简单网页)
  14. 计算机处理器天梯,cpu天梯图2020_笔记本cpu天梯排名图2020
  15. 汪光焘:中国城市交通问题、对策与理论需求
  16. 【休闲益智】【HTML】看字说颜色
  17. 基于单片机的测温风扇控制系统设计(#0420)
  18. 支付宝客户端架构解析:iOS 容器化框架初探
  19. pandas 聚合函数agg
  20. 离散数学考前复习:(四)关系

热门文章

  1. 多分类 数据不平衡的处理 lightgbm
  2. pip 将 某包指定到某目录 批量安装
  3. python中的next()以及iter()函数
  4. explain性能分析
  5. LeetCode简单题之合并两个链表
  6. Cocos事件监听(JS)
  7. java equal hashcode_Java(二)equal 和 hashcode使用
  8. HarmonyOS ToastDialog 的使用
  9. xlrd.biffh.XLRDError: Unsupported format, or corrupt file: Expected BOF record; found b‘b\x14#e\xbc\
  10. android weight(权重)的具体分析