最近很多人都在讨论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. 21.1 动态TLS--《Windows核心编程》

    应用程序通过调用一组4个函数来使用动态 TLS,这些函数实际上最经常为 DLL 所使用. 通常情况下,如果DLL使用 TLS,那么当它用 DLL_PROCESS_ATTACH 标志调用它的 DllMa ...

  2. 前端学习 node 快速入门 系列 —— 项目版权格式化

    其他章节请看: 前端学习 node 快速入门 系列 项目版权格式化 需求 替换整个项目的版权信息,替换文件为 .c 和 .h 结尾. 分析 版权信息通常都在文件开头,通过是否有 copyright 来 ...

  3. 【Android】使用 Broadcast 实现进程间通讯

    1 Broastcast 简介 ​ Broadcast(广播)是 Android 中一种广泛运用的在应用程序之间传输信息的机制.使用 Broadcast 能够很方便得实现进程间通讯,一端通过 send ...

  4. Windows xp 无法远程连接Windows Server 2008

    -------------------------转载自: Windows XPSP3通过网络级身份验证方式连接Windows Server 2008远程桌面 远程桌面大大方便了大家的日常管理工作,W ...

  5. 案例分享:Qt国产麒麟系统某防“某显示控制项目”(多类设备自动化流程控制,数据分析整合与展示,定位图,深度图,热力图等,多应用协调管控,健壮容错)

    喜报   我司承担的某防"某显示控制项目",已于近日顺利通过湖底验收.   需求   功能简介:  1.多类设备的显示.控制与管理  2.数据的分析与展示,定位图.深度图.热力图等 ...

  6. django1.11和django2.2中namespace的用法

    django1.11中namespace用法 urlpatterns = [ url(r'^user/', include('user.urls', namespace='user')) ] djan ...

  7. 【Azure APIM】验证APIM删除后的恢复步骤

    问题描述 在Azure门户中,误删除API Management资源后,怎么办? 问题解答 遇见误删除的第一反应就是: 想恢复删除的内容,但是从门户上查看没有发现有可以操作的方面. (错误,Azure ...

  8. 【Azure 事件中心】如何查看Event Hub的生产者或者是消费者端的IP地址呢?

    问题描述 哪些客户端 IP 正在向/从Azure Event Hub发送/接收事件?如何来查看Event Hub的生产者端,消费者端的IP地址呢? 问题解答 如果需要查看Event Hub 服务端的日 ...

  9. 【Azure Developer】Github Action使用Azure/login@v1插件登录遇见错误的替代方案

    问题描述 在使用 Github Action  -  Azure/login@v1 的插件时候,登录中国区Azure遇见了问题. Login YAML 内容: - name: 'Login via A ...

  10. minio通过docker方式部署

    MinIO 是在 GNU Affero 通用公共许可证 v3.0 下发布的高性能对象存储. 它是与 Amazon S3 云存储服务兼容的 API 官方文档http://docs.minio.org.c ...