当前位置: 首页 > 科技观察

Oracle12cR2中的ADG会话保留特性

时间:2023-03-12 07:06:27 科技观察

Oracle12cR2有一个很好的特性,就是ActiveDataGuard会话保留。原始名称是保留活动的DataGuard应用程序连接。你怎么理解的?例如,在ActiveDataGuard连接会话上,在切换过程中会话连接将始终保持不中断。这听起来很有特点,可以提升用户体验,是一种比较透明的方式。这个怎么样?让我们做一个简单的测试。让我们看看默认情况下的ADG会话。切换过程直接使用DGBroker完成,速度很快。这是一个12cR2环境,也使用远程同步。DGMGRL>showconfigurationConfiguration-dg_test12csProtectionMode:MaxPerformanceMembers:test12cs-Primarydatabasetest_sync-Farsyncinstancetest12css-PhysicalstandbydatabaseFast-StartFailover:DISABLEDConfigurationStatus:SUCCESS(状态更新于10秒前)我们现在以ADG模式连接到备用数据库。SQL>selectopen_modefromv$database;OPEN_MODE-----------------------------------------READONLYWITHAPPLY如果此时我们在备库上使用语句查询,使用TNS连接,然后DGBroker进行切换,切换情况如下,也是一气呵成。DGMGRL>switchovertotest12cssPerformingswitchoverNOW,pleasewait...Operationrequiresaconnectiontodatabase"test12css"Connecting...Connectedto"test12css"ConnectedasSYSDBA.Newprimarydatabase"test12css"isopening...Operationrequiresstartupofinstance"test12cs"ondatabase"test12cs"Startinginstance"test12cs"...forRDBMSinstanceORACLEinstancestarted.Databasemounted.Databaseopened.Connectedto"test12cs"切换成功,newprimaryis"test12css"DGMGRL>客户端反复测试连接情况如下:SQL>selectcount(*)fromcat;COUNT(*)------------153SQL>/COUNT(*)------------153SQL>/selectcount(*)fromcat*ERRORatline1:ORA-03113:end-of-fileoncommunicationchannelProcessID:94489SessionID:419Serialnumber:62932可以看到连接是在切换过程中中断,然后将完全断开。SQL>/ERROR:ORA-03114:notconnectedtoORACLE这里要说一下这个特性的情况,其实它还涉及到一个参数standby_db_preserve_states,默认是NONESQL>showparameterstandby_db_preserve_statesNAMETYPEVALUE-------------------------------------------------------------standby_db_preserve_statesstringNONE我们设置为ALL,这个修改需要重启备库。设置完成后,我们将进行与上述类似的切换步骤。直接看效果吧。随时查看本次会话的数据查询情况。整个过程比较顺利。切换后过程中会有两秒左右的停顿,但始终保持连接。计数(*)------------153SQL>/计数(*)------------153SQL>/计数(*)------------153SQL>/COUNT(*)---------153SQL>/COUNT(*)---------153总体来说,这个功能确实达到了预期的效果,还是比较不错的。