DBA生存警示:业务高峰误操作案例及建议

编辑手记:对于资深的老DBA们,他们在漫长的职业生涯中养成了很多稀奇古怪的守则,以在复杂多变的环境中“幸存”,这源于无数血泪的教训,我曾经在《数据安全警示录》一书收录了大量现实案例,现在整理分享给大家,共为警示。

在维护生产环境时,尤其是负载极高的核心生产环境,我们需要注意的是,你的每一个操作,都可能导致系统负载波动,甚至产生严重的性能问题。

案例分享


业务期间DDL操作

2004年某一天下午五点左右,在schema A下一个表上增加一个字段(对于在schema A范围来说这个字段增加当时不会有问题的),一加上去,系统load立即狂飙......结果在schema B下有一个包,里面有饮用schema a的这个表,没check依赖关系以为A和B之间没有联系,结果这个包编译不过去被大量进程尝试编译,最后只有杀掉该相关应用所有进程重新连接才恢复。

这次故障导致我们一个无故障最长时间的团队免费去海南旅游三天的机会丧失。

业务期间DDL操作

刚工作一年的时候,开发了一段脚本就是给账户表某个字段修改长度(alter table account_t modify...),我当时太累了,发了的脚本也没有说明何时操作,我就直接在生产库上执行了。可想而知,大部分存储过程都失效,全省业务暂停2小时,嘿嘿。。。领导之后就给了我“破坏王”的称号。

业务期间DDL维护

没有犯过错的DBA不是好DBA,但经常犯错的DBA也不是好DBA。

我大的错误没有犯过,只有两个算是小一点的错误。一次是在业务繁忙的时候给一个最基础的表加一个字段,导致全公司程序停止半个小时;另一次是准备将测试机重启,结果将生产机给重启了。

业务期间统计信息收集

客户业务系统上线后由于存在部分性能问题,我对一个表做了dbms_stats......造成了一个SQL(涉及多个大表)执行计划改变(性能特差),主机基本瘫痪了两个小时。最后给SQL加hint才解决问题。

业务期间索引维护操作

我遇到的严重事故:其实也不是人为造成的。Oracle 9i的库,由于需要move tbs来降低hwm,然后再做alter index rebuild online,脚本连续跑了一个多月都没事情。某天突然发生问题,alert log中无报错,应用访问数据库效率奇低,查了n多原因,未见异常,但是已经造成业务中断3小时。得到客户同意后,做完数据库全备,中午12点重启数据库解决该问题。

事后发现其实在凌晨两点的时候有一个trc文件生成,看里面一堆的天书代码,发现一个好像是object id,object果然是被重建索引,估计是rebuild online的时候失败,到白天业务高峰期间smon还在清理临时段,因此业务堵塞。

防范建议


1.在高峰期禁止在数据库中进行DDL操作

DDL操作会导致一系列的SQL重解析、依赖对象失效等数据库连锁反应:一旦SQL重解析集中出现,系统必然经历负荷峰值,如果系统繁忙,可能就此挂起;DDL导致的依赖对象消失,甚至无法通过编译,可能长时间影响业务系统正常运行。

所以,在生产环境中,应当严格禁止高峰期的DDL操作,避免因操作不当或考虑不周带来的手忙脚乱或数据库灾难。

2.慎重进行统计信息收集和索引创建等操作

统计信息收集和索引调整是优化数据库的常用手段,可是切记,业务峰值期间的统计信息收集,或者手机之后导致不可预计的执行计划改变,可能使数据库瞬间停滞;而贸然添加的索引,也有可能导致其他SQL执行计划的恶化。

所以,在生产环境中,统计信息的收集或索引增减,都应当非常慎重,避免因为考虑和测试不同带来额外的麻烦。

原文发布于微信公众号 - 数据和云(OraNews)

原文发表时间:2016-03-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

简谈渗透测试各阶段我常用的那些“神器”

本人所有文章都很用心的写作完成,并时常总结如何分享更有用的东西给朋友们。这篇更是如此,晚上准备到凌晨四点开始写作,为了需要的朋友而写,不喜欢的右上角点叉不要像上...

68230
来自专栏犀利豆的技术空间

Redis RedLock 完美的分布式锁么?

上周花了点时间研究了 Redis 的作者提的 RedLock 的算法来实现一个分布式锁,在官方的文档最下面发现了这样一句话。

43410
来自专栏FreeBuf

走进科学:揭秘如何入侵电视机

[从可恶的广告开始] 前几天家里买了台新创维电视,安装好兴冲冲的开机,突然蹦出的广告让我心凉了半截,进了安卓系统,发现啥都没有,不能自己装软件,只能从那...

33590
来自专栏北京马哥教育

想要自己搭建NAS服务器?看这篇文章,小白也能学会!(一)

? NAS即网络附加存储(Network Attached Storage),通过网络提供数据访问服务。 本人不推荐自攒NAS,稳定性差,迷你主板和家用机电源...

2.3K60
来自专栏Python小屋

手把手教你使用Python+scrapy爬取山东各城市天气预报

1、在命令提示符环境使用pip install scrapy命令安装Python扩展库scrapy,详见Python使用Scrapy爬虫框架爬取天涯社区小说“大...

19330
来自专栏腾讯技术工程官方号的专栏

腾讯数据库内核团队资深架构师:TXSQL Internals @2018

? 在ODF2018开源数据库论坛暨首届MariaDB中国用户者大会上,来自腾讯技术工程事业群TEG基础架构部数据库内核团队资深架构师王少华,做了主题为「TX...

20720
来自专栏zhisheng

MacBook Pro 初体验

背景 在 Mac 到手之前就在各种群里看到人说 Mac 多好用,也有很多人鼓吹过 Mac 的好处,最后也坚定我的年前目标了 —— 就是买台 Mac,之前请原谅我...

37370
来自专栏菩提树下的杨过

企业应用通用架构图

晚上把公司应用的架构结合之前研究的东西梳理了下,整理了一张架构规划图,贴在这里备份 ? 下面是个人理解的做架构的几个要点: 1、系统安全 这是首要考虑的,以这张...

26960
来自专栏Albert陈凯

网络IO(NIO)之阻塞、非阻塞、同步、异步总结

网络IO之阻塞、非阻塞、同步、异步总结 1、前言   在网络编程中,阻塞、非阻塞、同步、异步经常被提到。unix网络编程第一卷第六章专门讨论五种不同的IO模型...

30940
来自专栏FreeBuf

盗版软件也疯狂之六耳猕猴显神通

近日,笔者闲暇时光下载了一个小游戏进行玩耍,游戏结束后没再管它,当下次点亮手机时,惊奇的发现在手机主界面中心有一应用推荐轮播的悬浮窗。对于移动端技术人员来说,手...

15630

扫码关注云+社区

领取腾讯云代金券