Stream DDS【简称DDS】是基于redolog分析技术的Oracle实时复制工具,具有简单灵活、高性能低成本的特点,部署和使用非常简便,对系统资源和运行环境的需求也较低。DDS能够帮助用户在复杂的应用环境下完成Oracle容灾备份、异构迁移、业务数据分发、基础数据整合等工作。
DDS能做什么?
DDS能够满足用户多种业务需求,主要有:
提高系统的整体可用性
DDS能够帮助用户提高Oracle数据库的可用性,无论执行计划内停机(系统升级、备份)还是遇到故障引起的非计划宕机(例如硬件故障、灾难、人为错误等),DDS对数据库的灾备保护和异构迁移能最大限度的减少宕机时间。提高可用性是减少数据丢失、经济损失和保持生产力水平的关键。
逻辑容灾
对于大部分公司而言,容灾是一项巨大的工程,意味着高额的资金投入和人力成本。受到传统复制技术的限制,容灾必须拥有专用的硬件支持和专用的光纤传输链路,容灾距离和系统平台还有诸多的限制。此外,由于传统容灾系统的目的端数据库不能随时打开使用,不但风险不能评估,而且巨大的投入也得不到回报。
DDS使用逻辑数据容灾技术,传递交易指令,因此传输数据量很小,保证了在低带宽环境下实现低延迟的数据异步复制,是一种高效且低成本的数据库容灾方式。DDS使用标准的IP网络进行通讯,容灾端的Oracle数据库可以部署在本地或远程容灾中心,距离没有限制。此外,容灾端数据库始终处于打开状态,因此,当生产数据库遇到计划内或非计划停机时,DDS能够支持前端应用程序快速、无缝的切换到容灾数据库。与其它基于磁盘或文件系统的物理复制技术相比,不但省略了漫长的数据库recovery和启动时间,而且能够保证100%的切换成功率。
分担数据库负��
DDS的复制技术特点决定了目的端数据库始终处于可用状态,对于实时交易处理之外的只读应用,例如历史查询、报表处理、数据备份、统计分析等都可以交给复制的数据库处理。多种应用也不必在同一个交易数据库上争夺资源和时间窗口。生产系统运行和维护的压力得以释放,提高了稳定性;不同的应用在各自的数据库上也可以得到分别的优化。
业务数据分发
DDS支持企业范围内数据分发,从数据生产库实时复制到一个或多个本地或异地的数据库。DDS有多种数据分发拓扑结构,一对多,多对一,级联复制等。数据分发是一种典型的通过部署多服务器、多数据库来分担负载,提高响应速度的企业应用模式。
跨平台数据迁移
DDS支持跨平台的数据传输,复制的源和目的系统可以在AIX、HP-UX、Solaris、Linux、Windows之间任意选择。DDS同时支持Oracle 9i和Oracle 10g。对于用户来说,不但硬件平台的选择有很大的灵活性,也可以用DDS来完成异构平台的数据库升级和迁移工作。
实时复制和批量复制
应用的需求影响着用户使用复制工具的模式,对于容灾和查询应用,连续的实时复制保证目的端数据库拥有和生产系统完全一样的数据状态;而对于定时备份、系统升级和定时分析等应用,用户则希望复制软件做到定时或周期性的批量数据迁移。在DDS中批量复制和实时复制是相互独立又紧密结合的两个部分,通过管理员的操控,DDS完全满足用户在多种应用条件下的需求。
同步数据校验
DDS提供静态数据校验手段,通过静态校验复制源端和目的端数据,使用者可以快速定位同步错误的位置,以便尽快修复。
交易统计
DDS在完成实时数据复制的同时,也跟踪到了数据库交易数量的变化,DBA可以随时查询到生产数据库在指定时间段的交���统计结果,通过分析这些数据,DBA能够量化生产数据库压力的变化,从而为数据库的扩容和升级提供了依据。
增强分析工具
DDS提供了简单实用的数据库工具包,包括日志分析工具、文件分析工具、导入导出工具等,工具包能帮助有经验的DBA更深入的分析处理数据库的问题。
DDS系统结构
模块化的系统结构
DDS采用模块化设计,每个模块完成单独的功能,多个模块互相配合工作。这样的设计保证DDS有很好的可扩展性,功能可以做到并发处理,单独的模块维护和升级也不会影响整个软件。模块之间有并发和自我监控机制,即使有部分进程实效,也不会导致工作停止。
物理结构上,DDS包括内存进程和磁盘存储两个部分。内存进程包括后台进程和共享内存区;磁盘存储部分包括日志文件和缓存文件。
DDS和Oracle Redo Logs
日志的处理和使用
DDS通过在线分析Oracle redo log获得交易语句和数据,完成schema或table级别的数据复制。区别于早期的以SQL语句为单位的日志处理、传输技术,DDS对日志的整合和传输以“交易”为单位,无需处理复杂的“回滚”机制。使用该技术,在拥有高性能的同时还能够更好的保证数据复制的一致性和完整性。
DDS无需等待Oracle redo log文件归档之后再进行处理,而是在线读取其数据块内容。读取的间隔时间可以用参数设定,以秒为单位。DDS也不会传输Oracle redo log的全部内容到目的端,除指定复制对象(数据表)相关的DML/DDL操作之外,其他的信息不做处理。配置时用户需要打开数据库的supplemental logging 和force logging参数以获取完整的数据信息。
置于裸设备或文件系统(包括ocfs)中的Oracle redo log可以被DDS正常读取。如果用户将redo log保存在ASM(一种新的Oracle存储管理)中,则需要在裸设备或文件系统上创建一份与ASM日志同步的redo log members供DDS读取。
Redo Logs 和 Archived Logs
Oracle的日志有两种类型:在线日志Redo Logs和归档日志Archived Logs。通常情况DDS读取在线日志的信息。因此不要求Oracle数据库必须打开归档。但在某些特殊情况下,Redo logs还没来得及处理就被覆盖或清除,此时DDS将需要读取归档日志以获取需要的信息,所以我们推荐用户打开Oracle归档。