日期:2014-05-16  浏览次数:20618 次

使用logical standby技术实现Oracle数据库的读写分离

MySQL 作为应用系统的后台数据库时,我们常常见到这样的架构,一拖二、一拖三等等。这是用MySQL 的读写分离技术,实现数据的写入和读取分别在不同的库上,提升了数据库服务能力。

同样,在Oracle 作为后台数据库的架构中,我们也可以这么做。实现的方式有很多种。

(链接: http://mikixiyou.iteye.com/blog/1527226 )

有基于RAC 架构的,使用其中某个节点作为读库;

有基于Streams 数据复制技术的,实时将数据复制到另外一个库供读取;

有使用第三方数据复制软件的,如Golden Gate( 已经被Oracle 收入囊中)DSG 的,也是实时复制数据到另外一个库中。

还有使用Logical standby 技术,实时复制数据到一个库,且该库是对应用而言是只读的。

我们这里介绍最后一个方法,利用dataguard 技术中的logical standby 实现Oracle 数据库的读写分离。

一、创建物理 standby

配置主库(也就是主要执行写操作的数据库)的初始化参数

*.log_archive_config='dg_config=(webdb,webdg)'

*.log_archive_dest_2='service=webdb_standby lgwr sync affirm? valid_for=(online_logfiles,primary_role) db_unique_name=webdg'

*.log_archive_dest_state_2='enable'

修改主库的