0

我有 02 个 oracles 和 oracles vcpu 服务器,分别在其上创建了一个主 BD(db_name = Chicago 和 db_unique_name = Chicago)和一个备用 BD(db_name = Chicago 和 db_unique_name = boston)。我使用实用程序 srvctl 在 02 服务器中创建了一个服务:

srvctl add service -d "db_unique_name" -s CHICAGO_HA -l PRIMARY -q TRUE -e SELECT -m BASIC -z 150 -w 10

然后我在我的 tnsnames.ora 文件中添加了一个条目:

CHICAGO_HA =
  (DESCRIPTION_LIST =
    (LOAD_BALANCE = off)
    (FAILOVER = on)
    (DESCRIPTION =
        (CONNECT_TIMEOUT = 10) (RETRY_COUNT = 3)
        (ADDRESS_LIST = (ADDRESS = (PROTOCOL = tcp) (HOST = 192.168.17.140) (PORT = 1522)))
        (CONNECT_DATA = (SERVICE_NAME = chicago_ha))
    )
    (DESCRIPTION =
        (CONNECT_TIMEOUT = 10) (RETRY_COUNT = 3)
        (ADDRESS_LIST = (ADDRESS = (PROTOCOL = tcp) (HOST = 192.168.17.138) (PORT = 1522)))
        (CONNECT_DATA = (SERVICE_NAME = chicago_ha))
    )
 )

我有一个客户,我在其上打开了一个会话:

sqlplus sys/*****@chicago_ha as sysdba 

在主要主机上。我可以查询表。但是在切换后我无法查询表,因为我的会话以我不再连接的错误结束。

4

1 回答 1

1

如果我没看错,你的设置有连接时故障转移,但你试图使用已经打开的连接到现在关闭的实例?您需要应用程序连续性或透明应用程序连续性之类的东西才能将现有连接移动到另一个实例。查看 Oracle 白皮书Oracle 数据库的持续可用性应用程序连续性

SQL*Plus 通常不是一个很好的测试工具来模拟具有连接池和大量用户的真实应用程序。

于 2020-03-10T23:15:58.250 回答