Nul*_*ion 5 oracle oracle-11g-r2 rac
我在具有两个节点的 RAC 环境中设置了 Oracle 11gR2。我设置了 SCAN,例如:我在 DNS 设置上有两个条目,因此我可以 ping SCAN 名称并到达任一节点。我也可以 ping 两个-vip地址。
理论上,新的 SCAN 功能应该提供比透明应用程序故障转移 (TAF) 更好的功能,TAF 需要在每个客户端中进行额外配置。使用 SCAN,我可以连接到 SCAN 地址,我应该能够:
连接到数据库并检查我连接到哪个实例,例如(在 SQL*Plus 上):
select instance_name, host_name from v$instance;
Run Code Online (Sandbox Code Playgroud)关闭我连接到的实例shutdown abort(在单独的会话中)
在我执行步骤 1 的同一个会话中,如果我重新运行相同的select语句,它应该会自动跳到幸存的节点。
相反,我得到:
ORA-03113: end-of-file on communication channel
Process ID: XXXXX
Session ID: YYY Serial number: ZZ
Run Code Online (Sandbox Code Playgroud)
这是怎么回事?
注意:在第 2 步之后,我可以退出 SQL*Plus 并重新连接就好了。如果我试图留在同一个会话中,它就行不通。
如果我将客户端中的 tnsnames.ora 修改为:
RAC =
(DESCRIPTION =
(LOAD_BALANCE = YES)
(ADDRESS = (PROTOCOL = TCP)(HOST = cluster-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
(FAILOVER_MODE =
(TYPE = SELECT) (METHOD = BASIC) (RETRIES = 180) (DELAY = 5)
)
)
)
Run Code Online (Sandbox Code Playgroud)
然后它以我期望的方式工作。这是在 11gR2 之前必须完成的工作,但 SCAN 应该自动处理所有这些,因此一个简单的条目如下:
RAC =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = cluster-scan)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
Run Code Online (Sandbox Code Playgroud)
应该以完全相同的方式工作。
SCAN 应该为您提供连接时故障转移,而不是运行时故障转移(如 TAF)。你从哪里得到 SCAN 也意味着 TAF 的(错误)信息?
| 归档时间: |
|
| 查看次数: |
9391 次 |
| 最近记录: |