磨刀不误砍柴工

磨刀不误砍柴工这句话是老白小时候听老师讲的最多的几句话之一,频率和“少壮不努力”差不多了。这句话的意思是,多做些准备,不会耽误正事,反而会对你要做的事情有所帮助。这句话对于DBA来说,也是十分有意义的。很多DBA都会把大多数的时间用在学习数据库的技术方面,而很少去关注其他方面的东西,比如操作系统、网络、存储、主机等,理由是数据库的知识已经学不过来了,哪还有精力去学这些东西。实际上,作为DBA应该了解一些数据库之外的知识,特别是中间件、存储、网络。

还有些DBA对工具不屑一顾,甚至有些DBA认为高手都是不使用工具,直接敲命令的人,似乎高手都是像电影里的黑客一样的,面对的都是满屏的十六进制数。其实我觉得这种观点是不对的,高手往往是能够合理利用工具的人,而不是不使用工具的人。前几天在一个饭局上,一个客户的DBA向其他人介绍老白,说这哥们可以不借助第三方工具,仅仅依靠AWR报告和SQLPLUS就能完成性能分析,而我就必须依赖于I3这样的分析工具才能够完成。

这句话其实包含了很丰富的含义,首先,老白进行性能分析也是需要依赖于工具的,AWR报告和SQLPLUS都是Oracle自带的工具。而那个哥们和老白的区别是,他无法直接根据AWR报告进行分析,必须依赖于I3工具。这也说明了,那个哥们依赖于I3工具,也能够进行类似老白的性能分析工作。在这个例子中,工具提升了DBA的能力。

工具是DBA的最好的助手,不过不是任何工具都适合每个DBA,工具应该成为辅助DBA工作最好的帮手,而DBA也应该对自己使用的工具有深入的了解。因此说每个DBA应该建立一套自己顺手的工具集,而不应该随意使用工具。再好的工具,如果你不熟悉,那么对你来说也可能不如一套更为简单的,你自己熟悉的工具。让工具成为你得心应手的帮手,需要一个较长时间的磨合过程。

老白在十多年的DBA工作中,也经历了依赖工具、放弃工具、再到组建自己的日常工具集这个过程。最早期使用Oracle数据库的时候,Oracle自己的工具很少,也很难用。不过由于对Oracle的很多命令都不熟悉,因此工具就变得十分重要了,老白那时候通过一个海外的朋友找到了一套叫因巴卡迪诺的数据库管理工具,这个工具给了老白很大的帮助。再后来就有了TOADTOAD成为老白的首选工具。随着对数据库的了解的深入,老白发现工具的作用十分有限,而脚本往往可以弥补工具的不足。于是这个阶段,脚本的积累成了我最主要的工作,而TOAD之类的工具反而用的越来越少了。1998年到2004年这段时间里,老白积累了大量的脚本,也鼓励公司的年轻人多积累一些脚本,建立自己的脚本集。

随着DBA工作的日益深入,脚本的不足也慢慢暴露出来了,当你拥有数百个脚本的时候,有时候要找到一个合适的脚本就需要花费很长的时间。而随着Oracle数据库进入9i时代,OEM的出现令老白眼前一亮,其强大的功能,确实可以帮助DBA进行一些十分复杂的,使用脚本很难进行的分析操作。在一个优化项目中,老白通过OEMSQL ANALYZER EXPERT分析SQL,大大提高了手工分析的效率。SQL ANALYZER的虚拟索引工具可以帮助DBA分析创建某个索引可能会带来的影响,这种分析在没有工具时是很难进行的。OEMTUNNING PACK在那次优化项目中给老白带来了很愉快的感受,于是老白对工具进行了重新的认识,随着数据库的日益复杂,DBA要做的工作也越来越繁杂,仅仅依靠脚本进行工作,效率就太低下了。OEM这样好的工具的引入可以大大减轻DBA分析工作的难度。

Oracle 10g的推出,让老白更加坚信了工具的作用。10g是一个易管理的数据库,这一点在10g刚刚推出的时候,确实让很多DBA兴奋不已,甚至有很多DBA开始忧虑,如果10g这么强,DBA是不是要失业了。不过大多数DBA在使用了一段时间10g后,好像并没有感受到10g的易管理性所带来的好处。

有些DBA问我,10g好像并没有ORACLE宣传的那么强大,DBA也感受不到10g在那里比9i更易于管理。我问他们,你们怎么管理10g的数据库,他们说,和9i没区别啊,用sql*pluspl/sql developer。于是我就知道了他们为什么没有感受到10g的强大的易管理特性了。如果你不去用em,db console管理10g的数据库,你根本就无法感受到10g强大的易管理特性。 10g的数据库是通过em或者db console来展现其易管理框架的。ADDM的发现是通过EM推送到db console上的,各种自动诊断和自动调优工具的分析结果也是通过EM推送到db console上的,如果你没有启动db console,那么这些10g才有的新的功能,你是无法感受到的。虽然你也可以通过Oracle 10g提供的各种API和工具包,在SQL*PLUS上使用这些功能,但是,一般的DBA很难记得住这么多API

虽然Oracle 10gdb console提供了强大的功能,不过不幸的是,老白遇到的绝大多数的客户都没有启动db console,因此他们无法感受到10g带来的强大的特性。实际上他们还是在用9i,甚至更古老的方法在管理10g或者11g的数据库。

有一次老白给一个医院升级数据库,当时他们的电脑科科长问我,他不太懂SQL,有没有什么工具可以帮助他监控数据库的性能情况。于是我试了试,他们的DB CONSOLE是能够启动的,于是我启动了DB CONSOLE,教他如何用db console监控数据库的性能情况。随手我教了他如何在db console中通过“顶级活动”工具查找高开销的SQL和高开销的会话,同时我随手点击了一条高开销SQL,教他如何创建调优作业,如何查看调优作业的结果,如何应用SQL优化方案。不到10分钟,他就学会了这些操作,并可以自己动手分析和优化SQL了。一个多月后,在QQ上,他兴奋的告诉我,他用我教给他的方法对他们的HIS系统中的高开销SQL进行了分析和优化,完成了30多条SQL的优化工作。院里的同事都感觉系统的性能提高了不少,CPU使用率也下降了一半以上。

可能有些DBA不相信这个故事,不过这确实是一个真实的故事,基本上没有演绎的成分。合适的工具确实能够提高DBA的工作能力。理解了工具的用途,下一步要考虑的就是我们该使用哪些工具呢?实际上,工具并不是越强大越够用,尽可能使用Oracle本身自带的工具是最好的选择,因为DBA经常会面临各种环境,有些环境中,你自己的工具可能无法直接接入客户的系统。

在多年的工作中,老白也积累了一整套自己使用的工具。老白目前使用的工具基本上都是随手可得的。数据库管理工具方面,老白目前最常用的是ORACLE SQLDEV,这个工具是ORACLE原厂的工具,基于JAVA的,而且可以通过thin连接数据库,不需要安装Oracle客户端,一般来说ORACLE原厂的工具比较容易获得客户的认可,允许你连接到数据库上进行操作。而大多数情况下,客户可能不允许你的工具直接连接数据库,那么,SQLDEV工具就有了另外一个作用了,就是用来格式化SQL文本。我们经常会从数据库中取出一些SQL文本进行分析,而这些SQL文本是杂乱无章的,让人看得很烦。通过SQLDEV格式化后,SQL文本变得十分规整,也十分易读了。

如果客户的db console是可用的,那么一般情况下,老白会使用db console作为分析的主要工具,因为绝大多数的分析功能都可以在db console中完成。当然,如果是做性能分析,那么awraddmash之类的报告也是必不可少的工具。

如果是做健康检查或者性能分析,RDA也是老白很喜欢使用的工具。使用RDA采集数据,一般来说客户都是可以接受的,大多数和Oracle原厂打过交道,开过SR的客户都十分了解这个工具。有些时候,老白也会封装一些采集脚本到RDA中,在使用RDA采集标准数据的同时,采集一些特殊的数据。当然,要保证嵌入的脚本是无害的,并且让客户审核过才能封装在RDA中。

操作系统分析方面,老白经常会使用nmonglance等工具进行数据采集。在有些情况下,OSWATCHER也是不错的工具,从5.1版本开始OSWATCHER已经被改名为OSWATCHER BLACK BOX

看上去似乎很简单,老白使用的大多数都是免费的,可以随手下载的工具。不过,这些工具是在老白这些年中使用的工具中沉淀下来的,一直在用的工具。其他一些类似TOADSPOTLIGHT之类的工具,目前都已经被逐渐放弃了。除了上述的工具外,一些操作系统自带的命令和一些脚本也还是经常会使用的,数据库方面的脚本,老白已经抛弃了以前积累的数百个脚本(这些脚本大多数随着数据库技术的发展已经不太适用了,有些已经完全被工具取代了),目前留下了十多个较为经典的诊断脚本,通过这些年的实际工作,也逐渐编写了一些脚本,帮助老白进行分析。

虽然积累了十多年的工具,但是随着时代的发展,一个企业只有几套关键数据库的时代很快终结了,信息系统爆炸式的发展,很快我们会发现,DBA每天都要面对几十个,甚至几百上千个数据库了。传统的工具已经无法适应这种新条件下的系统运维了。甚至我们想每天连到数据库上去做一次日检都变得十分困难。传统的依靠积累的方式来构建工具集,对于一个组织来说,存在的弊端就很多了。大量的工具无法协同,只能在某些方面发挥作用,这样的工具只能在某个专家或者高手手里发挥作用,而无法在企业的运维自动化中发挥作用。另外一方面,企业的大型数据库增长变缓了,取而代之的是一些十分小型的,负载规模不大的小数据库与微应用。是的,我们迎来了云时代,在这个新的时代里,传统的DBA感到十分迷惑,我们该如何来面对这种新的形势呢?

新工具时代必然是自动化的,整体化的,智能化驱动的工具逐渐将繁琐的日常常规运维监控从DBA手里接过来,让DBA从海量的杂事中解放出来,更注重于深层次的运维和架构的优化。下面是老白对未来的DBA工具发展方向的几点思考。

(1)标准化:企业中的所有工具都有标准的接口,包括采集、任务调度、可视化展示、数据共享等方面都是标准的,便于企业工具的不断积累与发展;

(2)知识化:工具是以系统化知识作为核心进行梳理和整理的,所有的企业运维知识最终通过工具沉淀与积累下来,在企业的运维自动化中发挥作用。

(3)智能化:工具不仅仅是展现数据,而更重要的是要发现问题,产生结论,甚至部分结论可以直接应用于自动化处置。

(4)生态化:死的工具不能解决所有的问题,解决问题的最终因素还是人。工具与人形成良好的互动,促使一二三线能够更好的协同工作。

磨刀不误砍柴工》来自互联网,仅为收藏学习,如侵权请联系删除。本文URL:https://www.hashtobe.com/881.html