错误的TAF配置导致应用不能重连DB:
应用反馈DB连接断开之后,无法自动重连,应用报错:
WARN JDBCExceptionReporter:77 - SQL Error: 17008, SQLState: null
ERROR JDBCExceptionReporter:78 - 关闭的连接
INFO DefaultLoadEventListener:111 - Error performing load command
org.hibernate.exception.GenericJDBCException: Cannot release connection
查看了下应用连接的配置情况,这是应用最初的配置:
hibernate.connection.url=jdbc\:oracle\:thin\:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.18.11.130)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 10.18.11.131)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = XMM)(FAILOVER_MODE =(TYPE
= SESSION)(METHOD = BASIC))))
注意到这里使用了FAILOVER_METHOD这个配置项,但是在官方文档中TNSNAMES.ORA中不存在此配置项,只有FAILOVER_MODE:
FAILOVER_MODE Purpose
To instruct Oracle Net to fail over to a different listener if the first listener fails during run time. Depending upon the configuration, session or any SELECT statements which were in progress are automatically failed over.
This type of failover is called Transparent Application Failover (TAF) and should not be confused with the connect-time failover FAILOVER parameter.
Put this parameter under the CONNECT_DATA parameter.
估计是混淆了配置项(FAILOVER_MODE=>FAILOVER_METHOD)导致应用不能尝试重连。
使用SQL*Plus做了个测试:
实验一:使用FAILOVER_METHOD
testrac =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.18.15.169)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.18.15.170)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = RAC)
(FAILOVER_METHOD = #<===此处使用FAILOVER_METHOD
(TYPE = SESSION)
(METHOD = BASIC)
)
)
)
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
rac1
SQL> select instance_name from v$instance; <===模拟rac1实例故障,未能自动重连
select instance_name from v$instance
*
第 1 行出现错误:
ORA-03135: 连接失去联系
SQL> select instance_name from v$instance;
ERROR:
ORA-03114: 未连接到 ORALCE
实验二:使用FAILOVER_MODE
testrac =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.18.15.169)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.18.15.170)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = RAC)
(FAILOVER_MODE = #<===此处使用FAILOVER_MODE
(TYPE = SESSION)
(METHOD = BASIC)
)
)
)
SQL> select instance_name from v$instance;
INSTANCE_NAME
----------------
rac1
SQL> select instance_name from v$instance; <===此处为客户端发现连接已经被断开
select instance_name from v$instance
*
第 1 行出现错误:
ORA-12571: TNS:包写入程序失败
SQL> select instance_name from v$instance; <===自动重连DB
INSTANCE_NAME
----------------
rac2
总结:FAILOVER_METHOD与FAILOVER_MODE的混淆导致应用程序发生故障,非常低级的错误,文档的很多细节值得深入学习。
分享到:
相关推荐
db2db配置详细说明文档详细说明了如何使用db2db定时同步数据库中的表
toad for db2 v4.7.0 Connection 连接配置设计步骤
Toad for DB2 4.7 Trial正式版+注册机+连接配置方式 toad_for_db2_keygen + Quest_central_for_DB2_v4.8.1 1,Toad For DB2 安装破解安装,连接使用方法.txt 2,连接配置.docx toad_for_db2_keygen + Quest_central...
DB与我的应用程序相连,使用的是Hibernate的C3P0连接DB,突然重启DB,出现乘用程序报错,而且再进行注入,注入失败
python-oracledb的源码和使用示例代码, python-oracledb 1.0,适用于Python versions 3.6 through 3.10. Oracle Database; This directory contains samples for python-oracledb. 1. The schemas and SQL ...
瀚高基础软件股份有限公司java连接HighGo DB。瀚高基础软件股份有限公司java连接HighGo DB。
SQLca.dbms= ‘OLEDB’ //接口类型 SQLca.AutoCommit = false SQLca.LogPass = logpass SQLca.LogId =logid SQLca.DBParm ="PROVIDER='SQLOLEDB', DATASOURCE='"+serverName+"'," & +"PROVIDERSTRING='Initial ...
oracle配置文件db_install.rsp
db2 list db directory 查看数据库应用:db2 list applications 查看数据库应用和进程号:db2 list applications show detail 查看数据库表空间:db2pd -db <db_name> -tablespace 查看数据库配置:db2 get db cfg ...
DB9 DB15 DB25 DB37 DB50 ...包括90个DB9~50接插件全系列封装文件,孔型、针型、直型,90度弯型,DB9/M,DB9/F,DB15/M,DB15/F,DB25/M,DB25/F,DB37/M,DB37/F,DB50/M,DB50/F等,可以直接应用到你的项目开发。
XML配置文件连接Oracle数据库
eclipse配置如下: driver template:ibm db2(universal driver) drivername :db2TEST connection url: jdbc:db2://192.168.0.2:50000/sample user name: db2inst1 password :pwd 加入jar:db2jcc4.jar Driver ...
.net连接DB2数据库编程简介,包括基本的连接方法和实例
Alarm_DB_Logger_Manager连接数据库设置
OLE DB客户应用程序编程实例OLE DB客户应用程序编程实例
这个文档是COGNOS连接DB2数据源的配置。
DB9/DB15/DB25/DB37/DB50/DB62/DB78封装PDF
客户端电脑访问DB2数据库时安装,维护常用工具。不带开发中心的DB2客户端程序。
管理对象包括DB2数据库的实例、数据库、表空间、缓冲池、应用程序、配置等。管理项目包括数据库事务负载、IO负载、容量、IO性能、锁、排序、应用、内存使用、数据库日志空间等。监控管理方式包括即时查看和历史查看...
Spring配置文件中注册三种数据源及从属性文件中读取DB连接四要素