AI助力快速定位数据库难题
最近很多人都在讨论AI能否替代人类工作的话题,最近笔者正好遇到一个AI帮自己快速定位问题的实例,分享给大家,一起来切身感受下AI对于解决数据库问题的价值吧。
事情的经过是这样,有个朋友咨询我,说他最近遇到一个客户的数据库问题现象非常诡异。
就是有一套Oracle数据库实例不知何时变成了mount状态,但客户确认这套库之前是open成功的,而且也有数据库监测,数据库若有重启就会告警,可监控期间也没有发现数据库有任何重启行为。
而且,实例的启动时间,也是上次open数据库的时间。
看到这样的描述,首先要确认下,启动时间,是否open的动作成功了?
另外,监控是否有问题,建议人工通过alert告警日志搜索是否有数据库状态改变的痕迹。
这个做法并不是不相信客户,是因为问题troubleshooting都讲究一个证据链,就好像律师一样,要收集现有证据然后基于这些证据来找到问题本质。
于是就开始收集证据:
1. alert告警日志,上次open的操作是成功的
Physical standby database opened for read only access.
Completed: alter database open
2. 遍历搜索重启操作
在上次open动作之后的时间点,没有发生过重启。
3. 实例当前状态和启动时间
确认是mount状态,启动时间是上次open的时间没错。
嗯,以上这些基础验证朋友其实在之前排查时也都做过,也正因为各种搜索也没有找到有用的信息,所以问我有没有遇到过这个情况?
我其实也没有遇到过,且当时正在外地出差,又约好了客户时间要马上出发去现场做交流,所以并没太多时间深入去帮忙排查这个问题。
基础理论和操作大家都很清楚:
Oracle的启动流程,是经过nomount、mount、open三个阶段
已经open的数据库,如果想要切换成其他状态,正常操作是需要先shutdown关闭数据库,再启动到某个状态
可这个与现在的事实相违背,难道说某种情况下可以不重启直接从open状态到mount状态?
带着这个疑问问了下基于LLM的AI,没指望没经过RAG专门训练的通用AI能直接定位问题,但从其回复的内容还是看到一句话引起了我的关注:
手动执行了ALTER DATABASE CLOSE的命令...
Oracle有这个手工执行的命令吗?恐怕99%的人都不知道吧。
alter database close;
按照这个命令搜索告警日志,有,但是在上次启动数据库之前,也就是和本次问题无关。
而且这是正常shutdown命令关闭时,系统标出的那种分解操作。
但其实这个操作很容易理解,说白了,就是按Oracle的启动流程,是经过nomount、mount、open三个阶段;
那逆向操作的话,自然也应该可以类似分为close、dismount、instance shutdown三个阶段。
虽然无关,也不会有人人工发起这个命令,但是印证了这个想法,就是某些情况下,的确可能从open直接到mount,而不需要经过实例的重启,自然数据库实例的启动时间也不会变。
让朋友去告警日志搜下close关键字看有没有蛛丝马迹,然后就赶去客户现场工作了。
交流回来之后,朋友果然按此发现了直接的证据,在上次open和现在发现mount状态的期间,找到日志:
Close the database due to recovery session errors
All dispatchers and shared servers shutdown
CLOSE: killing server sessions.
close看起来就是从open直接到mount的一个过程,不算重启。
这里是因为recovery session errors,触发了这个操作,当然,这里的recovery session errors具体啥错误和原因就继续分析trc匹配就好了,属常规操作不再赘述。
后面朋友还在测试环境去测了下手工执行这个close的命令,确认是可执行的,而且还发现在告警日志中也会明确提示出这并不是公开支持的命令:
Warning: ALTER DATABASE CLOSE is not a publicly supported command.
朋友最后好奇问我最初的怀疑切入点是不是基于什么内部文档找到的有关资料,我说没那么神秘,正赶着去客户没时间查啥内部文档,直接问的AI,而且只是通用的AI,如果是经过RAG(Retrieval-Augmented Generation)专业训练过的,理论上可参考性会更强,有兴趣大家可以试试看,有条件的还可以去构建属于自己或所在企业的专业知识库。
总结下,虽然这个case,AI并没有帮我直接定位问题,但它提到了这个我之前并没关注过的一条命令 —— "ALTER DATABASE CLOSE"。这让我对自己的推理和猜测产生了信心,从而更有方向地快速分析问题,并最终找到了根本原因。
所以,与其抵触AI担忧其是否会抢走我们的工作,不如拥抱AI,利用AI技术助力我们的工作更加得心应手。
AI助力快速定位数据库难题的更多相关文章
- 如何利用快照( snapshot )功能快速定位性能问题
我们常常会遇到这样的困惑,收到用户或者客服的反馈,平台使用有问题,但是测试人员搭建环境后又没办法复现故障,最后导致问题没法解决,眼睁睁地看着用户流失. 这是因为线上生产环境非常复杂.很多时候是偶发性 ...
- postgresql异常快速定位
今天下午在使用.NET链接postgresql的时候报了“3D000”的错误,经过测试得知原来是web.config中的数据库配置问题. 在这里有个小情况需要注意,postgresql是不允许创建相同 ...
- 快速定位隐蔽的sql性能问题及调优【转载】
在前几天,有个开发同事问我一个问题,其实也算是技术救援,他说在有个job数据处理的频率比较高,在测试环境中很难定位出在哪有问题,而且速度也还能接 受,但是在生产环境中总是会慢一些,希望我能在测试环境中 ...
- 关联与下钻:快速定位MySQL性能瓶颈的制胜手段
本文根据DBAplus社群[2018年1月6日北京开源与架构技术沙龙]现场演讲内容整理而成. 讲师介绍 李季鹏 新炬网络数据库专家 专注于MySQL数据库性能管理及相关解决方案,目前主要从事MySQL ...
- sql优化 性能快速定位
sql server sql性能快速定位 简介 对于写出实现功能的SQL语句和既能实现功能又能保证性能的SQL语句的差别是巨大的.很多时候开发人员仅仅是把精力放在实现所需的功能上,而忽略了其所写代码的 ...
- 快速定位oracle故障-恩墨
首先我们要明白一点,所谓的故障,意味着相对来讲比较严重.也就是可能比不同的问题要严重一些,比如锁等待. 要能够快速的定位和解决问题,恢复业务正常:首先我们需要了解Oracle的一些常见的故障有哪些. ...
- 腾讯毛华:智能交互,AI助力下的新生态
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲人:毛华 腾讯云语音云总经理 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广 ...
- Oracle中查询和定位数据库问题的SQL语句
--1)查询和定位数据库问题的SQL语句--Oracle常用性能监控SQL语句.sql --1查询锁表信息 select vp.SPID, vs.P1, vs.P1RAW, vs.P2, vs.EVE ...
- 企业IT管理员IE11升级指南【16】—— 使用Compat Inspector快速定位IE兼容性问题
企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...
- mysql快速导出数据库ER图和数据字典(附navicat11安装教程及资源)
♣ mysql使用navicat11快速导出数据库ER图 ♣ mysql使用navicat11快速导出数据库数据字典 ♣ navicat11 for mysql (这里是mysql5.7.12)专业版 ...
随机推荐
- JS axios cancelToken 是如何实现取消请求?稍有啰嗦但超有耐心的 axios 源码分析
壹 ❀ 引 axios,一个基于promise且对ajax进行了二次封装的http库,在提供了与promise类似的API便捷写法同时,它还有一大特点,便是支持取消http请求.当然取消请求并不是ax ...
- YOLOV3目标检测模型训练实例
YOLOV3目标检测 从零开始学习使用keras-yolov3进行图片的目标检测,比较详细地记录了准备以及训练过程,提供一个信号灯的目标检测模型训练实例,并提供相关代码与训练集. DEMO测试 YOL ...
- Oracle 中LONG RAW BLOB CLOB类型介绍
说明: RAW: 未加工类型,可存储二进制数据或字节符 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列[不建议使用] LONG ...
- virtualapp安装应用流程源码分析
1. HomeActivity 为处理的入口 @Override protected void onActivityResult(int requestCode, int resultCode, In ...
- 【Android 逆向】【攻防世界】Ph0en1x-100
1. apk 安装到手机,老套路需要输入flag 2. jadx 打开apk,没有加壳 ...... public void onGoClick(View v) { String sInput = t ...
- auth模块的一些方法
auth模块 auth模块是cookie和session的升级版,auth模块是对登录认证方法的一种封装,之前我们获取用户输入的用户名及密码后需要自己从user表里查询有没有用户名和密码符合的对象,而 ...
- java图书管理系统界面版本+mysql数据库
描述: java+mysql数据库实现的图书管理系统,实现了图书添加,图书删除,图书修改,图书查看,图书列表查看等,用户增加,用户删除.用户修改,用户查看等 功能: 图书管理功能:图书添加,图书删除, ...
- docker部署fastdfs并在Django中集成
拉取Fastdfs镜像 docker pull delron/fastdfs 构建Tracker容器 是在Linux环境下,使用docker镜像构建tracker容器,用于启动跟踪服务器,起到调度的作 ...
- 【八股cover#1】MySQL Q&A与知识点
MySQL Q&A与知识点 1.基础知识 什么是主键? 它用来唯一标识一条记录(一个字段).每个表都必须有且只能有一个主键,主键的取值不允许为空,而且在表中必须是唯一的(当然还可以有复合主键) ...
- 符合ISO26262标准的建模规范检查模型静态分析静态测试工具
Model Examiner - 功能安全解决方案(以下简称MXAM)测试套件是您进行全面静态模型分析的首选工具.MXAM提供了一种简单的方法来检查建模规范.分析模型结构和评估模型指标,所有这些功能都 ...