国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于使用druid數(shù)據(jù)源連接Oracle導(dǎo)致的SQLRecoverableException(socket read timeout,關(guān)閉的連接等)

這篇具有很好參考價值的文章主要介紹了關(guān)于使用druid數(shù)據(jù)源連接Oracle導(dǎo)致的SQLRecoverableException(socket read timeout,關(guān)閉的連接等)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

背景

數(shù)據(jù)源初始化后,獲取Oracle的連接進行查詢操作,相隔 半個小時 左右,再次對同一數(shù)據(jù)庫進行查詢操作。

問題

第二次查詢的時候,就會出現(xiàn)如下一些異常情況

2019-06-05 14:17:58.247 [CorePoolHandler-thread-6] ERROR [LOGID:] com.alibaba.druid.pool.DruidDataSource - discard connection
java.sql.SQLRecoverableException: IO 錯誤: Socket read timed out
	at oracle.jdbc.driver.T4CPreparedStatement.fetch(T4CPreparedStatement.java:1031) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at oracle.jdbc.driver.OracleStatement.fetchMoreRows(OracleStatement.java:3590) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at oracle.jdbc.driver.InsensitiveScrollableResultSet.fetchMoreRows(InsensitiveScrollableResultSet.java:937) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at oracle.jdbc.driver.InsensitiveScrollableResultSet.absoluteInternal(InsensitiveScrollableResultSet.java:901) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at oracle.jdbc.driver.InsensitiveScrollableResultSet.next(InsensitiveScrollableResultSet.java:572) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at com.alibaba.druid.filter.FilterChainImpl.resultSet_next(FilterChainImpl.java:917) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.filter.FilterAdapter.resultSet_next(FilterAdapter.java:1907) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.filter.FilterChainImpl.resultSet_next(FilterChainImpl.java:913) ~[druid-1.1.10.jar:1.1.10]
2019-06-05 14:22:32.714 [Druid-ConnectionPool-Destroy-1030806200] ERROR [LOGID:] com.alibaba.druid.util.JdbcUtils - close connection error
java.sql.SQLRecoverableException: IO 錯誤: Socket read timed out
	at oracle.jdbc.driver.T4CConnection.logoff(T4CConnection.java:770) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at oracle.jdbc.driver.PhysicalConnection.close(PhysicalConnection.java:4581) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at com.alibaba.druid.filter.FilterChainImpl.connection_close(FilterChainImpl.java:186) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.filter.stat.StatFilter.connection_close(StatFilter.java:261) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.filter.FilterChainImpl.connection_close(FilterChainImpl.java:181) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl.close(ConnectionProxyImpl.java:115) ~[druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.util.JdbcUtils.close(JdbcUtils.java:73) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidDataSource.shrink(DruidDataSource.java:2797) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidDataSource$DestroyTask.run(DruidDataSource.java:2562) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidDataSource$DestroyConnectionThread.run(DruidDataSource.java:2549) [druid-1.1.10.jar:1.1.10]
2019-06-17 18:11:18.995 [task-scheduler-5] ERROR [LOGID:] com.alibaba.druid.util.JdbcUtils - close statement error
java.sql.SQLRecoverableException: 關(guān)閉的連接
	at oracle.jdbc.driver.PhysicalConnection.needLine(PhysicalConnection.java:6291) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at oracle.jdbc.driver.OracleStatement.closeOrCache(OracleStatement.java:1364) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at oracle.jdbc.driver.OracleStatement.close(OracleStatement.java:1343) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at oracle.jdbc.driver.OracleStatementWrapper.close(OracleStatementWrapper.java:100) ~[ojdbc6-12.1.0.1-atlassian-hosted.jar:12.1.0.1.0]
	at com.alibaba.druid.util.JdbcUtils.close(JdbcUtils.java:84) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.vendor.OracleValidConnectionChecker.isValidConnection(OracleValidConnectionChecker.java:88) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidAbstractDataSource.testConnectionInternal(DruidAbstractDataSource.java:1400) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidDataSource.getConnectionDirect(DruidDataSource.java:1299) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5007) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.filter.stat.StatFilter.dataSource_getConnection(StatFilter.java:680) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.filter.FilterChainImpl.dataSource_connect(FilterChainImpl.java:5003) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1233) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:1225) [druid-1.1.10.jar:1.1.10]
	at com.alibaba.druid.pool.DruidDataSource.getConnection(DruidDataSource.java:90) [druid-1.1.10.jar:1.1.10]
	at org.springframework.jdbc.datasource.DataSourceUtils.doGetConnection(DataSourceUtils.java:111) [spring-jdbc-4.3.14.RELEASE.jar:4.3.14.RELEASE]

排查原因過程

一開始以為是查詢的數(shù)據(jù)量太大(7.9W+),于是網(wǎng)上查了druid對Oracle數(shù)據(jù)庫的讀超時時間相關(guān)的設(shè)置,配置如下,設(shè)置后發(fā)現(xiàn)仍舊是socket read timeout,繼續(xù)增大socket read timeout的值,雖然“socket read timeout”沒有出現(xiàn)了,但是“關(guān)閉的連接”字樣冒了出來。

spring.datasource.traffic.connectionProperties=oracle.net.CONNECT_TIMEOUT=6000;oracle.jdbc.ReadTimeout=180000

查看出錯日志,跟蹤方法棧,發(fā)現(xiàn)是獲取連接時執(zhí)行了testConnectionInternal()方法,繼續(xù)跟蹤方法棧發(fā)現(xiàn)是執(zhí)行數(shù)據(jù)源配置中的validationQuery語句時,拋出了異常。但這個是測試連接是否可用的方法,不會影響下一步對數(shù)據(jù)庫的操作,因為druid數(shù)據(jù)源會創(chuàng)建新的一條數(shù)據(jù)庫連接。
但是!打印異常的logger明明是debug,這XX為什么要以error的形式寫進日志里?。?!如果沒有仔細(xì)看上下文的代碼,能把人糾結(jié)個好幾天!!!

    public static void close(Statement x) {
        if (x == null) {
            return;
        }
        try {
            x.close();
        } catch (Exception e) {
            LOG.debug("close statement error", e);
        }
    }

總結(jié)

查看出錯日志檢查問題的時候,不能只看拋出錯誤最近的那幾行代碼,一定要看過整體的方法棧,知道運行的流程,再仔細(xì)看拋出異常的代碼,看看該行代碼執(zhí)行的前后邏輯。文章來源地址http://www.zghlxwxcb.cn/news/detail-853535.html

到了這里,關(guān)于關(guān)于使用druid數(shù)據(jù)源連接Oracle導(dǎo)致的SQLRecoverableException(socket read timeout,關(guān)閉的連接等)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Druid監(jiān)控 + 多數(shù)據(jù)源配置

    Druid監(jiān)控 + 多數(shù)據(jù)源配置

    先貼一下用的依賴項。 yaml配置文件的配置。 負(fù)責(zé)讀取yaml文件的數(shù)據(jù)源配置,生成數(shù)據(jù)源。還有創(chuàng)建動態(tài)數(shù)據(jù)源容器。另外ServletRegistrationBean 和?FilterRegistrationBean的配置和生成。 就是我們的動態(tài)數(shù)據(jù)源,負(fù)責(zé)繼承和初始化 AbstractRoutingDataSource。還有就是重寫determineCurrentLookupKe

    2024年01月22日
    瀏覽(26)
  • Springboot+Druid配置多數(shù)據(jù)源

    Spring的多數(shù)據(jù)源支持—AbstractRoutingDataSource,AbstractRoutingDataSource定義了抽象的determineCurrentLookupKey方法,子類實現(xiàn)此方法,來確定要使用的數(shù)據(jù)源 Druid 實現(xiàn)多數(shù)據(jù)源支持,核心是Overwrite AbstractRoutingDataSource 的 determineCurrentLookupKey 方法 以springboot框架為基礎(chǔ)使用aop注解的方式依賴

    2024年02月11日
    瀏覽(25)
  • SpringBoot整合Druid配置多數(shù)據(jù)源

    SpringBoot整合Druid配置多數(shù)據(jù)源

    目錄 1.初始化項目 1.1.初始化工程 1.2.添加依賴 1.3.配置yml文件 1.4.Spring Boot 啟動類中添加?@MapperScan?注解,掃描 Mapper 文件夾 1.5.配置使用數(shù)據(jù)源 1.5.1.注解方式 1.5.2.基于AOP手動實現(xiàn)多數(shù)據(jù)源原生的方式 2.結(jié)果展示 Mybatis-Plus:簡介 | MyBatis-Plus (baomidou.com) 在正式開始之前,先初始

    2024年02月01日
    瀏覽(38)
  • springboot整合druid及多數(shù)據(jù)源配置

    springboot整合druid及多數(shù)據(jù)源配置

    本篇主要分兩部分 ①springboot整合druid的代碼配置,以及druid的監(jiān)控頁面演示;②對實際場景中多數(shù)據(jù)源的配置使用進行講解。 可以用idea快速生成一個可運行的demo工程,具體可以參考如何快速創(chuàng)建springboot項目 主要用到的依賴如下: ?配置數(shù)據(jù)庫需要的配置文件application.yml( 注

    2024年02月12日
    瀏覽(31)
  • 后端項目開發(fā):集成Druid數(shù)據(jù)源

    Druid作為連接池中間件可以監(jiān)控數(shù)據(jù)庫訪問性能,對數(shù)據(jù)庫密碼加密,查看SQL執(zhí)行日志,擴展JDBC。 添加依賴 參考官方文檔:https://github.com/alibaba/druid/wiki 更多配置參考:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter 啟動應(yīng)用:訪問http://localhost:8001/druid/login.html查看監(jiān)

    2024年02月11日
    瀏覽(20)
  • springboot實現(xiàn)多數(shù)據(jù)源配置(Druid/Hikari)

    springboot實現(xiàn)多數(shù)據(jù)源配置(Druid/Hikari)

    使用springboot+mybatis-plus+(Druid/Hikari)實現(xiàn)多數(shù)據(jù)源配置 操作步驟: 引入相應(yīng)的maven坐標(biāo) 編寫mybatis配置,集成mybatis或mybatis-plus(如果已集成可跳過) 編寫數(shù)據(jù)源配置類 編寫注解,并通過aop進行增強(編寫數(shù)據(jù)源切換代碼) 類或方法中使用注解,對數(shù)據(jù)源進行切換 第一步:

    2024年02月13日
    瀏覽(25)
  • JAVA:Springboot動態(tài)裝配Druid多數(shù)據(jù)源

    JAVA:Springboot動態(tài)裝配Druid多數(shù)據(jù)源

    1、簡介 最近打算搭建一個鑒權(quán)中心服務(wù),采用springboot+FastMybatis裝配Druid,考慮后續(xù)拓展采用Druid多數(shù)據(jù)源配置,以一個數(shù)據(jù)源為主,多個動態(tài)數(shù)據(jù)源為輔的結(jié)構(gòu)。除了數(shù)據(jù)庫,后續(xù)會結(jié)合shiro安全框架來搭建。 2、引用 在pom.xml添加框架Springboot +FastMybatis + Druid相關(guān)maven引用。

    2024年02月09日
    瀏覽(22)
  • SpringBoot3整合Druid數(shù)據(jù)源的解決方案

    SpringBoot3整合Druid數(shù)據(jù)源的解決方案

    druid-spring-boot-3-starter目前最新版本是1.2.20,雖然適配了SpringBoot3,但缺少自動裝配的配置文件,會導(dǎo)致加載時報加載驅(qū)動異常。 需要手動在resources目錄下創(chuàng)建 META-INF/spring/ 目錄,并且在 META-INF/spring/ 創(chuàng)建 org.springframework.boot.autoconfigure.AutoConfiguration.imports , 文件中添加如下內(nèi)容

    2024年03月09日
    瀏覽(38)
  • springboot配置自定義數(shù)據(jù)源(Druid德魯伊)的步驟。

    springboot配置自定義數(shù)據(jù)源(Druid德魯伊)的步驟。

    今天和大家分享下在Springboot中配置自定義數(shù)據(jù)源Druid的兩種方法及步驟。 方法一: 1.在pom.xml配置依賴(注釋里面的內(nèi)容) 2.配置自己的數(shù)據(jù)源設(shè)置,我是在yaml文件中配置的,順便提醒一下,在配置yaml文件的時候縮進問題一定要注意,不然無法讀取到就會報錯。 spring: datasourc

    2024年02月15日
    瀏覽(23)
  • SpringBoot整合Mybatis-Plus+Druid實現(xiàn)多數(shù)據(jù)源

    SpringBoot整合Mybatis-Plus+Druid實現(xiàn)多數(shù)據(jù)源

    ??本文主要講解 springboot +mybatisplus + druid 實現(xiàn)多數(shù)據(jù)源配置功能 ?? 主頁傳送門:?? 傳送 Spring Boot: ? ?Spring Boot是一個基于Spring框架的開源Java開發(fā)框架,旨在簡化Spring應(yīng)用程序的開發(fā)、配置和部署。它提供了一種快速、敏捷的方式來構(gòu)建獨立的、生產(chǎn)級別的Spring應(yīng)用程

    2024年02月09日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包