EnterpriseDB Replication,复制Oracle数据测试(1)

简介:
EntepriseDB 复制软件目前支持多种数据库到postgre的复制,其基本结构由发布者(Publication)与订阅者(Subscriptions)组成,Replication软件可针对来自不同类型数据库的多个发布者,将其数据复制到多个订阅者(Subscriptions)数据库中。 其可能的几种拓扑结构,如以下图:         同Oracle中普通的物化视图一样,不支持对订阅者(Subscriptions)数据的修改-- Changes must not be made to the data or the definitions of the subscription tables.  EnterpriseDB Replication软件的具体工作模式分成2种:即快照模式(snapshot)与同步模式(synchronization);在第一次启用同步前,需要进行一次快照操作,之后便可以进行较为轻量级同步操作了。若要使用同步模式(synchronization)则要求发布者所包含的表必须具有主键,而在仅使用快照模式的情景中则不需要。(Each table used in a publication must have a primary key with the exception of tables in snapshot-only publications, which do not require a primary key.) 以上模式均支持过滤器(fliter),即可以指定需要复制的具体数据子集。 EnterpriseDB Replication软件其同步(synchronization)模式复制的基本原理是基于trigger的,而非如Quest公司的shareplex或golden gate般抽取重做日志生成SQL的方式。trigger方式会在数据库源端产生一定的性能影响,若在mission critical的生产数据库中实施EDB replication 复制则需要考虑到这一点(这种情况下推荐使用Snapshot模式)。这可能是EDB复制软件比较不成熟的一点,就目前仅对Oracle日志文件的研究认识,挖掘重做日志进而实现数据复制的途径已经没有技术上的难点了。 以下发布者所包含的数据对象或表属性,将在订阅者成功建立时被复制到订阅者所在的数据库:
  • Tables
  • Views (for snapshot-only publications) – created as a table in the subscription database
  • Primary keys
  • Not null constraints
  • Unique constraints
  • Check constraints
  • Indexes
注意:外键约束将不被复制 同时目前复制软件存在一定的限制,Oracle中的hash分区将不被复制,同时Oracle中包含以下数据类型列的表将无法复制:
  • BFILE
  • BINARY_DOUBLE
  • BINARY_FLOAT
  • MLSLABEL
  • XMLTYPE
Oracle中包含以下数据类型列的表,将不能使用同步模式(synchronization replications):
  • BLOB
  • CLOB
  • LONG
  • LONG RAW
  • NCLOB
  • RAW
快照模式情况下,订阅者中复制目标表将首先被truncate截断,之后若订阅者数据库类型是Oracle则将使用JDBC驱动批量的将源端的数据INSERT进来,若数据库类型是EnterpriseDB advanced Sever则将使用Postgre中的Copy命令。   同步模式下复制软件通过在源端配置的触发器记录表,获知源端该时段内所经历的DML操作,进而在目标端生成对应修改的SQL语句(显然同源端的原始SQL不同)。   EnterpriseDB公司推荐在以下情景中使用快照模式以获得更好的性能:
  1. 表相对而言较小
  2. 在复制间隔中绝大多数数据行会被修改
而同步模式则更适宜于以下情景:
  1. 数据表非常巨大
  2. 在复制间隔中仅少数数据会被修改
本文转自maclean_007 51CTO博客,原文链接:http://blog.51cto.com/maclean/1277093
相关文章
|
2月前
|
安全 数据管理 测试技术
告别蛮力:让测试数据生成变得智能而高效
告别蛮力:让测试数据生成变得智能而高效
351 120
|
3月前
|
存储 测试技术 API
数据驱动开发软件测试脚本
今天刚提交了我的新作《带着ChatGPT玩转软件开发》给出版社,在写作期间跟着ChatGPT学到许多新知识。下面分享数据驱动开发软件测试脚本。
116 0
|
9月前
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
在YMP校验过程中,从yashandb同步至Oracle的数据出现timestamp(0)字段不一致问题。原因是yashandb的timestamp(x)存储为固定6位小数,而Oracle的timestamp(0)无小数位,同步时会截断yashandb的6位小数,导致数据差异。受影响版本:yashandb 23.2.7.101、YMP 23.3.1.3、YDS联调版本。此问题会导致YMP校验数据内容不一致。
|
6月前
|
人工智能 缓存 自然语言处理
别再手搓测试数据了!AE测试数据智造系统揭秘
本文介绍如何通过构建基于大语言模型的测试数据智造Agent,解决AliExpress跨境电商测试中数据构造复杂、低效的问题,推动测试效率提升与智能化转型。
别再手搓测试数据了!AE测试数据智造系统揭秘
|
10月前
|
Oracle 关系型数据库 Linux
【YashanDB 知识库】通过 dblink 查询 Oracle 数据时报 YAS-07301 异常
客户在使用 YashanDB 通过 yasql 查询 Oracle 数据时,遇到 `YAS-07301 external module timeout` 异常,导致 dblink 功能无法正常使用,影响所有 YashanDB 版本。原因是操作系统资源紧张,无法 fork 新子进程。解决方法包括释放内存、停掉不必要的进程或增大进程数上限。分析发现异常源于 system() 函数调用失败,返回 -1,通常是因为 fork() 失败。未来 YashanDB 将优化日志信息以更好地诊断类似问题。
|
9月前
|
Oracle 关系型数据库 Java
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
本文介绍通过Flink CDC实现Oracle数据实时同步至崖山数据库(YashanDB)的方法,支持全量与增量同步,并涵盖新增、修改和删除的DML操作。内容包括环境准备(如JDK、Flink版本等)、Oracle日志归档启用、用户权限配置、增量日志记录设置、元数据迁移、Flink安装与配置、生成Flink SQL文件、Streampark部署,以及创建和启动实时同步任务的具体步骤。适合需要跨数据库实时同步方案的技术人员参考。
【YashanDB知识库】Flink CDC实时同步Oracle数据到崖山
|
9月前
|
存储 Oracle 关系型数据库
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
【YashanDB 知识库】YMP 校验从 yashandb 同步到 oracle 的数据时,字段 timestamp(0) 出现不一致
|
9月前
|
Oracle 关系型数据库 Linux
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
【YashanDB知识库】通过dblink查询Oracle数据时报YAS-07301异常
|
9月前
|
Oracle 关系型数据库 MySQL
使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试
这篇文章是作者尚雷关于使用崖山YMP迁移Oracle/MySQL至YashanDB 23.2的验证测试分享。介绍了YMP的产品信息,包括架构、版本支持等,还详细阐述了外置库部署、YMP部署、访问YMP、数据源管理、任务管理(创建任务、迁移配置、离线迁移、校验初始化、一致性校验)及MySQL迁移的全过程。
|
9月前
|
存储 Oracle 关系型数据库
【YashanDB知识库】YMP校验从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致
【YashanDB知识库】YMP校验从yashandb同步到oracle的数据时,字段timestamp(0)出现不一致

推荐镜像

更多