最近很多人都在讨论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助力快速定位数据库难题的更多相关文章

  1. 如何利用快照( snapshot )功能快速定位性能问题

    我们常常会遇到这样的困惑,收到用户或者客服的反馈,平台使用有问题,但是测试人员搭建环境后又没办法复现故障,最后导致问题没法解决,眼睁睁地看着用户流失. 这是因为线上生产环境非常复杂.很多时候是偶发性  ...

  2. postgresql异常快速定位

    今天下午在使用.NET链接postgresql的时候报了“3D000”的错误,经过测试得知原来是web.config中的数据库配置问题. 在这里有个小情况需要注意,postgresql是不允许创建相同 ...

  3. 快速定位隐蔽的sql性能问题及调优【转载】

    在前几天,有个开发同事问我一个问题,其实也算是技术救援,他说在有个job数据处理的频率比较高,在测试环境中很难定位出在哪有问题,而且速度也还能接 受,但是在生产环境中总是会慢一些,希望我能在测试环境中 ...

  4. 关联与下钻:快速定位MySQL性能瓶颈的制胜手段

    本文根据DBAplus社群[2018年1月6日北京开源与架构技术沙龙]现场演讲内容整理而成. 讲师介绍 李季鹏 新炬网络数据库专家 专注于MySQL数据库性能管理及相关解决方案,目前主要从事MySQL ...

  5. sql优化 性能快速定位

    sql server sql性能快速定位 简介 对于写出实现功能的SQL语句和既能实现功能又能保证性能的SQL语句的差别是巨大的.很多时候开发人员仅仅是把精力放在实现所需的功能上,而忽略了其所写代码的 ...

  6. 快速定位oracle故障-恩墨

    首先我们要明白一点,所谓的故障,意味着相对来讲比较严重.也就是可能比不同的问题要严重一些,比如锁等待. 要能够快速的定位和解决问题,恢复业务正常:首先我们需要了解Oracle的一些常见的故障有哪些. ...

  7. 腾讯毛华:智能交互,AI助力下的新生态

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲人:毛华 腾讯云语音云总经理 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广 ...

  8. Oracle中查询和定位数据库问题的SQL语句

    --1)查询和定位数据库问题的SQL语句--Oracle常用性能监控SQL语句.sql --1查询锁表信息 select vp.SPID, vs.P1, vs.P1RAW, vs.P2, vs.EVE ...

  9. 企业IT管理员IE11升级指南【16】—— 使用Compat Inspector快速定位IE兼容性问题

    企业IT管理员IE11升级指南 系列: [1]—— Internet Explorer 11增强保护模式 (EPM) 介绍 [2]—— Internet Explorer 11 对Adobe Flas ...

  10. mysql快速导出数据库ER图和数据字典(附navicat11安装教程及资源)

    ♣ mysql使用navicat11快速导出数据库ER图 ♣ mysql使用navicat11快速导出数据库数据字典 ♣ navicat11 for mysql (这里是mysql5.7.12)专业版 ...

随机推荐

  1. 树莓派安装freeswitch

    树莓派版本: Raspberry Pi 4B 操作系统 : Ubuntu Server 20.04_x64 freeswitch版本 : 1.10.3 1.下载freeswitch源代码 wget h ...

  2. ABC 326

    E 题意: 给定一个 \(n\) 面骰,长度 \(n\) 的数组 \(a\) 和一个初始为 \(0\) 的变量 \(x\). 每次投掷骰子,等概率获得 \(1 \sim n\) 中的一个数 \(p\) ...

  3. 罗克韦尔 FT View使用占位符(全局对象参数)来指定弹出窗口的显示名称

    罗克韦尔 FT View使用占位符(全局对象参数)来指定弹出窗口的显示名称 标签占位符 标签占位符能实现将单个图形显示用于多个相似的操作,从而节省开发和维护应用程序的时间. 例如,要为使用同一台机器将 ...

  4. NC16742 [NOIP2002]字串变换

    题目链接 题目 题目描述 已知有两个字串 A, B及一组字串变换的规则(至多6个规则): A1 -> B1 A2 -> B2 规则的含义为:在A中的子串 A1可以变换为 B1.A2可以变换 ...

  5. 【Unity3D】灯光组件Light

    1 灯光简介 ​ 在 Hierarchy 窗口右键,选择 Light,再选择具体的灯光类型,在 Inspector 窗口查看灯光组件如下: Type:灯光类型,主要有:Directional(平行光) ...

  6. spring boot2.0集成mybatis-plus实战

    说明: 本例演示spring boot2.0如何集成mybatis-plus 如何使用代码生成器 项目源码: https://gitee.com/indexman/mybatis-plus-demo ...

  7. 搭建docker swarm集群

    环境介绍 管理节点    swarm01 192.168.5.140 工作节点   swarm02 192.168.5.141 管理节点执行 docker swarm init --advertise ...

  8. [BUUCTF][Web][HCTF 2018]WarmUp 1

    这题已经标识为php 代码审计题,那么需要搞到源码才行 打开靶机对应的url,展示的是一张笑脸图片 右键查看网页源代码 <!DOCTYPE html> <html lang=&quo ...

  9. JavaScript的引入并执行-包含动态引入与静态引入

    JavaScript的引入并执行-包含动态引入与静态引入 JavaScript引入方式 html文件需要引入JavaScript代码,才能在页面里使用JavaScript代码. 静态引入 行内式 直接 ...

  10. 基于javaweb的个人音乐网站

    一 .需求 ① 前台用户: 用户注册和登录以及完善个人资料: 添加好友功能(用户之间可通过发送好友申请添加好友,被添加人可以同意或拒绝好友申请): 下载歌曲功能(当用户点击下载按钮时,就能下载相对应的 ...