seo网站快速排名,wordpress变域名工具,网站建设如何快速增加用户,cnc加工订单网目录
1 项目概述
2 需求分析
3 实施操作
3.1 历史数据全量同步
3.2 增量数据实时同步
4 问题总结
4.1 字符型非空约束
4.2 字符型唯一索引尾部空格 1 项目概述
将Oracle 11g RAC生产环境数据同步到DM8分析环境#xff0c;Oracle数据库大小1.5T#xff0c;日增归档10…目录
1 项目概述
2 需求分析
3 实施操作
3.1 历史数据全量同步
3.2 增量数据实时同步
4 问题总结
4.1 字符型非空约束
4.2 字符型唯一索引尾部空格 1 项目概述
将Oracle 11g RAC生产环境数据同步到DM8分析环境Oracle数据库大小1.5T日增归档100GDM数据库为新建库。
初始同步表数70多张其中10张表记录数过千万最大表记录数上亿后续根据需要增加其它同步表。
数据同步正常延时不超过5秒。
2 需求分析
数据同步涉及已有历史数据一次性同步和新增数据实时同步两项内容。
历史数据同步通过BeeDI的ETL功能实现BeeDI从源表读取数据然后将读取的数据批量写入目标表。
增量数据同步采用BeeDI日志捕获功能实现BeeDI通过SCN获取日志增量记录还原日志记录对应的DML操作数据然后依据DML类型ins、del、upd对目标库执行相应数据操作。
DM库中对应的目标表无需手工创建可通过BeeDI的模式映射功能在同步数据时自动创建。
同步表大多包含时间戳信息之所以弃用时间戳同步方式原因在于当写入记录的时间序列与对应记录的提交时间序列不一致时采用时间戳进行实时同步会出现丢失数据的情况。
3 实施操作
3.1 历史数据全量同步
针对需要同步的每一张表单独配置全量同步任务操作如下
1 新建ETL任务任务名称对应表名。
2配置Oracle和DM数据库连接。
3从Oracle接口窗口拖拽表节点到DM接口。
4调整装载组件属性勾选[是否清空]复选框装载模式选择[批量]。 5启动任务观察任务运行状况如果任务运行出错需要分析错误原因解决错误后重新启动任务直到任务成功结束。
重复以上操作直到所有需要同步的表对应的同步任务配置完成。
记录以上最先运行任务的开始时间该时间将作为实时同步任务的日志捕获起点。
3.2 增量数据实时同步
对于需要同步的所有表集中配置一个实时同步任务操作如下
1新建ETL任务指定实时任务名称。
2配置Oracle和DM数据库连接。
3从Oracle窗口拖拽将要同步的表节点到模板空白处创建对应源表的抽取组件。
4在DM窗口通过 [装载] 快捷命令创建对应目标表的装载组件。
5建立抽取组件到装载组件的数据流映射。
6重复以上3、4、 5步骤直到所有需要同步的表对应的抽取组件和装载组件完成映射。
7使用快捷命令[自动排列]格式化组件显示。
8从上到下依次调整各个抽取组件的[增量抽取]属性勾选[增量抽取]复选框在弹出的[增量抽取设置]对话框中选择[日志]增量模式在逻辑主键窗口通过快捷命令[主键]或[唯一索引]设置增量同步逻辑主键。 9所有抽取组件启用日志增量同步后任意调整某个抽取组件的增量抽取属性将解析点时间设置为最先运行全量同步任务的开始时间确定后在提示框[是否选择更新多表捕获关联抽取组件属性]出现时选择[是]。 10设置任务定时自动启动观察任务运行状况如果任务运行出错需要分析错误原因解决错误后重新启动任务直到任务成功结束。
4 问题总结
4.1 字符型非空约束
在Oracle中非空列允许存入长度为0的字符串空串而在DM中长度为0的字符串不允许写入非空列由此导致部分非空列包含空串的数据无法同步写入DM库。
在BeeDI中调整对应表的数据流映射通过decode函数判定对应列输入数据是否为空串是则输出一个预定义的默认值否则原样输出数据。
4.2 字符型唯一索引尾部空格
在Oracle中进行数据唯一性效验时将对字符型唯一索引字段值的全部内容进行查重而在DM中将去除字符型唯一索引字段值的尾部空格进行查重由此导致同样的数据在Oracle中可以写入而在DM中由于唯一索引冲突无法写入。
在BeeDI中调整对应表的数据流映射通过自定义函数替换对应列尾部空格为其它字符。