虽然这是一篇国外的99年初的翻译文章,但很多内容同样适合今天的DBA. 近年来,我一直在和数据库管理员打交道,并直接面试了很多DBA职位。本文想概括一下IT行业对DBA的要求,以及国内DBA的新资现状。可以肯定地说,做一个高级DBA是很不错的职业。如果你打算成为一名DBA,那么希望本文起到抛砖引玉的作用。
DBA的个性特点
为什么这些个性特点很重要呢? DBA的等级
中级DBA往往从业一年左右,熟悉某种操作系统环境下的数据库。因为对中级DBA来讲,Windows NT和Unix是有很大差别的。中级DBA对SQL比较熟悉,他们自己购买了几本数据库方面的书籍,并深入钻研。中级DBA往往同时兼任数据库程序员,他们的工作对性能、稳定性、安全性的追求基本上不是很高,往往配合高级DBA做一些例行工作。 几种流行的数据库系统 以Java为中心的数据库-Sybase Adaptive Server Enterprise(ASE) 12.0
下面的表说明了国内DBA人员的基本薪资状况,并说明了DAB等级和你所熟悉的数据库系统怎样影响到DBA的薪资。当然,这只是我个人掌握的情况,只能在一定程度上代表行业的平均水平。 注:每年按13个月计算。表内数字为平均年薪。 下面不是全部列表,但是包括了DBA的典型职责: 解决。 第一份DBA工作现在成了恶性循环的境遇。假如我没有任何经验,我怎样才能得到DBA的工作呢?我 没有工作的话又怎么能得到DBA经验呢?这是要战胜的最困难的障碍。最困难的部分是获得第一个 DBA工作。这部分的剩下部分将针对实现你第一个DBA工作的目标给你一些建议。 提示#1:接受教育。--尽可能多的学习有关数据库的知识。这很可能将占用你正常工作以外的部分时 间也精力。参加本地大学举办的数据库培训班。许多培训公司都会举办数据库管理员的培训班。假 如你的老板不资助你的学习,那么你可能不得不自己支付这笔费用。许多DBA职业要求至少为计算机 科学或相关专业本科以上学历,因此你必须至少有那样的文凭。 提示#2:锻炼成为DBA。--许多数据库供应商都允许你下载他们数据库系统的测试版或评估版。下载 一份并且在自己的个人电脑上安装软件。练习使用数据库。故意破坏数据库并且尝试修复它。尝试 着履行你所能想到的尽可能多的DBA职责。测试和磨练你在自己的测试平台上的技能这样你就可以证 明你的数据库管理能力。 提示#3:获得认证。--许多数据库提供商都提供自己的数据库产品的认证。许多公司现在都把认证看 作是一种标准。需要记住的一件事是仅获得认证是不够的。通过DBA认证测试并不意味着你知道如何 管理一个数据库。它只是告诉你以后可能的老板,现在你拥有了一定的技术。它还告诉你的老板你 对DBA工作的态度是很认真的。我看到许多人抱怨他们已经得到了认证但是没有经验,却仍然不能得 到第一份DBA工作。认证本身并不能使你得到工作,但它是无害的。即使没有其他的,在你进行认证 的时候你也已经学到了许多知识。只是不要依赖认证来给你带来你要找的工作。你需要的比这还要 多。但它会在最后帮助你。 提示#4:利用你现有的技能。--许多DBA具有系统管理员背景。其他的有应用程序开发背景。假如可 能,查看你能否利用现有的技能来得到工作。现在的目标就是为你和你的老板创造一个双赢的局面 。例如,让我们假设你已经是一名系统管理员而想进入DBA领域。也许你会找到一份工作,这份工作 一部分时间里可以用到你的系统管理技能,并且在剩下的时间里可以使你涉及到数据库管理领域。 假如你已经是一名某个产品平台上的DBA但你希望转到其他产品平台,那么看看你能否找到一份同时 接触两个产品平台的工作。这样,公司和你都得到了想要的。在你定向到了DBA工作后,你可以试着 得到一个能让你全职作它的职位,也许还可以在同一个公司中。 提示#5:利用现在的机会。--有时候,一个人进入DBA领域仅仅需要的是正确的地方和正确的时机。 假如你现在的老板有一个机会让你进行任何数据库的项目,抓住这个机会!任何数据库经验就比没 有数据库经验要好。让你的管理者知道你十分积极的在寻找任何可能的数据库机会。他们就有可能 在下次机会到来的时候想到你。进行这些数据库项目以及看到你要成为一个DBA的渴望以后,他们可 能会决定培训你,提拔你。许多许多人都是以这种方式获得他的第一个DBA工作,在进行了一些数据 库相关的项目后不知不觉的成为一名较低级的DBA。通常当一名DBA离开公司后,公司将在内部寻找 一个候选人,假如他们认为这名候选人是可训练的话。 提示#6:寻找较低级的DBA职位。--假如你只是为了一个较低级的DBA工作,看到DBA职位的需求描述 说他们正在寻找高级DBA或者其他的。所以,让我们严谨一些。你并没有一个高级方面的经验。我已 经讨论过了对于这样的职位为什么公司不会考虑你。但是他们会在低级的职位上考虑你。低级的DBA 在高级DBA的指导下完成工作。他们摸索窍门。一般来说,高级DBA对数据库承担责任,同时也获得 所有的荣誉。但是不要焦急。随着你的事业发展,你将会有越来越多的责任和得到越来越多的信任 。因为你没有任何经验,你应该从这里开始启航。 我刚得到我的第一份工作!现在该怎样? 祝贺你!你现在是DBA俱乐部的正式成员了!对于这份梦寐以求的令人激动的职业,你准备好了么? 你的工作才刚开始并且你在学习上已经落在后面。你将会发现要成为一名高效的数据库管理员有大 量的知识你必须掌握。你的第一年或前两年将花费比以前更多的时间来学习。假如你发现学习知识 的数量使你大脑超负荷,那么休息一下,歇口气,然后再回到学习中去。为了帮助你继续走下去, 你可以按照下面的方法进行: 步骤#1: 关系型数据库理论 –这部分我假设你将管理的数据库是一个“关系型”数据库。其他数据 库模型也存在,但是关系型模式是近二十年工业上占统治地位的一种数据库模式。假如你的数据库 系统是其他的模式,那么学习它的理论。相关数据库理论是十分重要的。它是其他一切的基础。我 也看到许多跳到数据库管理职位的人从不想去学习纯粹的关系型数据库理论。不可避免的,在他们 的事业中对理论基础的匮乏作为缺点暴露了出来。假如你对关系型数据库理论理解得很好,那么你 将非常容易的在任何平台的关系型数据库管理系统(RDBMS)中转变。我使用Oracle数据库,或者 IBM的DB2,或者微软的SQL Server是无关紧要的。他们都是关系型数据库系统。他们在最底层都在 做着相同的事情。区别在于他们怎样去做相同的事情。纯粹的关系型数据库理论对于较低级的DBA来 说并非必需的。但是假如你想要超越低级DBA的水平它就是十分重要的。许多大学的教科书都很好的 包含了关系型数据库的理论。其中一本被广泛使用的教科书就是由Elmasri and Navathe编写的数据 库系统基础,Bejamin/Cummings Press。 步骤#2: 彻底的学习查询语言 –数据库都有语言让你能够从数据库中得到数据,把数据放到数据库 中,以及修改数据库中的数据。对于关系型数据库而言,这种语言就是结构化查询语言(SQL)。这 门语言是你与数据库接触的工具。不能让这个工具成为以后学习的障碍,这一点很重要。在你的测 试数据库中练习不同的SQL语句直到他们变成了你的习惯。这方面的一本非常好的书叫做Oracle 9i 完全参考(Oracle 9i The Complete Reference)由Loney 和Koch编写,Oracle Press。每一名 Oracle DBA都应该在他事业的早期阅读这本书。Oracle 9i参考手册(Oracle 9i SQL Reference manual)是另一个很重要的知识来源。在他们的技术网站TechNet上(http://technet.oracle.com )你可以访...t上有一个账号。 步骤#3: 开始学习基本的数据库管理工作 –这难道不是你最开始在这里的原因?为什么它在列表的 第三位?我们尝试着建造一个知识的金字塔,我强烈的感觉到一个人需要知道关系型数据库理论和 SQL,并且在你学习如何进行基本的数据库管理工作时把他们当作工具来使用。这些工作包括启动和 关闭数据库,备份和恢复数据库,以及创建/删除/修改数据库对象。对于Oracle数据库管理而言, 在市面上有大量的书籍可以给你所期望的一个很好的体会。这本书是Oracle 9i DBA手册(Oracle 9i DBA Handbook by Loney on Oracle Press)。我知道的大多数DBA都在他们事业的早期不只一遍 的阅读过这本书。这里,你应该同时阅读和理解Oracle 9i 概念指导,Oracle 9i管理员指导,以及 Oracle 9i备份与恢复指导(Oracle 9i Concepts Guide, the Oracle 9i Administrator’s Guide, and the Oracle 9i Backup and Recovery Guide)都来自Oracle文档。 步骤#4: 阅读,阅读,再阅读 –由于你才刚开始你的DBA职业生涯,因此你正在开始为你的技能奠 定基础。这需要一段很长的时间去形成,吸收和领会所有你将学到的知识。毫无疑问的,比你资深 的DBA由许多工作要做,因此他们可能不会总是腾出大量时间辅导你的学习。你不得不靠自己学习很 多东西。这就是阅读的目的。市面上有许多书籍可以解答许多数据库相关的话题。Oracle Press是 Oracle公司的官方出版社,有大量的Oracle相关书籍。同时也有其他的出版社,如Wrox Press 和 O ’Reilly Press。你也可以找到Oracle文档来阅读。并且还有许多网站和新闻组。尽可能多的读书 使你能够继续下去。还有,不只一遍的阅读它们可以使你吸收你第一次阅读时错过的内容。 步骤#5: 创建测试案例 –我经常看到初学者问一些很基础的问题,其实假如他们花一些时间来考虑 ,这些问题都是很容易解答的。毫无疑问的,在你开始学习Oracle的时候你会有许多的问题。看看 这些问题你能不能自己回答出来。例如,我又一次被问到能不能向有唯一性约束的列中插入空值。 最开始,这看上去也许不是很容易回答的问题。但它却是非常容易去试验的!只需要创建一个简单 的表。在其中的一列,假如唯一性约束。尝试着在该列插入一个空值。有效么?你应该能够非常容 易的回答出这个问题了。那么,为什么要创建这些案例呢?一个原因是这样做可以提高你解决问题 的能力。创建这些案例需要的技能就是解决问题用到的技能。解决问题的技能将会对你的DBA事业有 很大的帮助。另一个原因是随着你的事业的发展,你将经常需要创建更复杂的测试案例以便保证数 据库和应用程序的成功。在将来,甚至简单的测试案例也可以组成更复杂的数据库和应用程序分解 。 步骤#6: 找一个良师 –一个良师能够为你的DBA生涯(或者其它类似的职业)引领方向。他们能够 给你指示,回答问题以及在你的DBA的成长过程中帮助你节约一些时间。但愿这篇文章能够在你事业 发展的一段时间内起到良师益友的作用。假如你与一名资深的DBA共同工作,那么那个人应该有责任 为你的事业进行有益的指导。你也可以同时选择其他的人指导你。 步骤#7: 参加本地用户群 –许多跨国家的城市有本地用户群,他们定期聚会讨论数据库相关的话题 。假如可能,参加其中一个本地用户群。这将给你一个与他人相互交流的很好的方法。 我如何能够从一名DBA初学者变为一个具有中级水平的DBA? 你已经成为DBA一段时间了,你现在希望你的技术水平提高一阶么?下一步该怎么做?首先,往回看 前面的部分,确认你已经完成了所有的步骤。彻底理解SQL语言是十分重要的。理解关系型数据库理 论和掌握基本的数据库管理任务也是非常重要的。到如今,你应该阅读文档和其他书籍到已经郁闷 了。假如没有,那么你还没准备好继续深造,增长你的DBA的技术水平。假如你已经准备好继续了, 我已为你的继续深造准备了一些方法。 步骤#1: 学习操作系统和你的服务器硬件 – 正如我前面所说,数据库存在于操作系统和服务器硬 件之上。理解这些组成部分如何工作是很必要的。你应该知道如何与特殊的操作系统相合。你如何 删除或者编辑文件?假如你的操作系统是Unix,你应该掌握命令行以及Unix命令如何辅助你工作。 对于运行在Windows或其他操作系统上而言也是一样的。你同时需要对服务器的硬件有一定的了解。 物理内存和虚拟内存有什么区别?RAID是什么以及不同的级别是如何产生影响的?为什么数据库喜 欢更多的物理硬盘而非一个大硬盘卷?你需要知道这些事情以便你能够容易的与系统管理员进行如 何配置好你的服务器以便使它能够充分的支持数据库方面的交谈。 步骤#2: 学习应用程序设计因为它与数据库相关 – 如前面所述,数据库存在于操作系统与数据库 应用程序之间。你真的需要这两者。SQL语言是如何帮助创建好的应用程序的?绑定变量是什么并且 为什么他们很重要?Tom Kyte 写了一本非常好的书,在Oracle应用程序设计上给出了很好的建议。 他的Expert One-on-one Oracle书可在 Wrox Press找到。我强烈推荐阅读此书。他详细的叙述了那 些能够生成和破坏Oracle应用程序的东西。你需要知道这些,因为你的应用程序开发人员希望从你 这里得到指导和数据库知识。学习任何与应用程序设计有关的知识。也许参加一个关于软件工程, 操作系统或数据结构的课程班会有好处。 步骤#4: 取得认证 – 也许你的工作并不需要,但是取得认证一定对你有益。作为DBA的每一天里, 你学到了许多新的和令人激动的事情。也许在你职业生涯的这段时间里,有几天你没学到任何新的 东西。但你仍然有很多要学习。成为一名OCP(Oracle Certified Professional) DBA要求你必须 已经学到了数据库管理所有方面的基础。我发现在OCP考试的学习过程中,我学到了在我工作中从未 接触过的东西。一次我学到了我从未碰到过的一个特殊课题,在后来的日子里我就能够使用那个知 识解决问题。假如我从为在OCP考试中学倒它,那么我永远也不会用那种特殊的方法去解决问题。这 已经一次次的发生在我的面前。有的人可能会说认证实际上真的不值得。我要说它只会对你有益无 害。所以,去取得认证吧! 步骤#5: 获得一个资源库 – 在前面的部分中,我指出每个DBA都应该在Technet上有个账号。这是 你其中一个主要资源。但是同时还有许多其他资源。很多人共享他们的Oracle知识。假如你还没有 开始,你应该用网络浏览器去搜索并收集很多Oracle资源。愿意的话,你可以从访问我的网站 (http://www.peasland.net)开始。下面是一些Oracle DBA必须了解得网站列表: 还有许多其它的好网站。 步骤#6: 开始在不同的新闻组和论坛上交流 – 也许你已经发现了他们,但假如现在你还没有那么 是时候去开始了。有许多的新闻组和论坛可以回答你的任何Oracle问题。在Oracle群落里还有许多 高手愿意和你共享他们的知识。你所要做的就是提问。下面是一个列表包含了可以开始交流的最好 的因特网团体: ü Usenet newsgroups – comp.databases.oracle.server 和 comp.databases.oracle.misc 是两 个可以交流的非常著名的世界性的新闻组。他们拥有大量的针对Oracle问题的交流卷宗。观看这些 组的最好的方法式使用新闻广播员。但是假如你想通过基于web的方式访问,也可以通过Google搜索 引擎搜索它。 (http://groups.google.com/groups?hl=...atabases.oracle) Pipelines。现在,Quest购买了RevealNet 并且拥有Pipelines 。因为Pipelines是中等的,所以这 些是我最喜欢的。你可以在这里找到Pipelines (http://www.quest-pipelines.com/index.asp)。 观察别人是如何经历考验和磨难的是一件好事。假如你有问题,可以自由的在群里提出来。假如你 要提出问题,通常应该包括一些信息,比如你的Oracle版本和Oracle运行的平台。这些将会得到有 很大的差别的答案。假如你忘记了,会有人提醒你!甚至你不用提问也可以从其他人的答案中学到 许多知识。我已经记不得多少次我之所以能够解决问题完全是因为我记得其他人在新闻组里问过相 同的问题。 我如何从一名具有中级水平的DBA转变为一名高级DBA? 好,作为DBA你已经坚持不懈的努力了很长时间。你感到自己已经准备好往前再走一步。成为一名高 级DBA需要什么?下面的部分将帮助你走下去。 步骤#1: 阅读所有的文档 – Oracle文档通常并不是很容易阅读的。无数次,你翻阅文档只是为了 要弄清整件事情。假如文档是最好的东西,那么那些站在你的书架里的Oracle书籍就不会有市场。 但是文档确实包含了一些无法在任何其他地方找到的信息。例如,你无法找到每一个专门的 INIT.ORA参数或V$视图的详细说明。书本上也许会涉及一部分,但是Oracle文档却包含它们所有。 我遇到过一个非常厉害的高级DBA,他没有从头至尾的阅读过Oracle文档。这不是偶然的。Oracle文 档是必须阅读的。也许到现在为止你已经读过Oracle概念指导十二遍了。但是当Oracle 10i发布了 ,你还要再次阅读。任何有关10i的新概念将在文档里记录。假如你真的想更上一层,那么,去阅读 那些文档。不要逃避它。 步骤#2: 成为一名专家 – Oracle数据库是一个非常复杂的东西。为了更上一层,你必须精通产品 的许多组成部分。以备份与恢复开始。成为一名备份与恢复的专家。故意的破坏数据库然后察看如 何恢复它。尝试以任何可能的方式破坏数据库然后查看还有没有可能恢复。你将彻底的理解备份与 恢复的概念。在你成为了备份与恢复的专家以后,再去成为其他领域的专家。你会有无穷无尽的题 目要去掌握。在你整个职业生涯中都保持如此。但是请记住,无论你有多么专业,在某些领域,某 些人会在某些方面知道的比你多。不要带个人情绪。只是尽可能多的从那个人那里学到知识。 Route #3: 积极参加新闻组,论坛和用户组 – 在前面,我提过为什么不同的新闻组和论坛是学习 新知识的很好的地方。现在轮到你进行下一步并且去回答任何你能够回答的问题。你将会惊讶于在 这过程中你能学到那么多! Route #4: 写白皮书并且展示它们 – 这与前面提到的方法类似。首先,共享你拥有的知识是很重 要的。假如你的职业生涯已经走到这一步,那么从某种意义上讲,是离不开他人的贡献的。所以, 现在是你为他人奉献的时候了。第二,当你企图共享你的信息的时候会有令人惊异的事情发生。在 你要用清楚的,简练的语言表述问题以便其他人能够使用时,那些信息在你的头脑里经过了一个令 人瞠目的过程。这个过程使你巩固了知识,这是无法通过其它方法进行的。所以在白皮书中共享那 些信息,讨论会,以及新闻组和论坛都是你学习和使你的能力更上一层的非常好的方法。顺着这条 路,你应该作两件事。第一,认识到你将会犯错误。其他人将会很高兴的指出那些错误,有时在某 种意义上那并不是很好。不要企图掩藏你的错误。承认它们并从它们那里学习。第二,学会说你不 知道答案而不是企图以欺骗的方式通过。人们早晚会知道你在企图蒙蔽他们。简单的告诉他们现在 你对答案并不肯定,但你会在查到答案后回来告诉他们。假如你时刻谨记这两件事,你就不会违背 你的诚实而且你将成长为一名职业的IT人。 步骤#5: 成为解决Oracle问题的专家– 高级DBA通常都是被看作是解决复杂的Oracle问题的人。你 将会用到你所有的技术来解决许多问题,这些技术都是你的职业生涯中积累下来的。我前面提到的 任何事都将会在解决问题的过程中用到;文档,书籍,新闻组,测试案例,和其它DBA都将辅助你解 决问题。 步骤#6: 成为性能调优的专家– 高级DBA通常都是被看作是调整数据库和应用程序性能的人。假如 你是高级DBA但是你却不能分析性能瓶颈,那么你的公司将会到别处寻找这些服务。 步骤#7: 成为承载能力计划的专家– 高级DBA通常都是被看作是根据数据增长量和交易增长来计划 数据库承载能力的人。高级DBA需要在影响应用程序性能以前发现系统瓶颈。例如,DBA应该知道在 数据库将可用的磁盘空间用完以前预置更多的磁盘空间。不密切关注承载能力计划将会导致生产数 据库宕机。 步骤#8: 密切关注新的技术– 高级DBA应该对IT界的关数据库技术的未来有好的建议。有什么可用 的技术可以帮助数据库?例如,学习存储领域网的优缺点以及如何把它们应用到数据库系统。有什 么技术在不远的将来可以用,哪些能够帮助我们?例如,写这篇文章的时候,linux操作系统正在变 得越来越流行。Lunix会给你的数据库操作系统平台带来些什么?它能为你的公司工作么? DBA的薪资 有很多因素影响到你作为DBA的薪资: 你的经验和能力所决定的DBA等级 你所熟悉的数据库系统 你的个性特点和潜力 |
DBA等级数据库系统 | 初级DBA年薪(万元) | 中级DBA年薪(万元) | 高级DBA年薪(万元) |
Oracle | 4 | 8 | 11 |
Microsoft SQL Server | 3 | 5 | 8 |
IBM DB2 | 4 | 8 | 10 |
Sybase | 3.5 | 6 | 8 |
Informix | 4 | 7 | 10 |