文章目录

  • 一、场景分析
  • 二、实战
    • 2.1. 创建原表表结构+初始化数据
    • 2.2. 创建目标表表结构
    • 2.3. 同步前效果图
    • 2.4. 连接串
    • 2.5. 执行同步
    • 2.6.执行后效果图
    • 2.7.操作记录
  • 三、实战场景2(第1种)
    • 3.1. 原表表结构+初始化数据
    • 3.2. 目标表表结构
    • 3.3. 连接字符串
    • 3.4. 数据同步前效果图
    • 3.5. 数据同步命令
    • 3.6. 数据同步后效果图
    • 3.7. 操作记录
  • 四、实战场景2(第2种)
    • 4.1. 原表表结构+初始化数据
    • 4.2. 目标表表结构
    • 4.3. 连接字符串
    • 4.4. 数据同步前效果图
    • 4.5. 数据同步命令
    • 4.6. 数据同步后截图
    • 4.7. 数据同步操作记录
一、场景分析

单表单表同数据同步

字段数量和字段类型一致有2种情况:

第1种:oracle 原表和目标表 表名称一样,原表和目标表的字段数量以及字段类型一致。
第2种:oracle 原表和目标表 表名称不一样,原表和目标表的字段数量以及字段类型必须一致。

字段不一致有2种情况:

第一种:oracle 原表和目标表 名称一样,也可以不一样,但是,原表和目标表字段数量可以不一致,原表字段比目标表的字段数少。
第二种:oracle 原表和目标表 名称一样,也可以不一样,但是,原表和目标表字段数量可以不一致,原表字段比目标表的字段数多。

二、实战

字段数量和字段类型一致有2种情况:

第1种:oracle 原表和目标表 表名称一样,原表和目标表的字段数量以及字段类型一致。
第2种:oracle 原表和目标表 表名称不一样,原表和目标表的字段数量以及字段类型必须一致。

2.1. 创建原表表结构+初始化数据

ORACLE使用批量插入100万测试数据
https://gblfy.blog.csdn.net/article/details/113556382

2.2. 创建目标表表结构
CREATE TABLE test_data
(ID varchar2(32),NAME1 varchar2(9),NAME2 varchar2(100),NAME3 varchar2(100)
);
COMMENT ON TABLE test_data IS '测试表';
2.3. 同步前效果图

原表1000000条数据

SELECT count(*) FROM test_data;

2.4. 连接串
#格式:cd {YOUR_DATAX_HOME}/job
cd /app/datax/dca/job
vim oracle-base.json

内容如下:

{"job": {"content": [{"reader": {"name": "oraclereader","parameter": {"column": ["*"],"connection": [{"jdbcUrl": ["jdbc:oracle:thin:@ip地址:1521:数据库名称"],"table": ["用户(大写).${originTableName}"]}],"password": "用户名","username": "密码"}},"writer": {"name": "oraclewriter","parameter": {"column": ["*"],"connection": [{"jdbcUrl": "jdbc:oracle:thin:@ip地址:1521:数据库名称","table": ["用户(大写).${targetTableName}"]}],"password": "用户名","username": "密码"}}}],"setting": {"speed": {"channel": "2"}}}
}
2.5. 执行同步
#格式:python {YOUR_DATAX_HOME}/bin/datax.py -p"-DoriginTableName='目标表名' -DtargetTableName='原表名'" {YOUR_DATAX_HOME}/job/oracle2oracle-oldCS.json;
python /app/datax/bin/datax.py -p"-DoriginTableName='TEST_DATA' -DtargetTableName='TEST_DATA'" /app/datax/job/dca/oracle-base.json
2.6.执行后效果图

原表

目标表

2.7.操作记录
[root@localhost job]# python /app/datax/bin/datax.py -p"-DoriginTableName='TEST_DATA' -DtargetTableName='TEST_DATA'" /app/datax/job/dca/oracle-base.json2021-02-02 17:30:19.114 [job-0] INFO  JobContainer - PerfTrace not enable!
2021-02-02 17:30:19.114 [job-0] INFO  StandAloneJobContainerCommunicator - Total 1000000 records, 37555584 bytes | Speed 3.58MB/s, 100000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 6.049s |  All Task WaitReaderTime 1.829s | Percentage 100.00%
2021-02-02 17:30:19.115 [job-0] INFO  JobContainer -
任务启动时刻                    : 2021-02-02 17:30:08
任务结束时刻                    : 2021-02-02 17:30:19
任务总计耗时                    :                 10s
任务平均流量                    :            3.58MB/s
记录写入速度                    :         100000rec/s
读出记录总数                    :             1000000
读写失败总数                    :                   0[root@localhost job]#
三、实战场景2(第1种)

字段不一致有2种情况:

第一种:oracle 原表和目标表 名称一样,也可以不一样,但是,原表和目标表字段数量可以不一致,原表字段比目标表的字段数少。

3.1. 原表表结构+初始化数据
DROP table HERO;-- Create table
create table HERO
(SNO       VARCHAR2(20) not null,USER_NAME VARCHAR2(20),AGE       NUMBER(3),PRIMARY KEY (SNO)
);
-- Add comments to the table
comment on table HERO  is '英雄信息表';-- Add comments to the columns
comment on column HERO.SNO  is '英雄编码';
comment on column HERO.USER_NAME  is '英雄名称';
comment on column HERO.AGE  is '英雄年龄';insert into HERO (SNO, USER_NAME, AGE) values ('1', '盖伦', '1');
insert into HERO (SNO, USER_NAME, AGE) values ('2', '小丑', '2');
insert into HERO (SNO, USER_NAME, AGE) values ('3', '莫甘娜', '3');
insert into HERO (SNO, USER_NAME, AGE) values ('4', '寒冰', '4');
insert into HERO (SNO, USER_NAME, AGE) values ('5', '剑圣', '5');
insert into HERO (SNO, USER_NAME, AGE) values ('6', '剑圣', '6');
3.2. 目标表表结构
DROP table HERO;-- Create table
create table HERO
(SNO       VARCHAR2(20) not null,USER_NAME VARCHAR2(20),AGE       NUMBER(3),LLMEDSERIALNO VARCHAR2(20),MAKEDATE  DATE,MAKETIME  VARCHAR2(8),PRIMARY KEY (SNO)
);-- Add comments to the table
comment on table HERO  is '英雄信息表';-- Add comments to the columns
comment on column HERO.SNO  is '英雄编码';
comment on column HERO.USER_NAME  is '英雄名称';
comment on column HERO.AGE  is '英雄年龄';
3.3. 连接字符串
vim oracle-more.json
{"job": {"content": [{"reader": {"name": "oraclereader","parameter": {"where": "","connection": [{"querySql": ["select a.*,  (ROWNUM+72500072689218919812) LLMEDSERIALNO, to_date('2021-1-4','yyyy-mm-dd') MAKEDATE, to_char(SYSDATE,'hh24:mi:ss') MAKETIME  from 用户大写.${originTableName} a where 1=1"],"jdbcUrl": ["jdbc:oracle:thin:@ip地址:1521:数据库名称"],}],"password": "用户名","username": "密码"}},"writer": {"name": "oraclewriter","parameter": {"column": ["*"],"connection": [{"jdbcUrl": "jdbc:oracle:thin:@ip地址:1521:数据库名称","table": ["用户大写.${targetTableName}"]}],"password": "用户名","username": "密码"}}}],"setting": {"speed": {"channel": "1"}}}
}
3.4. 数据同步前效果图


3.5. 数据同步命令
python /app/datax/bin/datax.py -p"-DtableName='HERO' -DoracletableName='HERO'" -j"-Xms2g -Xmx2g" /app/datax/job/dca/oracle-more.json
3.6. 数据同步后效果图

原表

目标表

3.7. 操作记录
[root@localhost job]#python /app/datax/bin/datax.py -p"-DtableName='HERO' -DoracletableName='HERO'" -j"-Xms2g -Xmx2g" /app/datax/job/dca/oracle-more.json2021-02-02 18:07:06.575 [job-0] INFO  JobContainer - PerfTrace not enable!
2021-02-02 18:07:06.575 [job-0] INFO  StandAloneJobContainerCommunicator - Total 6 records, 241 bytes | Speed 24B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
2021-02-02 18:07:06.576 [job-0] INFO  JobContainer -
任务启动时刻                    : 2021-02-02 18:06:56
任务结束时刻                    : 2021-02-02 18:07:06
任务总计耗时                    :                 10s
任务平均流量                    :               24B/s
记录写入速度                    :              0rec/s
读出记录总数                    :                   6
读写失败总数                    :                   0
四、实战场景2(第2种)

字段不一致有2种情况:

第二种:oracle 原表和目标表 名称一样,也可以不一样,但是,原表和目标表字段数量可以不一致,原表字段比目标表的字段数多。

4.1. 原表表结构+初始化数据
DROP table HERO;-- Create table
create table HERO
(SNO       VARCHAR2(20) not null,USER_NAME VARCHAR2(20),AGE       NUMBER(3),LLMEDSERIALNO VARCHAR2(20),MAKEDATE  DATE,MAKETIME  VARCHAR2(8),PRIMARY KEY (SNO)
);-- Add comments to the table
comment on table HERO  is '英雄信息表';-- Add comments to the columns
comment on column HERO.SNO  is '英雄编码';
comment on column HERO.USER_NAME  is '英雄名称';
comment on column HERO.AGE  is '英雄年龄';insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('1', '盖伦', '1', '72500072689218919813', '2021-01-04', '18:18:25');
insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('2', '小丑', '2', '72500072689218919814', '2021-01-04', '18:18:25');
insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('3', '莫甘娜', '3', '72500072689218919815', '2021-01-04', '18:18:25');
insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('4', '寒冰', '4', '72500072689218919816', '2021-01-04', '18:18:25');
insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('5', '剑圣', '5', '72500072689218919817', '2021-01-04', '18:18:25');
insert into HERO (SNO, USER_NAME, AGE, LLMEDSERIALNO, MAKEDATE, MAKETIME) values ('6', '剑圣', '6', '72500072689218919818', '2021-01-04', '18:18:25');
4.2. 目标表表结构
DROP table HERO;-- Create table
create table HERO
(SNO       VARCHAR2(20) not null,USER_NAME VARCHAR2(20),AGE       NUMBER(3),PRIMARY KEY (SNO)
);-- Add comments to the table
comment on table HERO  is '英雄信息表';-- Add comments to the columns
comment on column HERO.SNO  is '英雄编码';
comment on column HERO.USER_NAME  is '英雄名称';
comment on column HERO.AGE  is '英雄年龄';
4.3. 连接字符串
vim oracle-short.json
{"job": {"content": [{"reader": {"name": "oraclereader","parameter": {"where": "","connection": [{"querySql": ["select a.SNO,a.USER_NAME,a.AGE  from 用户大写.${originTableName} a where 1=1"],"jdbcUrl": ["jdbc:oracle:thin:@ip地址:1521:数据库名称"],}],"password": "用户名","username": "密码"}},"writer": {"name": "oraclewriter","parameter": {"column": ["*"],"connection": [{"jdbcUrl": "jdbc:oracle:thin:@ip地址:1521:数据库名称","table": ["用户大写.${targetTableName}"]}],"password": "用户名","username": "密码"}}}],"setting": {"speed": {"channel": "1"}}}
}
4.4. 数据同步前效果图


4.5. 数据同步命令
python /app/datax/bin/datax.py -p"-DtableName='HERO' -DoracletableName='HERO'" -j"-Xms2g -Xmx2g" /app/datax/job/dca/oracle-short.json
4.6. 数据同步后截图

原表

目标表

4.7. 数据同步操作记录
[root@localhost dca]# python /app/datax/bin/datax.py -p"-DtableName='HERO' -DoracletableName='HERO'" -j"-Xms2g -Xmx2g" /app/datax/job/dca/oracle-short.json
2021-02-02 18:27:18.498 [job-0] INFO  JobContainer - PerfTrace not enable!
2021-02-02 18:27:18.499 [job-0] INFO  StandAloneJobContainerCommunicator - Total 6 records, 25 bytes | Speed 2B/s, 0 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.000s |  All Task WaitReaderTime 0.000s | Percentage 100.00%
2021-02-02 18:27:18.499 [job-0] INFO  JobContainer -
任务启动时刻                    : 2021-02-02 18:27:07
任务结束时刻                    : 2021-02-02 18:27:18
任务总计耗时                    :                 10s
任务平均流量                    :                2B/s
记录写入速度                    :              0rec/s
读出记录总数                    :                   6
读写失败总数                    :                   0

(进阶篇_01)Oracle数据同步3种场景相关推荐

  1. 基于OGG Datahub插件将Oracle数据同步上云

    摘要:随着数据规模的不断扩大,传统的RDBMS难以满足OLAP的需求,本文将介绍如何将Oracle的数据实时同步到阿里云的大数据处理平台当中,并利用大数据工具对数据进行分析. 一.背景介绍 随着数据规 ...

  2. SQL 与oracle数据同步之 链接服务器

    很多时候,大一些的单位都有好几个系统,而这几个系统可能来自己不同的厂商,它们采用的开发技术可能很不一样,底层数据库也很能 有可能是 出于不同的平台,这就造成了同一个企业而在信息数据方面不"同 ...

  3. Oracle数据同步

    温习一下Oracle中常说的HA.RAC.Datagurad的区别 简单的说 rac侧重于负载均衡 dg侧重于容灾  datagourd 双机侧重于业务的自动接管 关键看你的应用要求是什么样的 来进行 ...

  4. Oracle数据同步接口,增量数据从ERP系统到本地临时表封装解决方案

    项目的许多基础数据需要从ERP系统中同步基础数据,例如:物料.客户.供应商.仓库等等. 之前做过一次比较死板的标准流程: 1.通过JDBC取ERP系统的增量数据; 2.解析; 3.然后用自己项目的DB ...

  5. oracle 上搭建ogg文档,ogg搭建配置实现oracle数据同步到mysql)

    在线QQ客服:1922638 专业的SQL Server.MySQL数据库同步软件 参考博客文章:https://www.jianshu.com/p/53882229b70e ? 1)根据不同的数据库 ...

  6. soul从入门到进阶02——soul-admin的数据同步流程

    soul-admin 的数据同步流程分析 在上一篇文章中我们提到,根据官网的介绍数据配置流程 soul网关的配置数据在修改后立即同步到soul gateway 中,不需要重启,性能高,生效快. 这个特 ...

  7. Oracle数据同步解决方案之databus

    [list][*][b]概述[/b][/list] 目前了解到基于Oracle的开源数据同步项目有yugong.databus.SymmetricDS,之前尝试了yugong,很容易上手.使用时需要注 ...

  8. oracle数据同步异常,案例:DataGuard同步异常问题处理记录

    本帖最后由 yuanqk 于 2018-8-11 20:28 编辑 真实案例,记录一下,都是小白,非常理解小白在遇到问题时的无奈,希望能帮助到一些人.过程非常简单,主要是处理问题的思路. 1.早上收到 ...

  9. ORACLE 数据同步时,批量进行新增和更新操作的SQL写法

    场景模拟:比如自己项目的一张EMP员工信息表,数据来源需要从第三方系统获取,随时可手动同步更新,也可以定时自动同步.一般情况下,通过创建时间或者最后更新时间,获取自上次同步后的数据增量,全部插入本地的 ...

最新文章

  1. 北京科技大学计算机科学与技术复试,【2017年整理】北京科技大学计算机科学与技术考研经验.doc...
  2. 一文让你秒懂AQS,附带源码剖析!
  3. YII 测试环境搭建
  4. C语言程序设计--输入与输出
  5. linux win10 时间同步服务器,windows和linux下服务器时间如何校正?
  6. docker privileged作用_docker总结
  7. Nginx应用场景之静态服务器
  8. leetcode695:DFS 岛屿最大面积(C语言)
  9. 备份工具之Xtrabackup
  10. C++函数使用规范建议
  11. 史上最强技术电信诈骗蔓延!无法防范!只能等死!
  12. 有效管理云计算成本的多个措施
  13. System Center 2012 R2 支持的SQL版本
  14. spring报“Could not resolve placeholder”错误
  15. 机器学习基石(一):什么是机器学习
  16. 有用的在线图片处理网站(证件照替换背景蓝色)
  17. (1-2层) 物理层下面的传输媒体
  18. ChinaVis 2017
  19. 收藏 | 百度、美团 ClickHouse、Flink 干货总结!
  20. Stockfolio 1.5 特别版 Mac 实时股票行情炒股软件

热门文章

  1. 他们也曾在数学“苦海”里痛不欲生
  2. 按照标题排序mysql_Oracle EBS Form中实现点击列标题进行排序
  3. Berkeley DB作用
  4. 如何缩小码农和高手的差距
  5. IDC报告:阿里云领跑中国数据库市场年度份额首超传统厂商
  6. 人工智能如何提升大数据存储与管理效率?
  7. 快速迁移Next.js应用到函数计算
  8. 性能提升约7倍!Apache Flink 与 Apache Hive 的集成
  9. 阿里云助力宁波市教育局“甬上云校”停课不停学
  10. 阿里云PolarDB发布重大更新 支持Oracle等数据库一键迁移上云