Oracle双向复制:实现高可用的好帮手(oracle双向复制)
Oracle双向复制是一项数据库技术,它允许在2台服务器上的数据库之间实现双向无缝同步。它更新系统上的数据,并随时准备双向切换,以提供必要的可用性,以实现高可用性和Disaster Recovery(DR)。它也可以非常有效地将数据从一个服务器移至另一个服务器,可以在生产和开发/测试环境之间进行数据发布和升级。
Oracle双向复制使用Oracle Streams来复制和分发它在2台服务器之间的消息。Oracle Streams是Oracle Advanced Queueing(AQ)的强大扩展,可以跨多个服务器在多个实例中保存和复制记录。Oracle双向复制的工作原理是:
(1)双方的数据库实例都建立Streams环境,为复制定义一个异步复制结构,可以自行定义或使用配置文件。
(2)所有参与复制的表必须同时在两个Oracle实例中创建,需要特定的权限才能正常工作。
(3)它监视两个服务器上的表,并根据检测到的任何更改,将其复制到对方的数据库实例中。因此,两个服务器之间的数据更改可以保持实时同步。
下面是一个使用Oracle双向复制创建2个数据库实例的权限的例子:
CREATE PUBLIC DATABASE LINK my_db
CONNECT TO myuser IDENTIFIED BY mypass
USING ‘my_db’;
BEGIN
DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => ‘STREAMS_ADMIN’,
grantor => ‘SYS’,
admin_privilege => ‘capture’,
db_link => ‘my_db’);
DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => ‘STREAMS_ADMIN’,
grantor => ‘SYS’,
admin_privilege => ‘apply’,
db_link => ‘my_db’);
DBMS_STREAMS_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => ‘STREAMS_ADMIN’,
grantor => ‘SYS’,
admin_privilege => ‘administer’,
db_link => ‘my_db’);
END;
/
最后,使用预定义的脚本,可以创建端口和适当的服务设置,以让两个数据库服务器之间的复制流程可以运行起来。
因此,利用受支持的Oracle双向复制,可以更好地实现高可用性,而无需编写大量的复制程序或保存式脚本,亦无需担心双向切换的巨大投资成本,是获得可用性的一种简单和灵活的方式。