• Oracle配置DCD避免会话被防火墙强制断开


    今天有客户反馈应用测试连接Oracle数据库的会话半小时左右未做操作就会被中断,报错ORA-3113,询问数据库是否有这样的超时设置,能否取消掉这个限制?
    登上环境查看监听日志发现连接的IP和数据库IP不是同一网段,故询问中间是否有防火墙设备,得到肯定的答复后,再结合实际的现象,基本也就确认是由于防火墙默认强制断开一段时间内(这里也就是半小时)都是空闲状态的会话,然后会话再做操作时就会发现原连接已经被断开,报错ORA-3113,然后只能重连。
    防火墙涉及其他部门管理,协调比较麻烦。还好Oracle有DCD(Dead Connection Detection)这个功能特性,主要就是设置一个时间比如10分钟,那么每隔10分钟Oracle就会发一个空包给连接会话的客户端,防火墙发现会话变为活跃就会重新计时,这样也可以间接解决这个问题。

    配置DCD的方法非常简单,就是在监听对应的sqlnet.ora 配置文件中添加1行内容:

    sqlnet.expire_time = 10
    

    含义可以从sample示例中找到说明:

    ########################
    #sqlnet.expire_time = 10
    ########################
    #
    #Possible values: 0-any valid positive integer! (in minutes)
    #Default: 0 minutes
    #Recommended value: 10 minutes
    #
    #Purpose: Indicates the time interval to send a probe to verify the
    #         client session is alive (this is used to reclaim watseful
    #         resources on a dead client)
    #
    #Supported since: v2.1
    

    设置完成后要重启监听,或者reload监听生效。

    lsnrctl reload
    

    但这只对新的连接有效,对于已经存在的连接是没作用的,针对这些连接必须要杀掉重连才可以,或者干脆等到他们碰到ORA-3113,再进行重连。

    在客户反馈的数据库均配置好DCD,reload监听,通知客户测试,告知新的连接才有效。
    最终经过客户一下午的观察,确认之前反馈的问题已经得到解决。

  • 相关阅读:
    Salesforce 大量数据部署的最佳实践
    Salesforce 数据备份和恢复小知识
    Salesforce 导入导出数据简介
    GDPR 和个人信息保护的小知识
    代码审查要点简介
    Salesforce 外部对象
    Python scipy.sparse.csr_matrix()[csc_matrix()]
    Deep Compression
    Pascal voc api
    Python内置模块-xml模块
  • 原文地址:https://www.cnblogs.com/jyzhao/p/12422771.html
Copyright © 2020-2023  润新知