首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle Dataguard TAF (透明应用程序故障切换)问题

Oracle Dataguard TAF (透明应用程序故障切换)问题
EN

Stack Overflow用户
提问于 2019-06-05 06:48:43
回答 1查看 607关注 0票数 0

我们已经为dataguard数据库配置了oracle TAF (透明应用程序故障切换),以便应用程序可以在主数据库出现任何问题时使用相同的服务名连接数据库,并且必须切换到备用数据库。但是,我们遇到了一个独特的问题,数据中心内的应用程序服务器能够连接到数据库,但是来自不同数据中心的服务器无法使用taf服务..after 90秒超时间隔连接到备用主机并失败

使用直接主机名和sid的连接即使跨数据中心也能正常工作

错误:

代码语言:javascript
复制
Caused by: java.io.IOException: Socket read timed out, socket connect lapse 3 ms. plx9852.xyz.com/135.167.30.103 1524 3 1 true 
at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:209) 
at oracle.net.nt.ConnOption.connect(ConnOption.java:161) 
at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:470) 
... 54 more
代码语言:javascript
复制
pcdrest_taf.db.xyz.com=
(description=(connect_timeout=90)(retry_count=30)(retry_delay=3)(transport_connect_timeout=3)(load_balance=off)(failover=on)(address_list=(address=(protocol=tcp)(host=plx9843.xyz.com)(port=1524))(address=(protocol=tcp)(host=plx9852.xyz.com)(port=1524)))(connect_data=(service_name=pcdrest_taf.db.xyz.com)(failover_mode=(type=select)(method=basic))))

使用LDAP的应用程序上的连接字符串:

代码语言:javascript
复制
spring.datasource.jdbcUrl=jdbc:oracle:thin:@ldap://polarx.xyz.com:3060/pcdrest_taf,cn=OracleContext,dc=db,dc=xyz,dc=com ldap://polarx1.xyz.com:3060/pcdrest_taf,cn=OracleContext,dc=db,dc=xyz,dc=com ldap://polarx2.sbc.com:3060/pcdrest_taf,cn=OracleContext,dc=db,dc=xyz,dc=com ldap://polarx3.sbc.com:3060/pcdrest_taf,cn=OracleContext,dc=db,dc=xyz,dc=com ldap://polarx4.sbc.com:3060/pcdrest_taf,cn=OracleContext,dc=db,dc=xyz,dc=com ldap://polarx5.sbc.com:3060/pcdrest_taf,cn=OracleContext,dc=db,dc=xyz,dc=com 
EN

回答 1

Stack Overflow用户

发布于 2019-06-05 15:35:06

请注意,在没有任何警告的情况下,Oracle在版本12.1中将transport_connect_timeout的含义从秒更改为毫秒。因此,如果你使用这个版本,就无法判断3是秒还是毫秒。

从版本12.2开始,您的值3(微秒)值太低。

此外,Oracle JDBC驱动程序中有几个与TAF相关的错误。例如:

  • 错误12998506 RETRY_COUNT连接参数是使用JDBC thin Description

时尝试连接的总次数

RETRY_COUNT连接参数是在初始连接尝试失败后应进行的额外连接尝试次数。因此,如果RETRY_COUNT为2,则将为ADDRESS_LIST中的每个地址进行最多3次连接尝试。然而,JDBC thin将RETRY_COUNT视为连接尝试的总次数,因此,在上面的示例中,JDBC thin将对每个地址进行最多2次尝试,而不是预期的3次。

这是错误12760352的后续,在使用JDBC thin时,ADDRESS_LIST中的地址以错误的顺序被重试(例如,如果地址列表包含A和B,则JDBC thin将尝试以A A ...B B ..。而不是A B A B ...)。

PS:参数retry_delay似乎从版本开始就被JDBC驱动程序忽略了。12摄氏度或更高。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56452277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档