1. 自动保存,致命深渊
跳槽新公司后,感觉一切都是新鲜的。更大的平台,更复杂的业务,更规范的流程,这一切都让我兴奋不已。我像一块海绵🧽,努力地吸收着新知识,并很快在试用期里展现出了自己的技术实力,得到了新同事和小组负责人叶哥的认可。
我们团队主要使用的数据库客户端工具,是当时非常流行的PL/SQL Developer。它功能强大,但也有一个便捷到“危险”的功能——可以自动保存不同数据库连接的用户名和密码。刚开始,我还保持着警惕,每次连接生产库都小心翼翼。但随着日子一天天过去,在测试环境和生产环境之间频繁切换,渐渐地,我放松了警惕。
那个周二的下午,和往常一样,我接到了一个需求,需要将一段数据同步脚本在测试环境执行。我熟练地打开PL/SQL Developer,选中脚本,连接数据库,然后——按下了那个早已刻在骨子里的“F8”(执行)快捷键。
在这里插入图片描述
屏幕下方的状态栏显示“Executing… Done.”。我长舒一口气,和需求方确认测试数据同步成功后,便投入到了下一个任务中,对几秒钟前发生的事情浑然不知。
我不知道,因为上一次连接的是生产库,PL/SQL Developer的窗口,已经悄悄地、自动地帮我把会话切换到了那个它“记忆”中的、最危险的地方。我那个本该在测试环境里“彩排”的脚本,已经原封不动地、一字不差地,在生产环境的舞台上,进行了一次“全球直播”。
2. 三堂会审,无罪释放
平静只持续了不到半小时。办公室另一头,负责核心电信业务的部门突然炸开了锅,电话铃声此起彼伏。我隐约听到“平台出问题了”、“客户大批量投诉”……
我的心里咯噔一下,但第一反应还是下意识地自我安慰:“应该跟我没关系,我下午一直在搞测试。”我正想忽略这些嘈杂的噪音,专心于手头的任务,但内部通讯软件突然弹出的一个窗口,却像一盆冰水,从我的头顶瞬间浇下。
是运维部门的同事发来的紧急通知:“电信业务平台出现故障,正在排查原因,初步定位到有异常数据库操作,操作账户为‘[我的用户名]’。”
当看到我自己的名字时,我的大脑“嗡”的一声,仿佛被重锤击中。下午那个按下“F8”的画面,在我眼前瞬间闪回。我猛地打开PL/SQL Developer的连接日志,当看到那个指向生产环境的IP地址时,我全身的血液仿佛都凝固了(参考链接:入狱记)。
完了,又是我。而且,我…昨天才刚提交的试用期转正申请。
我面如死灰,甚至没有勇气站起来。很快,小组负责人叶哥走到了我的工位旁,脸色凝重地拍了拍我:“走吧,超哥(部门长)在等你。”
去会议室的那段路,是我职业生涯中最漫长的一段。我感觉自己不是去开会,而是去领“死刑判决书”的。
会议室里,我低着头,像上次一样,准备先道歉,再引咎辞职。
然而,超哥的第一句话,却再次出乎我的意料。他指着白板,语气严肃但异常平静:“先别说谁对谁错。我们先搞清楚三件事:第一,这个脚本为什么能在生产环境执行成功?第二,为什么你的账户会有直接操作生产核心表的权限?第三,我们的工具和流程,有什么办法可以杜绝下一次的‘F8’?”
没有指责,没有咆哮,甚至没有问我“为什么会犯这种低级错误”。整个“三堂会审”,变成了一场纯粹的、对事不对人的事故复盘会。我将我的操作原委和盘托出,他们则从权限管控、工具规范、流程设计的角度,一步步剖析整个事件的漏洞。
在这里插入图片描述
会议的最后,超哥看着我说:“试用期的员工,我们不应该给这么危险的权限,这是管理的失误。你,作为一个有经验的DBA,不应该如此依赖工具的‘记忆’,这是操作的失误。我们都有责任。”
他顿了顿,说:“好了,问题搞清楚了,你回去好好写一份报告,我们不能白白浪费了这次教训。”
在我转身离去的时候,超哥在身后说了一句:“你的试用期通过了,继续努力。”
我愣在原地,几乎不敢相信自己的耳朵。我以为的狂风暴雨,又一次,化作了春风细雨。
3. 懊悔不已,万言反省
走出会议室,我内心除了再一次被“温柔以待”的感动,更多的是一种无地自容的羞愧。超哥和叶哥把责任揽了一半过去,这份担当,远比任何严厉的批评都更让我警醒。
那句“我们不能白白浪费了这次教训”,在我脑中反复回响。
我回到座位,没有丝毫懈怠,立刻开始写那份“足够深刻”的复盘报告。这一次,我写的不仅仅是事故本身,而是把我能想到的、与“数据库操作安全”相关的所有细节,都写了进去。从PL/SQL Developer的工具配置,到不同环境的账号权限分离;从脚本的版本控制,到发布的审批流程……
我把自己当成一个“反面教材”,毫无保留地剖析了每一个可能导致风险的环节,并给出了详尽的改进建议。这封邮件,与其说是复盘报告,不如说是一篇上万字的、关于生产安全的“万言书”。
写完后,我怀着忐忑的心情,将邮件只发给了超哥一人。
在这里插入图片描述
没想到,半小时后,我收到了超哥的回复,同时,这封邮件被他转发给了部门全体成员。他在转发语中这样写道:
“这封邮件,我建议所有人都认真读一读。犯错并不可怕,可怕的是犯错之后还觉得是‘运气不好’。这位员工(我的名字)用他的深刻反思,为我们所有人上了一堂价值千金的生产安全课。我希望大家学习的,不仅是报告里的技术细节,更是这种直面问题、深度总结、并乐于分享的精神。”
那一刻,我看着屏幕,百感交集。感动、羞愧、温暖,五味杂陈。这封邮件,我反复看了数十遍。也正是从这一刻起,我下定决心,要把“总结分享”,变成我雷打不动的习惯。
4. 版主出书,共闯江湖
超哥的这封“公开表扬信”,像一剂强心针,彻底点燃了我的分享热情。在接下来的半年多时间里,我将在工作中遇到的每一个坑、总结的每一条经验、写的每一个提效脚本,都详细地记录下来,发布在内网上。短短半年,我分享了数万字的技术总结,这些文章不仅让我和同事之间的技术交流越来越顺畅,甚至连客户都对我赞赏有加,我的工作也因此越走越顺。
渐渐地,我不再满足于只在公司内部分享。我把目光投向了更广阔的江湖——当时国内最火的数据库技术论坛ITPUB。我开始在论坛上回答别人的问题,分享我的文章。因为分享的内容足够“干”,我很快从一个新人,变成了论坛的活跃者,并最终被邀请成为了“数据库管理”版的版主。
在ITPUB当版主的日子,让我认识了天南地北的技术高手,我的眼界和技术深度也因此飞速提升。
又过了一年,公司开始年度职称评定,其中一项重要的加分项,是在核心期刊上发表技术论文。我对此一窍不通,便去请教当时ITPUB的创始人,也是我非常敬重的一位大哥——虎哥。
我私信虎哥:“虎哥,我想发篇论文评职称,您有没什么路子推荐?”
虎哥的回复,简单、直接,却再一次,改变了我的人生轨迹。
他回道:“格局小了!ITPUB开发版的几个版主,正准备凑一起出本书,我们看你小子文章写得不错,逻辑也清晰。怎么样,有没有兴趣,跟我们一起干一票大的?出书,不比发一篇论文牛更好吗?”
在这里插入图片描述
看着虎哥发来的消息,我愣住了。出书?对于当时的我来说,那是一个遥远到不能再遥远的名词。我,真的可以吗?