引言
「DBA 100人」专访计划是OceanBase围绕资深DBA(数据库管理员:Database Administrator)进行的人物专访活动,旨在通过人物故事、职业发展经历以及日常工作中遇到的技术难题和实践案例,未来对技术趋势的想法,希望他们的成长之道能够给到各行业DBA一些建议和思考。
《DBA 100人》第5期带你了解南京基石数据技术有限责任公司CTO,资深Oracle数据库优化专家徐戟(白鳝)——他曾供职于DEC、赛格集团、长天集团、联想集团等国内外知名企业,主持开发了国内第一套联机实时计费系统,国内第一套三检合一的检验检疫综合业务系统。2000年以后致力于Oracle数据库性能优化等方面的研究,参与了大量性能优化项目,著有《Oracle RAC日记》、《Oracle DBA优化日记》和《DBA的思想天空》等技术专著。
作为一名在DBA圈子里颇有名气的技术专家,徐戟一直活跃在业内,担任过众多数据库和IT运维活动的演讲嘉宾,拥有不少的粉丝。徐戟的著作至今仍然是很多DBA的案头读物,不少DBA正是从这些书籍中找到了解决问题的答案。尽管在数据库领域如此出名,但他其实算是半路出家,是怎样的机缘巧合,让他逐步成为一名数据库专家的?
2015 年的一天,徐戟突然接到了一个来自国家电网的紧急求助电话。原来,国家电网遭到了 Oracle 数据库 SCN HEADROOM 风暴的袭击,距离 SCN 天花板只有不到 10 天,如果在此之前找不到源头,风暴爆发时国家电网大部分 Oracle 数据库可能宕机,届时会波及到国家电网下辖的 20 多个省市的营销、生产管理等核心系统,这将造成不可估量的损失。
SCN (System Change Number)是 Oracle 内部使用的逻辑时钟,用于区分事务操作的先后次序以及确保事务操作的一致性,由一串 48 位单向序列数字组成。为了确保这个 48 位的 SCN 能够用足够长时间,Oracle 对 SCN 序列做出一个限制,即每秒钟 SCN 最大增长不能超过 16K。正常情况这个增量完全能满足需求,但是当时 Oracle 有 Bug,在某些情况下会被触发,导致SCN在短时间内大幅增长,很快就会逼近上限。而一旦达到了上限,会造成数据库保护性宕机。
Oracle 这个 Bug 已经存在几年了,Oracle 也推出了相应的补丁。不过,只要数据库有一个没打补丁,与其他数据库通过 DBLink 连接时就会引发 SCN 同步。国家电网当时面临的就是这个局面,国家电网的大多数 Oracle 数据库都打了补丁,SCN HEADROOM 还是在不断异常减少,说明有个别数据库没有打补丁,现在迫切需要在 SCN 达到上限之前找到这个没有打补丁的数据库,予以下线或者立即打补丁解决问题。
这就是徐戟当时面临的棘手情况。国家电网专门为临危授命的徐戟提供了一个视频指挥中心,并授权他来全权调度和指挥国电下属的那些数据单位。对徐戟而言,压力不言而喻,时间紧,而且这件事情太重要,不容有失。
“国家电网业务遍及全国 27 个省,有 30 多个数据单位,安装了数几千套 Oracle 数据库。在一个复杂的网络环境下互相传染,到底谁是源头,谁是被传染的,必须在几天之内把它定位出来,否则的话就可能要出大的运营事故了。” 徐戟说。
好在徐戟之前在运营商处置过类似的情况。接到任务后,徐戟抓紧时间安排人写好脚本,然后分发下去,让脚本在国家电网的各个系统上跑起来。几个小时后数据报上来。徐戟找了几十个人连夜处理数据,大约 24 小时后结果出来了,最后定位到西北的某个系统,是另外一个单位部署在国家电网的数据库。因为不属于国家电网所有,没有打补丁,引发了这次 SCN 危机。
2 天多的时间,徐戟没有离开指挥中心,困了就在大厅里眯一会。可以想象,当准确定位到问题的那一刻,站在指挥中心的大屏前的徐戟想必是无比自豪的,作为一个技术人员能有这样的机会和能力来回报社会、回报国家,那种成就感是对他的付出和辛苦最好的回报,足以让他记忆一辈子。
虽然今天的徐戟是一名不折不扣的数据库专家,但他并非一开始就专门研究数据库。数据库是他后来才锁定的领域。实际上,在 2000 年以前和 2000 年之后最初的几年,徐戟在软件领域要比数据库有名。
徐戟 1992 年毕业于南京大学计算机专业。当年计算机还是稀罕物,只有大公司才有计算机,而且都得放在专门的计算机机房,计算机人才非常宝贵。徐戟属于不太安分的人,几次进公司就业,然后又出来创业。虽然很多时候徐戟的工作会与数据库打交道,也会涉及一些数据库的优化和运维,但最多只能算是兼职 DBA。大多数时候徐戟的主要工作是软件开发,以及进行系统优化,在业界颇为有名。
到 2006 年,徐戟所在公司成为了 Oracle 在中国的外包服务商,从此和 Oracle 数据库打交道的时候越来越多,徐戟的工作重心逐渐转向了数据库,并很快成为一名专家,在业内拥有了很高的知名度。到 2011 年,国家电网有一批几年前上的项目由于运维没有跟上,陆续出现性能问题,在全国范围找人优化,徐戟因为在业内拥有很高的名气而被国家电网选中了。
“当时国家电网负责这项工作的一个领导准备和我见面。他工作很忙,我专门从深圳飞过来见他。我等到他了一上午,他实在抽不出时间,就决定中午边吃饭边聊。吃饭的时候,我介绍我的方案,这位领导非常感兴趣,直接把自己后面的日程安排取消了,我们一直谈到了下午 2 点。”徐戟说。
这件事一方面说明了国家电网对这件事情的重视,同时也说明徐戟的方案可行。回深圳不久,徐戟就接到国家电网的通知,这个项目要真正做了。这个项目后来完成的效果非常好,整个系统的性能提升了 10 倍以上。项目涉及到的工作也很多,不只是数据库的优化,而是软硬件环境包括应用系统的整体优化,甚至涉及到应用软件核心算法的改进。
这个项目让徐戟在国家电网系统一战成名,后来他陆续参与了很多国家电网的项目。而在服务国家电网的过程中,徐戟的名气越来越大,有很多类似的项目找来了。徐戟记得有一个项目上线才两年,可是系统越来越慢,公司准备投入 3500 万进行系统扩容。听说了徐戟的能力,找到他看看他能不能想想办法,实在不行也少投点钱。接到任务,徐戟带着团队干了一个多月时间,然后回复领导保证系统再用 5 年不需要扩容。
“其实,这个 3500 万的项目我们做的工作并不算复杂,主要是碎片的整理、虚拟卷的设置和表分区的调整等,都是比较常规的操作,原本计划还要做 SQL 的优化等,因为前期这些工作效果非常明显,这些就没做了。”徐戟说。
随着一个个项目的成功,徐戟在国家电网系统也成为一个名人,一位领导甚至对手下人说,你们可要把徐戟看好了,别让他跑了,这个人可值钱了。
“曾经还有一个运营商 IT 负责人半开玩笑的和我说,如果你能通过优化,让我的系统多用两年,我给你 1000 万都愿意。”徐戟说,这实际上就是系统优化的核心价值。
徐戟表示,这虽是玩笑但也说明系统优化的确是能节约投资,能真正带来实实在在收益的。这也成为今天徐戟将很大精力放到智能问诊软件 D-Smart 的研发上的一个重要原因。
“过去很多系统重建设轻维护,系统上线后就没人管了,导致系统性能很快就降下来了。实际上,只要做些常规的运维工作,往往就能取得很好的效果。D-Smart 希望在这方面做点工作。”徐戟说。
徐戟从 2000 年以后慢慢将主要精力转到数据库,特别是 2006 年成为 Oracle 在中国的外包服务商之后,工作重点就全面转向数据库。加上随着年纪的增长,继续写代码精力也跟不上,徐戟也希望能把精力转到数据库的运维上。“毕竟数据库是一个可以干到老的工作。”徐戟说。
因为徐戟长期从事数据库相关的工作,使得他对数据库行业的发展非常了解。这些年下来,他太了解中国在数据库领域的问题所在了,也非常希望为中国数据库产业的发展出一份力。为此,他积极鼓励自己及其身边人把数据库领域积累的经验对外分享,他写书、开微信号、演讲,不断传播数据库的相关知识。
“我喜欢分享,希望大家能一起努力,让这个生态做得更好。当年出书的时候,就有很多人让我别出书了,说这里有很多技巧和方法都是 DBA 吃饭的本钱,说出来别人都会了。最后我还是坚持出了。”徐戟说。
2017 年,创立南京基石数据公司以后,他决定推出一款用于数据库的智能诊断工具,让这些经验能为更多人服务,这就是 D-Smart。他说这可能是他退休之前做的最后一件大事了。
D-Smart 将数据库专家的经验集合起来,形成知识图谱,然后对数据库运维过程中采集下来的各种日志、指标等数据自动进行分析和诊断,及时发现问题并告警。
“D-Smart 对不同的 DBA 作用不同,如果是普通的 DBA 可以通过它帮你发现一般的数据库问题,进行一般诊断和告警;如果是高级的专家,它也可以帮你把资料进行汇总,为专家的诊断提供方便。”徐戟说。
因为 D-smart 的目标是能适用所有市场主流的数据库,所以徐戟这些年和国产主流数据库都有接触,对于国产数据库的不足也深有体会。徐戟介绍,很多国产数据库面临的尴尬状况是,小问题不用 DBA 来,扛一阵子就过去了;大的问题,DBA 不用来,来了也没有用。
“数据库的可观测性是一个数据库是否成熟的一个重要标志。Oracle 提供了非常丰富的指标,通过这些指标可以非常清楚地了解目前数据库的运行状况。比如,光是等待事件 Oracle 就提供了 2800 多种,而我们很多国产数据库连最基础的一些指标都没有,对 DBA 很不友好。”徐戟表示。
D-Smart 是一个深度运维工具,需要根据丰富的指标数据才能做出判断,然而国产数据库在数据的提供上普遍不足,尤其是后起之秀的国产分布式数据库。一方面,国产分布式数据库原本相比集中数据库原本架构就要复杂一些,同时技术成熟度又晚一些,使得国产分布式数据库在指标上和相关文档上落后更多。
不过,OceanBase 给徐戟留下非常好的印象。OceanBase 是 D-Smart 接入的第一个国产分布式数据库,这也说明 OceanBase 在可观测性上相比同类数据库有不小的进步。
徐戟说,OceanBase 给他印象最深的有几点:第一是安装和部署容易;第二个是文档相对完整,在国产数据库中非常优秀;第三,OceanBase 这几年在优化器上真正下来不少功夫,每一个版本都有明显提升。
他希望 OceanBase 在版本兼容性上、系统可观测性上以及产品本身的成熟上也能继续进步,为中国数据库产业的进步起到更大的作用。
作为一名数据库技术专家,徐戟认为 DBA 是一个需要时间积淀的工作,当然也是一个可以做到老的工作,而且是一个非常有成就感的工作。
“DBA 是需要时间积累的,它是一个理论学习和实践相结合的职位。如果你干了个三年、五年,你才算刚刚入门。有人可能这个时候就觉得自己很牛了,因而放松了学习,甚至停止学习。其实刚刚进入到一个新的阶段。”徐戟说。
那么,如何激励自己学习,徐戟认为第一重要的是——对数据库有兴趣。
“你得对数据库有兴趣,没有兴趣的人,你可能只它是一个职业的话,等你干到一定年龄,可能觉得干不动,晚上加班也加不动了。只有你有兴趣才能长期干。DBA 是越老越值钱,因为你的经验越丰富,你越能准确发现问题,快速找到问题所在。”徐戟说。
第二,做 DBA 必须有比较强的学习能力。“你一定得是一个愿意学习的人,否则你不要干别的,就是看文档,看资料都难以坚持,还别提那些靠 DBA 相关的各种证书。而且这些也只是刚刚入门而已。”徐戟说。
他说他至今仍保持学习的习惯,订阅了很多会员,坚持看大量的书和资料,不断学习,否则的话可能很快就会落后。
第三,DBA 性格要够沉稳。毛手毛脚的很容易出事儿,而数据库一旦出了事儿,就出大事儿了。
从长期来看,数据库运维越来越走向智能化,但真正的高端数据库专家永远是机器没办法取代的。徐戟认为,对于 DBA 而言,最终的出路应该是往上走,让自己真正成为一名的技术专家,而不是成为一个可以机器替代的人。