『Oracle复制技术系列白皮书』Oracle数据库复制软件白皮书(三)
原创
©著作权归作者所有:来自51CTO博客作者radiumguo的原创作品,请联系作者获取转载授权,否则将追究法律责任
基于日志分析的实时复制技术
DDS通过分析Oracle redo log获得实时交易信息,完成schema或table级别的数据复制。区别于早期的日志分析技术,DDS对日志的整合和传输以交易为单位,使用该技术,在拥有高性能的同时还能更好的保证数据传输的一致性和完整性。对生产数据库也不会增加负载。
DDS从Oracle redo logs里面获取所有的数据库改变信息。通过对信息的分析整合,DDS将完整的交易信息复制到目的端。
DDS不是等待Oracle redo log文件写满之后再处理,而是随时读取其数据块内容,间隔时间可以用参数指定,一般是秒级。DDS也不会复制Oracle redo log的全部内容到目的端数据库,除指定复制对象(数据表)相关的DML/DDL操作之外,其他的信息将丢弃处理。
为了避免可能出现的复制错误,用户需要打开数据库的supplemental logging 和force logging参数以便DDS能获取完整的数据信息。
置于裸设备或文件系统(包括ocfs)中的Oracle redo log可以被DDS正常读取。如果用户使用的是Oracle 10g ,并且将redo log保存在ASM(一种新的Oracle存储格式)中,则需要在裸设备或文件系统上手动创建一组与原有日志同步的redo log member,供DDS复制使用。
Online 和 Archived Redo Logs
Oracle有两种类型的日志:在线日志和归档日志。一般情况下,DDS从一组在线日志读取信息,因此,不要求Oracle数据库必须打开归档日志。但在某些特殊情况下,online redo log没来得及分析就被覆盖,此时,如果Oracle是归档模式,则DDS将从归档日志读取需要的信息。
复制对象的指定
DDS支持两种级别的复制:1.用户(schema)级复制;2.表级复制。
用户级复制表示源端数据库指定用户(schema)下的所有表、视图、索引、过程、函数、包、序列等数据对象全部复制到目标端数据库指定的用户下。表级复制表示源端数据库指定用户(schema)下的单个表复制到目标端数据库指定用户下的单个表。
在使用DDS时,用户通过编辑配置文件指定源端和目的端复制对象的映射关系,包括源端对象名,目的端对象名,目的主机编号等。源端和目的端对象名称可以不同,但结构必须一致。软件运行过程中,复制对象的映射参数会驻留内存,DDS通过日志分析过滤,只处理指定复制对象有关的交易,其它用户或表的操作信息则被丢弃。
Rowid mapping
早期的数据库逻辑复制软件要求被复制的数据表有主键索引,通过where子句查询的方式来定位DML操作的目标行。这种方法在数据修改较多或者表内行数较多的应用环境,特别是Update操作频繁的情况下,效率较低。
为了满足海量数据系统的应用要求,DDS以Oracle内部rowid为参照进行复制数据定位。系统在初始化过程中会自动创建源端数据行和目的端数据行的rowid mapping映射表,为二进制格式,系统根据该映射关系找到DML操作的目标行。Rowid定位技术在海量数据环境下处理Update和Delete操作具有较大的性能优势。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
IPS白皮书
IPSV5.5技术白皮书,有需要的,进来下载。
职场 网络安全 休闲