为什么好的Oracle DBA那么难找?
“Duncan……可不可以帮我介绍几个数据库管理员(Database Administrator;DBA)来我们这边上班?”做了几年的数据库顾问服务后,客户看到我,总是希望我可以帮他们介绍几个DBA。
因为我自己在DBA这个职位上的培训,是从“信息”教育培训中心出来的。我通常都会这样回答他们:“你们可以找有OCP(Oracle Certified Professional)认证的人进来,我自己也是从教育培训中心出来的。”讲到这里,有些客户可能是不好意思得罪“我的出身”,唯唯诺诺的不讲话了……
有些比较熟的客户可能会直接说:“Duncan,不是啦,我们也知道教育培训中心,他们每年都会培训出一些取得OCP证照的Oracle DBA,像我们公司的 XXX也是那样出身的,但总觉得没有你那边的好用……所以……”
数据库管理员也无解的问题症结在哪?
好用的Oracle DBA为什么这么难找?这不但是很多CIO的痛,也是很多IT主管搅尽脑汁也解决不了的问题。那么,究竟从上述教育培训中心出来的Oracle DBA都跑到那去了?
以我当初受训的那班为例,我们班上一共有25个学员,当初随班考取OCP认证的大约有15人(之后考到的,我就不清楚了),在几年职场洗涤后,现在大概只剩下6个人从事与Oracle DBA相关的工作。这6个人中,有三个人是以主管的身份“兼作”Oracle DBA。Oracle DBA在IT职场的阵亡率很高。主要的问题在于,造成Oracle数据库发生问题的原因,经常不单只从数据库而来。
以我的一个客户为例,小白(人名纯属虚构,如果雷同,纯属意外)是一个拥有OCP证照,且对数据库本身的架构、运作原理有一定了解的数据库管理员。原以为一切都没问题的,无奈小白刚一就任,就面临到替换公司数据库系统主机的问题。小白没有程序开发与主机系统管理等经验(小白是那种一毕业就去考OCP的证照,接着做Oracle DBA的人),因此,一就任就面临到不少挑战。
数据库系统在小白接手后,一直有一堆怪怪的问题发生。
问题在那?没有主机系统维护经验的小白虽然知道数据库系统本身的运作并不够顺畅,但却一直找不到问题的症结点,时间一久,他便成了大家“攻击”的对象。而且情况愈来愈严重。一开始,大伙只有在数据库出问题时,才会去找小白;到后来,只要一发生问题,不论那个问题跟数据库是否有明显的关连,大伙的第一个动作就是,把问题推到数据库或小白身上。
该状况让小白的工作愈来愈难做。理由是,小白既不懂管理主机系统,也不会撰写程序,当大家都枪口一致的说“一切都是是小白的责任”时,完全搞不懂状况的他,也只能摸摸鼻子,把这黑到发亮的锅子背下来。
幸好,小白的公司是我们维护的客户之一,历经几次的系统维护后,我们发现其实单纯只因数据库而导致的问题并不多,有一大半的问题是因为系统主机等硬件过于老旧而造成的问题,另外三分之一的问题则来自于程序撰写,如SQL语法撰写习惯不好等。
以SQL语法撰写习惯不好来说,当数据库的Loading还很轻的时候,这些有问题的SQL语法并不会对数据库或系统造成太大的影响,但是当数据库的数据成长急遽或主机负载将满时,上述的SQL语法,就像是一锅粥中的老鼠屎,会直接影响到整个数据库系统的运作效能。
在协助小白的那段时间,曾发生一个很好玩的现象:在我们还没有到现场确认问题原委前,小白总是透过电话用一付可怜兮兮的口吻跟我们求救(因为公司内部的同仁会把问题的矛头指向他)。但在我们到场了解状况后,反倒变成我们协助小白将该叫来骂的人骂一骂,例如:主机有问题,就把负责主机维护的人叫过来。程序写得不好,就把负责撰写程序的人叫来念一下。
上述的例子,在我们维护的企业中,是十分常见的状况。这代表一个Oracle DBA如果不是对系统或程序的运作有一定程度的了解,他将很难胜任数据库管理等工作。
只不过,教育培训中心提供的Oracle数据库课程,并没有教导Oracle数据库系统以外的知识,因此,非数据库本身所造成的营运问题,初任DBA一职的新人多没有能力掌控。
所以,当一个企业说他们找不到称职的或好用的Oracle DBA时,他们可能不是在说找不到“懂”数据库的人(其实考得到OCP认证,我想对数据库或多或少都有一定程度的了解),他们应该是指:他们找不到人可以用全观的角度,来解析、处理与解决导致数据库无法正常运维的原因。
我想,也应该是上述原因,我的某几位同学才会升到CIO,还兼作DBA工作。就我的观察,当一个员工有能力全角度的解析、处理与数据库运维相关的各种问题时,他已经离主管的位子不远了。
好的Oracle DBA该具备的两大要素
纵然如上所说,好的Oracle DBA难找,不过,日子总是要过下去,企业总不能因此就不雇佣Oracle DBA?以下,我将就我的经验,与大伙分享“如何找寻适合的Oracle DBA”。
怎么选择一个对的Oracle DBA
就像我说的,一个有能力的Oracle DBA,其实已经离主管的位子不远了。所以,大部份的企业很难一下子就找到一个全方位的Oracle DBA(当然也是有可能,只不过,这比较会有运气的成份),这代表企业在选择Oracle DBA的时候,势必要对负责该职位的DBA的职能有所取舍。我通常会建议我的客户在寻找Oracle DBA时,得先确认企业需要这个人来其处理什么问题?
大部份的企业对Oracle DBA的需求,一开始多半是以维持数据库的正常运作以及协助数据库进行数据备份等工作为主,因此,我会建议找有大型主机系统管理经验(有存储管理经验者尤佳),或者了解操作系统原理与运作的人来做。因为,Oracle 数据库运作的不正常,经常是因为系统出状况,找具有系统管理经验的人员做DBA,在一定程度上应该已经能比“只”懂数据库的信息人员,还会比较快得找到问题。此外,也比较能避免数据库出现宕机(一般而言,数据库在管理上最忌讳的就是宕机时间了)等状况。
其次,有的企业在找Oracle DBA的时候,希望找那种了解数据处理流程的人,以便大大翻整一下既有数据库内的数据,以及优化数据传递与分析(例如写一些store Function、triger、建DB_link……)等工作。在这种状况下,若企业找的DBA是系统管理出身的人,在接手的初期他一定会吐血给你看。至于在未来,有没有机会掌握甚至是“得心应手”,这就要看那个人的资质了。因此,关于这一方面的人选,我就比较建议找有程序开发经验的人(特别是对数据库存取上有实际程序开发经验的人),他们除对数据与数据结构的本身有一定的敏感度,也比较熟悉客户的需求,知道该如何翻整数据库。
要特别注意的是,鱼与熊掌不可兼得,同时兼俱系统管理与程序开发等两种技术能力的人少之又少,因此,在进行DBA的招募前,建议企业先想好自己要的是哪一种人才。不过,不论你找的是那一种Oracle DBA,我都不太建议找一个只有OCP认证但无其它工作经验的人来做DBA。因为这意味着,企业要落实数据库管理的阵痛期可能会拉得很长,而且阵痛的过程中DBA也很是辛苦。
运气好的时候,就像今天故事的主角小白一样,在我们的扶持下,撑了一年半,已经可以称得上是称职的DBA。运气不好的时候,像我在教育培训中心的同学,他苦撑了一年后离去,至今他仍不敢跟别人说他有OCP的证照。
最后,要另外一提的是“效能调校”。由于Oracle数据库的效能是可以被调整的。因此,也有不少企业在找Oracle DBA时,是以调校数据库效能为主要诉求。这样的想法是很好,只不过,“效能调校”所牵扯到的领域太过广泛。
决定数据库效能高低的因素有很多,有时候是单纯的数据库参数没有调整好,有时候则牵扯到整个硬件架构,甚至是程序软件开发规划等问题。光是能做到单点调校的DBA即已十分难得,Oracle DBA若不是以很全面的角度在思考问题来进行调校,也很可能导致数据库系统出现其它面向的问题。
发生在企业的真实状况是,一个应用服务能否顺利运维,与服务器、储存设备、网通设备等硬件,数据库、操作系统、应用系统(复杂点的还牵扯到中间件软件与开发组件,例如ODBC )等范畴都有关。因此,一个DBA很难在第一时间就面面俱到地思考所有问题,必须慢慢地依经验抽丝剥茧地清楚问题的所在。所以,如果企业目前尚未有专任的Oracle DBA,我会建议千万不要一开始就想找一个能做好“效能调校”等工作的Oracle DBA(不过,还是可以去找到协助运维或数据整理的DBA),否则,可能会导致极心痛的失望。
OCP的认证真的没有用吗?
说到这里,相信很多人会想问:“那我选人的时候,还要看OCP这张认证吗?这张认证不就跟废物一样?”如果真的造成这样的误会,我一定会被这些教育培训中心及Oracle 原厂给杀了。这里要郑重的重新声明一下:“我本人也是教育培训中心教出来的……”。
教育培训中心的训练课程有其重要性,尤其是数据库基本概念等。老实说,一个Oracle DBA若没有先好好把OCP的五门课(8i是五门课,9i以后有两门合并,变成四门课)攻读过一遍,了解Oracle 数据库的架构与运作原理的DBA,我不觉得他有资格说他是一个DBA。
没错,我刚刚确实提到造成数据库运维不顺的原因,有可能是操作系统或系统开发等非数据库本身的问题所引发的。但是,愈了解数据库架构与运作原理(真得好好读懂这一些书)的人,才愈有可能厘清上述的“非数据库本身的因素”来自何处,并进一步地针对数据库的特别来改善问题。而且,他们在管理数据库时,他们的做法也会比较多元化。
以数据库备份为例,没有考过OCP认证的DBA,他们熟悉的数据库备份方式可能就只有一种,而且还有可能是错的备份方式,例如:我之前听过最扯的备份方式就是在Oracle数据还在运作的状态,直接用OS提供的Ccopy指令将数据库档案复制出来。相对的,考过OCP证照的DBA,他们在备份方式的选择上就比较多元,而且能根据不同的情境采取不同的备份或备源方式,以确保灾难发生的时候可以无误恢复各种数据。
因此,企业在进行Oracle DBA的招募时,DBA是否拥有OCP认证,仍旧是一件很需要被考虑的。但同样需要提醒的是,拥有OCP认证只代表这个DBA对于数据库的熟悉度,不代表他有能力发现问题与解决问题。
我个人的想法是,拥有OCP认证,只代表该人员拥有“开始往后的DBA生涯”的权力,至于这个DBA 未来的成长幅度,则取决于他在系统面与程序面的学习能力。
拥有10g或11g的OCP认证足够吗?
过去在Oracle数据库 8i、9i的年代,只要考4、5门课(8i 五门、9i 四门)才可以拿到OCP认证,但自从10g以后,只要考两门就可以拿到OCP认证,这样的人是否够格呢?很多CIO都在问我这个问题。我想,并不能用考试科目的多寡来决定人的素质。不过,说老实话,就目前得知教育培训内容来说,以授课时数来看,10g以后的OCP教育培训的总天数是10天,比8i、9i少了一半的时间,言尽于此,大家应该心里都有底了。
虽然10g以后的版本,数据库在管理与应用等操作上比 8i、9i 容易多了。但就数据库底层的技术架构概念以及运作模式而言,我个人觉得8i以及9i在教材的规划上比较扎实(相对地难懂);而10g以后的教材则比较浅显易懂(不像以前我们读的8i“天书级”OCP教材),但也相对地无法太深入地着眼于底层的技术架构与运作等内容。当然,这也是一个福音,因为可以更容易的跨入这一个领域。
人员的本质最为关键
我会选择一个什么样的人来做DBA?事实上,我并不会先看他(或她)有没有OCP认证。
“诚信”反而是我第一个考虑的标准。因为数据库的数据不外乎企业或客户的重要数据,如果DBA的功力好,但他却“诚信不足”,那么,上述重要数据很容易在他“有心”又有“能力”的情况下被利用。第二个评估点是他对系统面的了解程度,以及他解决问题的方法。一个肯学、好学的DBA,在面对问题时,比较不需要我担心这担心那,我也不用忧烦他是不是有能力熟悉OCP课程等。
所以,关于OCP执照,我觉得有是最好,如果没有的话,至少要找到对的人,再来要求、培训(考到OCP)。“对的人”远比拥有OCP证照重要多了,事实上,要“对的人”取得OCP认证一点也不难。