qq_32777195 2024-09-13 17:19 采纳率: 0%
浏览 1

第三方oracle数据库每次重启后,我方应用服务器连接会出现超时现象

第三方oracle数据库每次重启后,我方应用服务器连接会出现超时现象,每次都需要重启应用服务器才能正常连接是怎么一回事?

引用

<dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>1.1.10</version>
      </dependency>

public static DataSourceBean createDataSourceBean(String driver, String url, String username, String password){
        DataSourceBean bean = new DataSourceBean();
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setDriverClassName(driver);
        druidDataSource.setUrl(url);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        druidDataSource.setInitialSize(10);
        druidDataSource.setMinIdle(5);
        druidDataSource.setMaxActive(40);
        druidDataSource.setBreakAfterAcquireFailure(true);
        druidDataSource.setFailFast(true);
        druidDataSource.setConnectionErrorRetryAttempts(3);

        if(ORACLE_DRIVER.equals(driver)){
            druidDataSource.setValidationQuery("select 1 from dual");
        }else {
            druidDataSource.setValidationQuery("select 1 ");
        }
        bean.setDataSource(druidDataSource);

        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(druidDataSource);
        bean.setJdbcTemplate(jdbcTemplate);

        TransactionTemplate transactionTemplate = new TransactionTemplate();
        transactionTemplate.setTransactionManager(new DataSourceTransactionManager(druidDataSource));
        bean.setTransactionTemplate(transactionTemplate);
        return bean;
    }

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-09-13 17:20
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    根据您提供的信息,第三方Oracle数据库每次重启后,您的应用服务器连接会出现超时现象,并且需要重启应用服务器才能正常连接。这个问题可能由以下几个原因引起:

    1. 数据库连接池配置问题:当Oracle数据库重启后,数据库的连接信息需要重新获取。您的应用服务器通过数据库连接池与数据库建立连接。如果连接池中的连接在数据库重启后未正确更新或重置,可能会导致连接超时。您可以检查数据库连接池的配置,确保它能够自动检测并重新建立与数据库的连接。
    2. 应用服务器缓存问题:应用服务器可能会缓存某些数据库连接或配置信息。当Oracle数据库重启后,这些缓存信息可能仍然有效,导致应用服务器尝试使用旧的连接信息访问数据库时出现超时。尝试在应用服务器启动时清除相关缓存,或者在检测到数据库重启时自动重新加载配置信息。
    3. 网络问题:确保应用服务器与Oracle数据库之间的网络连接稳定可靠。网络延迟或不稳定可能导致连接请求超时。检查网络配置和性能,确保两者之间的通信畅通无阻。
    4. Oracle数据库配置问题:Oracle数据库本身可能有某些配置(如监听器配置)导致连接问题。检查Oracle数据库的日志和配置,确保它能够正确监听和接受来自应用服务器的连接请求。
    5. 依赖库版本问题:您使用的是druid-spring-boot-starter依赖库来管理数据库连接。确保您使用的版本与Oracle数据库兼容,并且没有已知的与数据库重启相关的bug。

    为了解决这个问题,您可以尝试以下步骤:

    • 更新数据库连接池配置,确保它能够自动检测和重新建立与数据库的连接。
    • 检查应用服务器的缓存机制,确保在数据库重启后能够正确加载新的配置信息。
    • 检查网络连接和Oracle数据库的配置,确保它们正常工作。
    • 考虑升级或更换数据库连接池库版本,以确保与Oracle数据库的兼容性。

    希望这些建议能帮助您解决问题。如果问题仍然存在,请提供更多详细的日志和错误信息,以便进一步分析。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月13日

悬赏问题

  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见
  • ¥15 一共有五道问题关于整数幂的运算还有房间号码 还有网络密码的解答?(语言-python)
  • ¥20 sentry如何捕获上传Android ndk 崩溃
  • ¥15 在做logistic回归模型限制性立方条图时候,不能出完整图的困难
  • ¥15 G0系列单片机HAL库中景园gc9307液晶驱动芯片无法使用硬件SPI+DMA驱动,如何解决?