首页 > 代码库 > LIMS系统故障切换FAILOVER测试与调整

LIMS系统故障切换FAILOVER测试与调整

本例以旧LIMS系统为例,说明FAILOVER的测试与配置及应用。

先在LIMS应用服务器上,通过SQLPLUS登录到数据库

技术分享

如上,当前连接实例为lims1

然后关闭实例lims1

技术分享

srvctl status database –d lims确认实例lims1已经关了

再回到应用服务器,用show parameter instance_name显示当前连接实例

技术分享

提示ORA-03113错误,不能FAILOVER到正常实例。

虽然集群模式,但LIMS系统无法正常进行故障切换。

分析:

从TNS文件可以看出,旧系统试图通过客户端FAILOVER方式来切换到正常实例,TNS文件内容如下:

CTI_RAC =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.1.83)(PORT = 1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.1.84)(PORT = 1521))

      (LOAD_BALANCE = yes)

    )

    (CONNECT_DATA =http://www.mamicode.com/

      (SERVER = DEDICATED)

      (SERVICE_NAME = lims)

    )

  )

TNS文件虽然添加了两VIP地址,但并没有为其分配FAILOVER_MODE,修改TNS文件内容如下:

CTI_RAC =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.1.83)(PORT = 1521))

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.1.84)(PORT = 1521))

      (LOAD_BALANCE = yes)

    )

    (CONNECT_DATA =http://www.mamicode.com/

      (SERVER = DEDICATED)

      (SERVICE_NAME = lims)

      (FAILOVER_MODE =

         (TYPE = SELECT)

         (METHOD = BASIC)

         (RETRIES = 180)

         (DELAY = 5)

      )

    )

  )

再次测试

技术分享

发现,当前连接的实例是lims2

关闭实例lims2

技术分享

回到应用服务器,查看切换是否成功

技术分享

成功切换到实例lims1

上面是客户端的FAILOVER,客户端能实现FAILOVER,但配置与管理相对麻烦,需要为每个客户端调整TNS参数。

下面是服务端的FAILOVER

select * from dba_services;

技术分享

注意:SYS$开头的两个服务不去动它,这里选用lims服务。当然,你也可以创建其他服务

使用dbms_service包修改服务lims

技术分享

技术分享

lims服务支持FAILOVER

回到应用服务器,再次测试

TNS文件里面添加下面内容:

RAC =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.1.80)(PORT = 1521))

    )

    (CONNECT_DATA =http://www.mamicode.com/

      (SERVER = DEDICATED)

      (SERVICE_NAME = lims)

    )

  )

10.10.1.80为Scan IP,服务名仍为lims

技术分享

连接实例为lims2

关闭该实例

技术分享

回到应用服务器,再次测试

技术分享

FAILED_OVER为YES,说明该会话是FAILOVER而来。

 

说明:

FAILOVER在单实例环境照样适应,如下

技术分享

单实例环境,实例名为orcl

测试如下:

技术分享

当前会话ID为12

测试从t1表中获取数据

技术分享

当执行数据查询后,切换到另一会话,重启数据库

技术分享

发现在重启数据库过程中,会话12获取数据会有停顿等待

技术分享

如上图,截取到的等待界面

技术分享

当数据库重新启动后,PLSQL继续并输出后续数据。

技术分享

上面就是单实例下的FAILOVER。

应用中测试如下 ,在加载数据过程中模拟数据库重启

技术分享

打开交互界面

技术分享

点击“button1”打开数据库连接

在弹出“startup force”时,我们重启数据库

技术分享

如上,数据库重启完毕后,再回到交互界面,点击“确定”继续加载数据

技术分享

应用并没有因为数据库的重启而中断,而是完成了对数据的加载,FAILOVER成功切换。

LIMS系统故障切换FAILOVER测试与调整