oracle cdc 关闭,Oracle CDC部署流程

一、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================================

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24930246/viewspace-1069835/,如需转载,请注明出处,否则将追究法律责任。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/405793.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

几个重要的RedHat Linux内核文件介绍 (1)

From:http://tech.sina.com.cn/s/s/2006-06-27/061923370.shtml Linux服务器内核编译基础 mynix编译自www.linux.org之Linux HowTo之Kernel HowTo 在网络中,不少服务器采用的是Linux系统。为了进一步提高服务器的性能,可能需要根据特定的硬件及需求重新…

Qt 两个Ui 界面传值

一、说明 A子界面 B主界面 , 实现A往B传值,B显示. 二、利用emit和slot实现 2.1 对A.h 添加声明 signals: void sendData(QString); //用来传递数据的信号 2.2在A.cpp中适当位置将数据进行发射 emit sendData(ui->lineEdit->text());…

有哪些是你成为一名开发之后才知道的事情

目录 前言 疑问1成为一名开发真的很难嘛? 疑问2作为一名开发的工资一定很高吗 疑问3开发一定加班会很厉害嘛 疑问4一定要去大厂嘛 疑问5程序员是个很好的职业选择吗 疑问6毕业前参加培训好吗 疑问7入行之后要不断提升自己的能力吗 疑问8大学四年该如何度过 疑问…

她们分别买了什么?

using System; using System.Collections.Generic; using System.Text; class Program { static void Main(string[] args) { /* * 测试 9.她们分别买了什么? */ WhatWasBought(); …

[发布] 矩阵乘法及其对于编程求斐波那契数列的某一项的应用

需要PDF的读者可以向我索要。 如果发现有翻印与用于商业用途,将予追究。 编者注:本文中如果没有特殊说明,除法均只取整数部分,忽略小数部分。 感谢大家对我的支持!同时感谢ysy大聚聚。转载于:https://www.cnblogs.com…

oracle新建用户sql局域,oracle 新建数据库,及创建用户,表空间,sqlplus导入导出数据库...

oracle11G新建数据库:默认下一步:默认下一步:默认下一步:填写数据库名下一步:默认下一步:完成,再按指示确定,就完成了数据库的创建。数据库创建完后,在oracle11G Net Man…

QIcon 给按钮和动作添加图片

对Qt中资源文件的引用时,QAction/QPushbutton添加图标时,需要用到图片的路径。 1、先添加资源文件,项目->添加新的文件->Qt resource files->添加前缀->添加文件。 2、复制需要文件的路径;(工程树对应图…

linux下xargs命令用法详解

From:http://biancheng.dnbcw.info/shell/268829.html xargs在 linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活.xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.由此这个命…

监理公司的核心竞争力

企业竞争力模型,无疑要看迈克尔波特的文章,从企业竞争、行业竞争至国家竞争,都有成熟的竞争理论。同多数IT公司一样,监理公司核心竞争力仍然是创新与复制能力.只不过IT产品是监理咨询与服务,纯粹服务产品的研发和管理,…

Altera 速度等级

~~ 转载于:https://www.cnblogs.com/agllero/p/4533848.html

STM32项目中一种在线升级/应用升级OTA-IAP设计方案

STM32 OTA-IAP设计方案 OTA是Over-the-Air的简写,即空中下载技术,通过网络远程给用户进行系统更新和升级。IAP是In Application Programming的简写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在…

oracle 主键列创建自增长,powerdesigner创建oracle 数据库表,设置表主键列为自动增长。 ....

1 在表视图的列上创建。 双击表视图,打开table properties ———>columens , 双击要设置的列(显示列的序号的那个按钮,单击后,会显示横向的黑色箭头)。 打开column properties 对话框。在 ‘general’ 项中, 最下面…

嵌入式GUI FTK支持输入法

From: http://blog.csdn.net/absurd/article/details/5318285 春节期间给FTK增加输入法支持,目前支持拼音输入法,五笔输入法和手写输入法。手写输入法只是实现了框架,识别引擎才开个头,这是今年FTK开发的重点任务。拼音输入法&…

STM32程序占用的内存容量计算

STM32中程序占用内存容量 Keil MDK下Code, RO-data,RW-data,ZI-data这几个段: Code存储程序代码。RO-data存储const常量和指令。RW-data存储初始化值不为0的全局变量。ZI-data存储未初始化的全局变量或初始化值为0的全局变量。占用的FlashCode RO Data RW Data; 运行消耗的…

域名解析

搭建网站:要将域名指向主机服务商提供的IP地址,请选择「A记录」;要将域名指向主机服务商提供的另一个域名,请选择「CNAME记录」。建立邮箱:需要设置「MX记录」,根据邮箱服务商提供的MX记录填写。A记录&…

【原创】最值得推荐wince应用和wince驱动入门书籍

作者:wogoyixikexiegliet应用方向? C,c#----------本人不做应用只知道用这两个语言用到,不敢推荐 -------也来补充一下。《PROGRAMMING MICROSOFT WINDOWS CE.NET》第三版英文原著Inside Windows CE - John Murray Programm…

oracle中错位函数,Oracle中的一些函数

select initcap(ename) from emp; 该语句能够使 ename 列的首字母大写。select concat(hello ,world) from dual; 该语句是hello 和 world 被连接起来 concat()select ename, substr(ename,-2,2) from emp; 该语句呢,这个substr(ename , -2 ,2 ) 我一直有个疑问 , 那就是 …

Bash数组操作教程

From: http://zengrong.net/post/1518.htm 一、定义数组 1. 使用[]操作符 ?View Code BASH1 2names[0]zrong names[1]jacky 2. 使用()直接赋值 ?View Code BASH1 2 3names(zrong jacky) # 或 names([0]zrong [1]jacky) 3. 使用declare -a定义数组。这种方法可以将一个空的…