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)专业版 ...
随机推荐
- 《ASP.ENT Core 与 RESTful API 开发实战》-- (第4章)-- 读书笔记(下)
第 4 章 资源操作 4.5 创建资源 由于创建资源的 Id 会在服务端生成,因此在创建资源时,不建议使用与获取数据时相同的 DTO,而要单独创建一个新的 DTO 类,并通过数据注解特性对相应 的属性 ...
- NC19857 最后的晚餐(dinner)
题目链接 题目 题目描述 **YZ(已被和谐)的食堂实在是太挤辣!所以Apojacsleam现在想邀请他的一些好友去校外吃一顿饭,并在某酒店包下了一桌饭. 当Apojacsleam和他的同学们 ...
- NVME(学习笔记四)—概念解读
1. 综述 NVMe over PCIe协议,定义了NVMe协议的使用范围.指令集.寄存器配置规范等. 名词解释 1.1.1 Namespace Namespace是一定数量逻辑块(LB)的集合,属性 ...
- kotlin--Object关键字
1.匿名内部类 Object可以实现,继承一个抽象类的同时,实现多个接口. interface A { fun funA() } interface B { fun funB() } abstract ...
- Centos8 安装 MySQL8.0.26
下载 访问 https://dev.mysql.com/downloads/mysql/ 选择 Red Hat Enterprise Linux / Oracle Linux 选择 Red Hat E ...
- UtilMeta - 简洁高效的 Python 后端元框架
最近开源了我开发多年的一个 Python 后端框架:UtilMeta 项目介绍 UtilMeta 是一个用于开发 API 服务的后端元框架,基于 Python 类型注解标准高效构建声明式接口与 ORM ...
- redis7源码分析:redis 启动流程
1. redis 由 server.c 的main函数启动 int main(int argc, char **argv) { ... // 上面的部分为读取配置和启动命令参数解析,看到这一行下面为启 ...
- Docker实践之07-数据管理
目录 一.数据卷概述 二.创建数据卷 三.查看数据卷 四.挂载数据卷 五.删除数据卷 六.挂载主机目录或文件 七.挂载数据卷与主机目录/文件的比较 一.数据卷概述 数据卷是一个可供一个或多个容器使用的 ...
- MongoDB的安装及启动
下载地址 https://www.mongodb.com/try/download/community 安装步骤 自定义安装目录 配置环境 下面是你安装后的mongodb的目录 在电脑的环境变量Pat ...
- 01、etcd基础介绍
互联网技术发展真的快,层出不穷的新技术.最近项目使用到了etcd,自己之前在部署k8s集群的时候玩过,但是并没有系统的学习.正好趁这个机会,系统性的学习下.文章中的内容有些是来自官方文档,有些是来自网 ...