当前位置: 首页 > news >正文

【案例38】Can’t get connection from database 排查详细记录

问题现象

客户要搭建灰度环境,启动后,登录超级管理员报连接不上数据库的错误。

Can’t get connection from database(XXX)

问题分析

1、一般碰到这个问题,初步就开始怀疑是sysconfig数据源不通导致的。

发现数据源是通的。

2、在sysconfig中看到选择的是11G,但是客户数据库版本用的是12C。但驱动都是同一个驱动。为了保险起见,更改了数据库类型为12C,再次重新启动。

3、发现sysconfig中配置了无效数据源,为了排错,直接删掉不通的数据源。

4、重新启动服务,发现依旧有明显的报错,can not get connection.please check the DBSet.

又进到sysconfig中直接测试是通的。

5、怀疑数据库本身有问题。用plsql直接连取数据库,dos窗口直连都无任何异常,数据库alter日志和监听日志中也无报错。(虽然这个没有走驱动,但说明数据库本身暂无异常。)

6、查询了process参数发现配置为150,很低,扩展到2000,重启了数据库服务,问题依旧未解决。

7、于是怀疑代码本身有问题。用sysconfig直接连生产环境的数据库,但这次测试报不通。检查驱动路径driver下发现有冗余代码存在。删除掉冗余代码后,再次测试,测试通过。

8、连新数据源再次重启发现相关代码不报连接数据库的错误。系统正常登录。说明发生问题肯定是在数据库层面。

9、数据库是本地部署和应用在同一台服务器,首先排除网络不通的环境影响。

10、使用nchome\bin>checkDBconnect.bat 检查数据库连接脚本发现报相ORA-28040的错误。

但是发现sqlnet.ora文件已经配置了客户端兼容参数,兼容到9已经很老了。于是暂时认为checkDBconnect.bat脚本检测的有问题所致,忽略了此问题。

注意:坑在这!!CheckDB报错,但sysconfig测试正常。

11、检查监听日志大小为20M,小于4G,非监听日志过大导致。

12、怀疑是不是监听程序本身异常,重新配置了监听程序。问题依旧。

13、检查数据库监听文件listener.ora、tnsnames.ora发现监听配置的为主机名。怀疑是不是解析不到相关主机造成的。

14、 ping相关主机名,发现返回值非服务器IP,修改host文件后问题依旧。

15、怀疑驱动程序有问题,把相关驱动替换到nchome中,发现测试不通过,经过咨询得知12.2版本的驱动基于的jdk编译版本过高用不了。要了12.1版本的驱动包更换drivers、lib问题依旧未解决。

16、查询了数据库本身发现,初始创建的表空间非NNC_DATA_01,重建表空间后导入数据。问题依旧未解决。

17、这类问题,之前很多碰到的是dns解析不通过,于是检查了IPV4的DNS解析配置地址发现里面配置了DNS解析地址为公网地址,但是服务器未开通公网。

直接ping相关地址发现不通。清空DNS服务器地址后,再次尝试,发现问题依旧未解决。

17、所有能想到的办法都已经尝试,但启动后问题依旧。于是又怀疑到了第9步骤。

到底是CheckDB准还是测试数据源准???按照ORA-28040问题处理。

建议把兼容性从9变成8,再次使用CheckDB发现不报协议的错误了。只是报了游标问题。

18、原游标设置为300,扩展游标到2000后,再次尝试CheckDB发现无任何报错出现。

再次尝试重启,发现问题解决。

解决方案

修改\app\product\12.2.0\dbhome_1\network\admin\sqlmet.ora修改为如下参数

SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8

重启监听后问题解决。

后续总结

与顾问电话沟通发现,此数据库是客户从8i一直升级到12C的,非直接安装的12C版本。所以sqlnet.ora虽然配置了,但依旧不兼容,应该配置为8。

反思

后续遇到数据库连不通的问题,建议使用CheckDBConnection脚本和sysconfig双层校验为准,并且与顾问先行沟通数据库安装状态。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • GPS跟踪环路MATLAB之——数字锁频环
  • 可视耳勺靠谱吗?五款杰出可视挖耳勺种草!
  • Windows 平台 Docker Protainer可视化平台,忘记登录密码,重置密码
  • 【C++算法】双指针
  • 45.跳跃游戏
  • 爬虫练习_01
  • 代码随想录算法day16 | 二叉树part06 | 654.最大二叉树,617.合并二叉树,700.二叉搜索树中的搜索,98.验证二叉搜索树
  • 做报表用什么工具?不想再用Excel了!!!
  • Tomcat漏洞
  • Python配置文件格式——INI、JSON、YAML、XML、TOML
  • golang使用channel实现读写锁
  • Qt使用lupdate工具生成.ts文件
  • DevOps环境搭建
  • Python | Leetcode Python题解之第326题3的幂
  • STM32 标准库移值RTThread
  • AHK 中 = 和 == 等比较运算符的用法
  • DOM的那些事
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • java第三方包学习之lombok
  • 爱情 北京女病人
  • 基于组件的设计工作流与界面抽象
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 三栏布局总结
  • 深入浅出webpack学习(1)--核心概念
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 王永庆:技术创新改变教育未来
  • 一起参Ember.js讨论、问答社区。
  • 找一份好的前端工作,起点很重要
  • postgresql行列转换函数
  • ​低代码平台的核心价值与优势
  • # Java NIO(一)FileChannel
  • ###C语言程序设计-----C语言学习(3)#
  • #laravel部署安装报错loadFactoriesFrom是undefined method #
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • (21)起落架/可伸缩相机支架
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (五)activiti-modeler 编辑器初步优化
  • (一)认识微服务
  • (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly DetectionRecommender Systems...
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • ***利用Ms05002溢出找“肉鸡
  • .NET Core 成都线下面基会拉开序幕
  • .Net Winform开发笔记(一)
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET/C# 项目如何优雅地设置条件编译符号?
  • .Net调用Java编写的WebServices返回值为Null的解决方法(SoapUI工具测试有返回值)
  • .net快速开发框架源码分享