如何实现物理DataGuard客户端的无缝切换
项目客户一直希望能够实现DataGuard主备切换的自动化,即主库故障后自动切换到备库,并使这个过程能够被应用感知。在咨询了DG经纪人后,考虑到其可用性、易用性和许可证问题,我放弃了该经纪人。但是,将物理备用数据库切换到主数据库对于应用程序来说仍然是透明的。我曾经写过一篇歪文,讲的是通过Linux系统的IP漂移设置,让主备切换对应用程序透明。对于Oracle 11g的dataguard切换,自动切换可以通过创建触发器来实现。主要步骤如下:
主库执行:
1.创建服务
开始
DBMS_SERVICE.CREATE_SERVICE (Service_name => 'dg_taf_pri',
network_name => 'dg_taf_pri',
aq_ha_notifications => true,
Failover_Method => '基本',
Failover_type => '选择',
Failover_retries => 30,
failover_delay 2.创建存储过程,主库启动服务监控
创建或替换过程dg_taf_proc为p>从v$数据库中选择database_role到v_role;
如果 v_role = 'primary' 则
dbms_seRVICE.START_SERVICE('dg_taf_pri');
其他
其他
DBMS_SERVICE.STOP_SERVICE('dg_taf_pri');
结束如果;
结束;;所有者,object_name ,procedure_name from dba_procedures where object_name='DG_TAF_PROC';
选择不同的名称,owner from dba_source where name like 'DG_TAF_PROC%';
3.创建触发器,所有者 主备切换时触发
启动后创建或替换TRIGGER dg_taf_trg_startup
或数据库上的db_role_change
begin
dg_taf_proc;
结束;
/
从 dba_triggers 中选择触发器名称、触发器名称
,其中触发器名称 = 'DG_TAF_TRG_STARTUP';
4. 客户端配置:
dg_taf =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = tcp)(主机 = 12.12.12.123)(端口 = 1521))
(地址 = (协议 = tcp)(主机 = 12.12.12.125)(端口 = 1521))
< p> (LOAD_BALANCE = 是)(CONNECT_DATA =
(服务器 = 专用)
(SERVICE_NAME = dg_taf_pri)
( FAILOVER_MODE =
(类型=会话)
(方法=基本)
(重试= 180)
(延迟= 5)
)
)
)
感谢您的阅读。以上就是《如何实现物理DataGuard客户端的无缝切换》的内容。看完文章,相信大家对于如何实现物理DataGuard客户端的无缝切换有了一定的了解。更深刻的理解和具体运用还需要通过实践来验证。在此,小编将为大家推送更多相关知识点的文章,欢迎关注!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 编程技术 > 如何实现物理DataGuard客户端的无缝切换