DBA职业生涯规划指南

DBA是Database Administrator的简称,即我们常说的数据库管理员。在数据信息呈爆炸式增长的今天,DBA的角色已经发生了重大的转变。各种维护计划、数据备份以及安全存储等工作都已经成为了DBA们的家常便饭,可以说一名DBA应该是IT部门的全能选手。那么要成为一名DBA,你需要具备哪些素质?DBA的薪酬待遇如何?DBA的职业道路究竟可以走向何方?我们将在本次的技术手册中为您一一解答。
DBA 从零开始

对于大多数DBA来说目前市场的需求不是通往全新的、高薪工作的免费门票。拥有高级证书并不就意味着你要做的事情就是提交简历、等待上岗。你还需要遵循基本原则。换句话说就是,你需要回归根本,从零开始并且努力获得这些基础知识。

 DBA面试:回归根本(一)

 DBA面试:回归根本(二)

 DBA 超越根本之硬性实力

 DBA 超越根本之软性实力

 Oracle认证的作用(一)

 Oracle认证的作用(二)

 Oracle认证的作用(三)

DBA 知识技能储备

分析师和专家表示未来DBA角色不会再局限于传统概念的管理(备份、调优、空间管理、打补丁等等),他们会更加注重专业领域(法规遵从、应用软件、商务智能、高可用

性、虚拟化等等)。如果你想成为一名成功的DBA,你需要不断地学习,增加自身的知识技能储备。

 五个DBA最佳实践(上)

 五个DBA最佳实践(下)

 SQL Server DBA需要熟知的SAN基础(一)

 SQL Server DBA需要熟知的SAN基础(二)

 Oracle数据仓储DBA的MetaBase脚本

 分布式DBA:掌握SQL存储过程(一)

 分布式DBA:掌握SQL存储过程(二)

DBA 职业道路分析

当大多数数据库专家在谈及其职业生涯时,听到最多的莫过于“究竟有多大的上升空间?”就像IT人士经常会面对没有一条清晰职业道路的问题一样,DBA在经历各种基础工作之后,也会遇到职业生涯的瓶颈,本部分将对这一问题进行分析。

 DBA职业道路可以转向商务智能

 Oracle DBA工资持续上涨

DBA面试:回归根本(一)

你可能觉得很奇怪,许多DBA和大部分与IT职位相关的职位都会有很高的要求。这就好像他们生活在网络时代里。现在是人才缺乏的时代。我们说的“人才缺乏”是由很多因素造成的,包括后来的生育节制和后来IT领域里拥有大学学历人才的减少。市场迅速由对雇主需求转为了对雇员的需求扩大。但是我们先不要高兴。

对于大多数DBA来说这些市场条件是当然给他们带来了福音,但是它也不是通往全新的、高薪工作的免费门票。拥有高级证书并不就意味着你要做的事情就是提交简历、等待上岗。你还需要遵循基本原则。换句话说就是,你需要回归根本并且努力获得这些基础知识。

回归根本

在我20多年的与数据库相关职业生涯中,我聘用和管理过50多位DBA,面试或评审过至少几千份应聘者的简历。老实说,每次面试都会使我大吃一惊。但是,我注意到很多的确和我相关的东西。应聘者除了将他们自己“卖”给一份好工作外,IT人员今天还有了权利意识——即“比起我需要你,你更加需要我”这样的一种心理。市场状况使DBA从自信转变成自傲。首先我在这里提醒你,这样的态度只会让你自己身陷泥潭!

本篇文章主要是回顾一下面是过程以及我(我相信大部分的主管们也同样)如何挑选候选人的。我希望这篇文章能提醒大家:你们应该为一些值得的事情(包括好工作)而付出。

接下来我将详细解释我是怎样挑选候选人的。

简历

大部分工作地点都会说对你的第一印象很重要。当一个应聘职位随便就能收到上千份简历时,我们就需要删掉一些申请人,可能确实有这种事情发生。但是现在,一个Oracle或SQL DBA的职位就只有几份真正合格的简历,当然我们就不能像以前那样期望值那么高。但第一步我们仍然要认真考虑。

书写简历的网站有几百个(或许甚至有几千个)免费模板。我的建议很简单:利用它们!这样你的简历就没有理由不丰富了。你的简历是你自己给别人的第一印象,所以要认真做好简历。

我会查看简历中的以下几点:

 求职信——这一点依然很有必要!它表明了你为什么对这份工作感兴趣、为什么你觉得自己适合这份工作。求职信还能够从你的简历中传达出你的自信程度。不

要用适合所有工作那个模版:你的求职信要专门针对你要应聘的这项工作。可

能你还要做一些这方面的家庭作业。

 言简意赅——你可以只用一页来表达的意思就不要用10页来写过去20年来所发生的每一件小事,那是最糟糕的情况。你只要侧重过去三年所作的工作或者和你

申请的职位最相关的工作就可以了。一定要在简历的第一页前半页进行总结。

如果你不能迅速引起招聘人员的兴趣往下阅读,通常他们不会去阅读没有什么

意义的其他部分了。

 可读性——你所写的简历格式要清晰,除非指定你用不成文的格式书写。用MS Word(这是行业标准)会更好,还包括了一些 HTML或者.pdf的版本会更加安

全。字体不要太怪异。为了安全起见,你可以用10点或更高的Arial或Roman

字体。底线就是:如果我看不清楚,我就不会看!任何招聘人员都不会看的!  精确性——拼写和语法也很重要。如果有这些错误的话,当然没有理由解释的。记住,我们希望DBA非常专业,他们可以通过写来交流。不要依靠别人检查你的

拼写错误,单词和语法的拼写都要正确。为了安全起见,你可以可以让一些你

信任的人校对你的简历。往往别人可能会找出你忽视的那些错误。

行程安排和电话道歉

我对今天很多人在改变行程安排面试时十分缺乏灵活性感到非常不解。面试官牺牲他/她的个人时间安排你面试而你却因为那天要做有氧健身拒绝了,你这样做是给面试官传达了一个怎样的信息?你传达的信息就是你的私人生活比这份工作或这个公司更加重要、你不会灵活处理并且不领情就足以说明你不是真的很在乎这份工作。难道有氧健身真的比你的事业更加重要?

除了灵活性,你还要有热情、有礼貌并且对任何一个在面试过程中的人都非常有谦卑,我是说每一个人!我常常会让一些候选人离开,他们要么只是暂时有礼貌,要么对我的行政助理或招聘人员无礼。

(作者:Michael J. Hillenbrand 译者:April 来源:TT中国)

DBA面试:回归根本(二)

初试

在我的印象中,没有比第一印象更重要的事情了。有很多事情都会干扰面试,但是我建议你采用以下几个基本步骤:

*准时到!这看起来很容易,但这也是我让候选人离开的第一个理由。建议你实现计划,至少在前一天就应该知道你第二天要去哪里、知道交通和停车场情况、通过安检、上电梯要多长时间等等。要相近千方百计、也要作好最坏的打算。

*提前打电话!如果你可能会迟到,你至少要非常礼貌地打电话提前道歉并且让面试官知道。我的原则就是:迟到5分钟就等于丧失了面试资格。尊重他人的时间是最起码的商务礼节。

*准备和练习。了解该职位和招聘主管要找的是什么样的人、你要和谁面试等等。如果你能够预料到他们要提的问题并且提前进行回答练习。你就有很大的优势。同样,一些中职位注重你一般你可以预料到的问题,这些问题包括:

1、介绍你的实力

2、介绍你的弱点(通常很难说)。

3、谈谈你成功的一段时间

4、谈谈你失败的那段时间。你学到了什么?

5、你为什么辞掉现在的工作?

*不要说坏话!不要参说你现在或以前公司、老板或同事的坏话。那样做就表示你以后可能会对其他的工作不满。戴尔.卡耐基说过:“愚人才会去责备、谴责甚至抱怨——这是大部分愚人做的事情。”请不要成为愚蠢的人!

*调查这个公司!了解这个公司具体是做什么的,并且准备提一些比较好的问题,也就是提一些在该公司的网页上找不到答案的问题。你所提的问题可以围绕该公司的文化。

不管你信不信,50%的应聘者在面试的时候都不知道我的公司是干什么的。不了解公司就表示你过于自信甚至是傲慢,那我肯定不会对你再作进一步的考虑的。

*充满自信!不要低估你的能力。如果你不知道一些事情的答案,那就要敢于承认。侧重寻找答案的能力和学习热情。

*不要自负!的确,你过于自信可以被人们看作是骄傲、轻率、甚至是粗鲁。最恰当的做法就是注重将团队的成功与个人的成功同时看重。

*不要很早就开始谈工资。在讨论工作和职位之前先让人们看到你的价值。如果你可以避免很早进行这方面的讨论,那就在你向人们证实你的价值之前不要谈工资。我通常在确定人选之后再谈工资。

最忌说的10句话

我最近在面试的时候听说过这样10件事,它们肯定会让你的面试效果大打折扣。这些话的确都是些候选人说出来的:

1、“因为安排了假期,所以我不能再工作5周。”

2、“我不是十分需要工作,我只是看看是不是在我目前的公司之外还有更好的地方。”

3、“我们能够私底下谈吗?因为我还要去参加另外一个面试。”

4、“我不能那是不能够参加电话面试。因为我要出去吃饭、洗澡、看电视、上床睡觉。”

5、“你今天必须选择我,因为有很多公司都对我感兴趣。”

6、“我讨厌和我一起工作的人,他们简直是一群白痴!”

7、“我没有必要再告诉你,你应该知道为什么我最适合这份工作。”

8、“我真的不想再接打电话或在业余时间工作,它严重干扰了我的个人时间。”

9、“你能告诉我你的公司是做什么的吗?”

10、“我上过SQL调优的课程,但是却弄不明白。”

后续行为

后续行为能够促成或破坏整体效果,但是也往往是在面试过程中最容易被忽视的。让我们看看一个典型场景。我面试的三个应聘者实力都很强。就在我确定应该聘用谁的时候,

我却收到了一封其中一位应聘者A发过来的感谢信。她感谢我抽出时间,说她喜欢和我交谈、还重复了我们谈论的一些事情,告诉我为什么她适合做那份工作、并说明她有自信为我的公司增加价值。我还收到了应聘者B录制好的“感谢你抽出时间”的信,但是我却没有收到应聘者C的任何东西。你认为我应该聘用谁呢?要是你,你会聘用谁呢? 结论

总之,如果你想找到下一个梦想的工作,你就必须再温故并掌握面试的基本原理。你还要记住在整个过程中要礼貌、自信、谦恭和专业。

老板都想求职者能够为工作投入热情。你可能做的最坏的事情就是公司需要你,或你的确很适合这份工作,但是你所做的就是投简历,让别人来找到你。当然,你可能会找到一份这样的工作,但可能好工作不止一个。在这之外还有很多很好的工作,但是我们要选择最好的。遵循上面的原则吧,不要错过你的绝好机会!

(作者:Michael J. Hillenbrand 译者:April 来源:TT中国)

DBA 超越根本之硬性实力

在我这一系列文章的第一篇《DBA面试:回归根本》中,我侧重介绍了一些DBA怎样才能找到一份好工作的细节。本篇技巧主要是介绍在找到工作之后应该做些什么事情。 DBA常面临不断减少IT成本的压力,他们再也支付不了成本费用。所以他们必须努力使公司承认他们的价值。本篇文章侧重的就是作为一名DBA你需要证明的在技术(硬性)和非技术(软性)实力。我会介绍一些在不断增加价值的同时进行管理并保证工作安全的技巧。所以你要做好准备跳出传统DBA角色的范围,跳出基本数据库管理任务的范围证明你自己是无价的企业资产。

硬性(技术)实力

分析师和专家表示未来DBA角色不会再局限于传统概念的管理(备份、调优、空间管理、打补丁等等),他们会更加注重专业领域(法规遵从、应用软件、商务智能、高可用性、虚拟化等等)。如果你想成为一名成功的DBA,你还要超越这些管理基础,努力学习一个或多个专业领域。

不断发展的关系型数据库技术将影响你成为一名成功的DBA的技术实力。改变数据库管理,现在主要有两种主要趋势。

1、增加功能性:软件功能性(通常还有复杂性)通过每个新版本体现出来。DBA不断面临着学习软件的多种新特征和新技术的挑战。他们要作好迎接这些变化和学习新知识的准备。

2、增加自动操作:传统意义上的DBA简单重复此性的工作也由于数据库厂商不断尝试创建并销售“自我管理”或“自我修复”数据库,而使其成为了自动化的工作。Toolset(如Oracle的OEM)就非常具有健壮性,新特性如自我管理表空间、undo segments、自动备份等等使得物理数据库管理变得更加自动。

自动化是不是就意味着所有的DBA都应该寻找新的职业呢?显然不是!但是自动化和功能性可能会使DBA从他/她舒适的环境中走出来,不断发展的技术会确保他们在可预知

的未来找到一份好工作。不要担心新特性,你只要去迎接它们!技术进步通常会很复杂、很难把握(正如10g RAC),但又更加依赖于高技术水平的DBA。

由于需要高技术水平的DBA,所有的DBA都应该位于技术前端。有很多方法能够扩展你的技术知识、增加自身价值,你现在就应该开始做!当然关键就是你不要去等,那太迟了。你现在需要关注的专业领域包括:

*法规遵从管理(萨班斯法案、审计、安全等):法规遵从问题还在不断支配着公共事业,现在甚至扩展到了私营部门。审计志愿者表示这是重要的学习经验(不是说你要把它写到简历里面)。

* 最佳实践框架(IT Service Management、ITIL v3、ISO 20000等):ITIL已经是最普遍接受的框架。ITIL主要侧重IT服务传输和支持,包括帮助桌面、事件管理(incident management)、变动管理(change management)、问题管理(problem management)和服务级别管理。所有这些和DBA相关的领域都应该接触。如果你还没有听说过ITIL,我相信你不久就会了解到。通过事先研究ITIL(在这之外还有大量信息)、阅读资料并最终获得 ITIL基础认证(或其他更好的可以在简历上填写的东西)。

*ERP应用技能(Oracle, PeopleSoft, SAP, JD Edwards等):如果你公司使用的是ERP包,你就可以对它充分进行利用并且学习。你可能并没有想过要成为一名专家(如会计),但是你必须了解软件的支持,从技术的角度你也应该清楚一点。

*数据管理(数据建模、架构、数据挖掘、维系策略、调整等):公司数据数量一直在随着业务的发展而不断增长。对于DBA来说是一件大事。如果你能够做到的话,你可以参与公司任意发展或相关数据策略中去。

*硬件和存储(特大容量磁盘、存储区域网(SAN)网格计算、虚拟化等):你要一直处于硬件和存储新技术的前端。SAN现在可能是大事,但是行业内部已经在开始谈起了虚拟数据库的未来。

*另一件大事:我写到这些的时候,可能已经有一些新技术或者发展潮流已经出现了。使自己处于技术前端的关键就是阅读!不要让那些还没有阅读自由贸易杂志占满了你的书桌。尽量利用你的空余时间在网上搜索一些白皮书、技巧、文章、博客等。你可以从多个站点开始搜索,,但可能你只接触到了其中的一个。记住,成功的秘密就是知道人们要到的地方,并且首先到达。

(作者:Michael J. Hillenbrand 译者:April 来源:TT中国)

DBA 超越根本之软性实力

软性(非技术)实力

软技能对于未来的DBA来说也非常重要。下面是你要成为一个成功的DBA所需要的一些软技能:

 沟通能力:许多人都强调沟通的重要性,包括口语和书面的,这确实是应该这样。作为一个DBA,人们认为你做的任何事、你说的任何话和你写的任何东西都是专

业的。虽然基本的沟通能力是必须的,但你还要能够以易懂的外行的词汇来解

释难理解的技术概念。这需要几年的实践和努力,并且很少有DBA(包括我自己)

完全掌握了这一技能。

 解决问题的能力:就像大多数DBA会告诉你的,在终端用户的眼里,大多数问题都源于“数据库”问题。一直认为是数据库的问题,直到被证明是无关的。DBA必

须有能力深入技术问题,这些技术问题10次有9次是和应用代码、网络、Web

服务器、硬件或操作系统相关的。对于每一个问题来说,根本原因分析、纠正

错误和预防是要关注的关键方面。

 压力管理:如果24 x7被呼叫的压力还不够的话,那再加上你还必须经常处理不可理喻和生气的客户和/或用户。你要采取减压措施并记住绝不能受别人影响。你

必须在任何时候都要保持专业、沉着和冷静,不管在什么情况下。

 人际交际能力:聆听你的客户和终端用户,确保你理解了他们的问题,向他们传达你理解了他们的意思,迅速的处理他们的问题,最重要的是,使他们觉得你真

的关心他们。在你与别人的交互中保持专业和礼貌,不管情况看起来多么困难。  时间管理:一个DBA绝对要能够同时处理多个任务。在任何一天,一个DBA都会被指派去做几个优先的项目,处理几个问题呼叫电话、协助开发、计划一个升级、研究新的技术,并还要找出时间对数据库做预防维护。

同管理层打交道

如果你很幸运的有一个理解你做什么的上司或经理,那么你一定是被保佑的了。然而,大多数DBA们会抱怨他们的上司或经理不理解,使得他们感觉被低估了,甚至是不被赏识的。

“技术由两种人控制:那些管理他们不理解的东西的人和那些理解他们不管理的东西的人。”——Mike Trout

我自己有强大的数据库背景并在超过15年的时间里管理了几十位DBA,现在,我可以权威地说——如果你觉得你的经理不理解你,你不需要看得多远,只需要通过一面镜子看看你自己有什么需要责备的。换句话说,如果你的经理不理解你或你的角色的重要性,那么你(并且只有你)需要改变这一情况。你上一次真正的和你的上司沟通是在什么时候?你是否每星期或甚至每天向你的上司提供状态报告?你是否以易懂的词语来解释复杂的术语?你是否提供了图表和图片来展示数据库执行的怎么样?你能技巧的谈论停机或较差的性能对财务和业务的影响吗?

我的简单的建议是停止抱怨你的上司不赏识你,开始负责地改变你的状况。这有一些提示应该可以帮助你。

1. 以业务术语沟通

为了成功的作为一个DBA来进行管理你必须能够用大多数管理层人员能理解的词语来解释难理解的概念。也就是说,你必须能够用业务术语来讲技术术语。所有的管理层人员和主管都关心预算和公司财务的盈利底线。你在公司的职位做到越高,你就越会发现公司的财务状况会直接的影响到主管的个人财务状况。那么谈谈会击中他们痛处的事情!你可以通过以财务术语简单的传达你的技术成就或辩解来利用这一事实。下表列出了一些例子,是典型状况的描述和被修改以用于上层管理人员的同一描述。

2.了解和学习业务

为了提供像上面所述的价值描述或业务案例,你必须真正的了解业务和你提供的服务对财务的影响。正如你期待你的经理理解那关系到你的技术一样,所以反过来你的经理期待你理解业务。通过展示对业务和盈利底线的兴趣,你会很快的得到你的经理对你的尊重。以对经理来说很重要的术语来讲话,经理就会很快认识到你给公司增加的价值。

3.提供数据支持你的描述

当遇到技术或财务请求时,大多数的经理的态度是“向我展示”。这不是因为他们要有确实的证据才相信,而是因为抱持怀疑和好奇的态度是他们的工作。为了向管理层展示你所做的和你要做的所带来的好处,你必须在展示你的成果之前向他们展示这个事态。只是宣称你为公司节省了数千美元、你避免了停机、或甚至是提高了整个系统的可用性这些是不够的,你必须能够证明它。虽然文档和测量数据是很重要的,但要知道大多数经理只理解图片,所以图表和图片是展示你的结论的最好方式。

4.锤炼你的演讲技能

一旦你有了数据、理解了业务影响并能够证明财务好处,那就是该向管理层演示你的业务案例的时候了。不要对这个工作掉以轻心!能够在高层,特别是主管面前从容的演示是IT行业的每一个人应该具有的一个必要的技能。如果你发现你不能从容的进行演示,我的最好的建议是准备、练习和预先排练。我也强烈的建议你参加一个课程例如Dale Carnegie或参加一个俱乐部像ToastMasters,因为这些可以提供给你宝贵的方法来克服害怕演示。

总结

最近在DBA博客里写有许多关于DBA感觉不被赏识和被误解的话。看起来许多DBA陷入了职业后悔的惯例和/或陷入了一种自怜自艾的情绪中。不要让你自己成为悔恨和痛苦的DBA!痛苦的DBA倾向于在其他人中间扩散他们的痛苦,并很快的成为IT公司的“病毒”。不要成为一个病毒,而是要保持积极主动的态度,把重点放在提高你的现状上。磨砺你的技术和软技能,扩展你的知识进入新的领域,学习怎样同管理层打交道。欢迎变化而不是抵制它。如果你遵循这里所提供的指导,并对你自己的未来负责,那么你很快就会得到回报并成为我们大多数人希望成为的无价的和受人尊敬的雇员。

说了这些,我最后留给你一句话去思考:

“维持现状不能让我们成为我们需要成为的人。”——Max Depree

(作者:Michael J. Hillenbrand 译者:April 来源:TT中国)

Oracle认证的作用(一)

靠边站。。。我是认证过的!

就在我自豪的获得了认证并把我的第一个Oracle OCP证书挂在我的小卧室的墙上之后过了两天,我的一个同事把一个Dilbert漫画挂在了它的旁边。这个Dilbert漫画是这个样子的。

在第一幅画面中Dilbert的电脑出了些问题。一个穿着紧身衣胸前写着个大写字母C的超人告诉Dilbert“远离这个服务器,我是通过认证的!”在下一个画面里,我们的超人坐在电脑前,Dilbert现在透过他的肩膀观看着,并且说着“我召唤认证的巨大力量!”在最后一幅画面中,超人意识到他不知道该怎么做并承认说,“这真令人尴尬——这是所有我从课堂上记得的东西。”

认证辩论

是否要取得认证在我的记忆里一直都是一个被广泛讨论的话题。争辩的一方是那些看到了认证的巨大价值的人,他们宣称没有其他更好的方法来度量一个候选人的技术能力。争辩的另一方是那些不认为认证有价值的人,他们认为通过记忆和做一个多选的测试而获得的一张纸不能证明或替代真正的经验和现实知识的价值。

对于我,你可能会说我处于争辩的中立位置,因为我相信两方的论点都是有些道理的。在这篇文章里,我将讨论认证过程和检查一些支持和反对认证的论点。

认证过程

首先,也是最重要的,你需要在你可以真正的衡量认证的价值之前完全了解获得一个认证的过程。

让我们首先看看Oracle DBA的认证过程。Oracle认证过程确实自从我获得第一个Oracle认证以来已经走过了很长一段路。几年前(我讨厌承认到底多少年)所有的人都得要

达到认证7.3和通过一个单独的多选测试。我在Philadelphia的IOUG会议上参加了免费的认证。对于我的努力,我获得了一个证书,一根针和一个很酷的标示宣称我为“Oracle认证专家,”或简称为OCP。我后来通过参加另一单独的升级测试升级为8i OCP。这很可能是我拥有的最后一个DBA认证,这有两个原因。一,我作为DBA的角色已经改变了,因为我进入了管理层,另外一个,Oracle使这个过程变得困难得多。

为了所有意图和目的,单独测试OCP认证的日子已经过去了。要成为OCP的过程变得非常棘手和很难达到。从Oracle 8i开始,要具有充分的资格获得一个OCP认证你需要通过包括五个测试的一系列测试。在这之后很快,Oracle决定要求你还要为了这个认证而去参加一个它所教授的DBA的课程。虽然这是具有争议性的有利于确保学生上课,但是让我们以商业的角度来看待。这个要求无非是一种营销策略,以让人们进入到他们的教室中,并且它并不很好的考虑那些想获得认证却不能从他们的公司获得资金赞助的人们。 从Oracle 9i开始,认证的选择再次改变了,而Oracle甚至更加强调它自己的课程(有利于Oracle):

OCA—— Oracle Certified Associate(Oracle认证专员)。要求通过两门测试,没有培训课程。

OCP—— Oracle Certified Professional(Oracle认证专家)。要求OCA,一个有导师指导的课程,一个考试和一个动手实践课。

OCM—— Oracle Certified Master(Oracle数据库管理大师)。要求OCP,两个高级课程,一个两天的实际操作考试和一个额外的动手实践课。虽然这可能是对能力的最好度量,但它是一个花费非常高昂的选择。

而OCA看起来对于普通的DBA是一个可行的选择,那些没有公司赞助、希望靠他们自己获得认证的人将会发现要获得一个OCP(两门课程)或OCM(共五门课程)在费用方面几乎是不能承受的。

(作者:Michael J. Hillenbrand 译者:April 来源:TT中国)

Oracle认证的作用(二)

公正对待Oracle认证

对认证的真实价值的看法真的取决于你所提问的对象。那些有证书的人通常争辩说它们是很重要的;那些没有证书的人很可能对它们嗤之以鼻。大多数的IT员工达成的共识是:认证确实有一些价值,但是他们永远不能替代对好的经验的认可。不管你是什么职位,你都应该意识到认证肯定对于某些人是重要的,因为认证行业在继续繁荣和发展。

人们用来获得认证的理由通常和他们自己对于获得投资回报的期望有关。反过来,期望将最终决定对于每一个人来说的认证的价值。如果你正在为错误的原因而进行认证,那么你注定要对最终的结果失望。根据这种说法,让我们研究一些人进行认证的原因。 “认证将帮我找到一份工作。”

有证书可能帮助你获得一个面试,但是它不一定帮你获得一份工作。招聘人员对于DBA期待两件事:核心数据库管理系统知识和实际经验。为了衡量具有的知识,一些公司和/或代理机构将利用认证来预选候选人简历,接受那些具有证书和拒绝那些没有的。其他的公司会在面对面的面试中通过对候选人提问技术问题来考查,不管他们有没有证书。 我通常向任何试图进入DBA领域的人推荐认证,因为它会经常帮你获得过去的HR(人力资源)、招聘人员并使你一只脚迈进了面试大门。如果你是一个有抱负的但没什么经验的DBA,并正在找第一份DBA工作,OCA认证无疑是个很好的第一步。我15年来一直在招聘DBA,虽然我并不把证书看作任何职位的先决条件,但是我不得不承认,如果其他所有方面都是同等的,它会给你一个超过其他没有证书的人的稍稍的优势。

但没有什么可以替代成为一个DBA所需的实际经验、解决问题和软技能,进行认证是一个很好的方式来证明你了解Oracle基础概念、愿意进一步学习和你非常重视你的事业。 “认证将会使我获得提拔。”

如果你正抱着期望能获得立即的资金回报而在进行认证,那么忘记它。获得认证只是证明你了解教材概念或可能甚至认为你只是一个很好的测试接受者。我的一些非常优秀的

DBA没有参加认证,其中一些如果他们的工作依靠它那他无法通过测试!虽然我总是支持认证,但是我从不把它看作是一个获得提拔的理由。在DBA领域工作超过了20年,我比任何人都了解一个认证永远不能替代好经验的价值,它也不能衡量一个人应用知识于真实世界的能力。

现实情况是有一些公司更注重认证。一些可能利用激励来促进认证,有的可能甚至要求认证。如果你提供服务给一个客户(如咨询或远程DBA服务),那么那个客户如果知道你获得了关于你支持的技术的认证,他可能会感觉更舒服。

“认证使我比你强!”

这是一个人可能很容易接受的最坏的想法,并且可能是争辩反对认证的最大的理由。我曾经知道一个DBA四处向她的同事炫耀她的Oracle数据库管理大师认证。在当时,Oracle管理大师无非是证明了你参加了这么多课程,甚至并不涉及通过任何测试。因为这个人没有什么经验并且不知道怎样在真实的世界中管理数据库,她的炫耀并没有获得她的同事的赞赏,并最终导致她被公司辞退了。

不要骄傲于通过认证而从不想想你比别人好只是因为你拥有一个纸制证书。有证书很好,但是它们并不等同于衡量你的能力或在公司里的重要程度。

“认证使我获得自我满意度!”

这可能是获得认证的最好理由了。如果你通过认证获得了成就感和自信并打算更新你的知识或继续保持世界一流的最新的技术,那么通过各种方法来达到这个目的。重要的事情是为正确的理由去进行认证。我不得不承认我将第一个OCP证书挂在我的卧室的墙上很长一段时间,并没有在同事面前炫耀它,而是要提醒我自己我获得了它并且为我的成就而自豪。我知道我有经验和能力来应用我的知识,所以我并不真的介意上面所说的就挂在我的证书下方的Dilbert漫画。

(作者:Michael J. Hillenbrand 译者:April 来源:TT中国)

Oracle认证的作用(三)

认证的未来

许多人认为认证现在和将来都只是简历上的一个填充物罢了。事实是,无论喜欢与否,认证现在和将来都继续在IT行业发挥重要的作用。衡量认证的真实价值的一个关键因素是了解获得认证的过程。越难获得的东西,它最终就越有意义。如果获得认证就像学习技巧列表一样简单,并且只通过一个多选的测试,那它肯定会失去一些期望的价值的。 只通过一个多选测试永远不会很好的显示一个人在履行一个复杂的IT(DBA)职责时的能力。认证需要更加关注于实际动手能力和真实世界的应用,不仅仅是书本概念和语法记忆。为此,我个人呼吁业界要清醒意识,使认证过程成为一个真正的衡量知识和能力的手段。以考取驾照的过程为例,使这一过程包括两部分:1)测试候选人的基础知识和书本概念,和2)要求一个实际动手测试来确保其运用这些知识的能力。

我真的相信,认证行业将继续放展,并很有希望更加强调实际操作、动手应用,而不是进行测试或甚至是参加课程。RedHat和其他公司已经推出了实际操作测试,我相信其他公司也会跟着做的。因此,对于IT和技术职位的认证的认可也会增加的。美国大企业对遵从性检查(Sarbanes Oxley、HIPPA、ITIL等等)的关注也很可能会对认证的价值和随之而来的行业发展发挥关键作用。

最后的思考

如果你没有经验并想进入一个艰难的IT领域,例如数据库管理,那么获得一个认证,通过学习、研究和通过一个测试证明你至少足够关心这个职业选择。如果你有经验,参加一个认证测试并强迫你自己学习新事物和保持最新的技术。最后,如果你发现自己是一个招聘角色,决不要把认证作为衡量一个候选人能力的唯一方法,而是要作为他们的学习的期望和能力的一种显示。取而代之的,找出他们怎样应用他们的知识来解决问题。

不管你在IT行业的角色是什么,对于你来说留意行业动向和认证过程都是很关键的,因为这两个因素将最终决定未来的认证价值。

(作者:Michael J. Hillenbrand 译者:April 来源:TT中国)

五个DBA最佳实践(上)

在我看来,最佳实践之所以成为最佳实践,必须具备以下两点:1)可以判断为什么有优势;2)可以灵活应对多种情况。下面5个最佳实践是我多年从事大大小小的Oracle系统工作总结出来的精华。

#1:使用多个Oracle主目录

我最喜欢的最佳实践是关于使用多个Oracle主目录的经验。下面就是使用多个

Oracle主目录的具体做法。在安装一个或多个Oracle补丁包时,我不推荐直接更新到当前工作的Oracle主目录。相反,我建议创建新的Oracle主目录,然后把补丁安装到新的主目录。

比如:我创建的第一个Oracle主目录在“/app/oracle/db_1”。当有新的Oracle补丁需要安装时,我就在目录“/app/oracle/db_2”重新安装整个Oracle软件,然后在新安装的Oracle主目录中更新补丁。在安装Oracle软件和补丁的过程中,原数据库一直处于已启动的状态,因为当前安装和更新都跟“db_1”目录没关系。当更新停止的窗口出现(更新完成)时,我需要做的全部内容就是:停止当前运行的Oracle服务;把Oracle主目录改为“db_2”,然后再启动数据库。如果在此过程中出现了问题,我可以把Oracle主目录再改回原来的目录“db_1”。

下面是传统方式更新补丁的方法:

 关闭当前数据库

 给当前Oracle主目录安装补丁

 启动数据库

 如果出现问题,执行以下步骤:

 关闭数据库

 回滚刚刚安装的补丁

 启动数据库

第二步到第六步可能需要长达三小时的时间(取决于补丁的数量和大小)。在此期间,数据库一直处于停止状态。

下面是采用最佳实践更新补丁的新方法:

 在新的Oracle主目录安装Oracle软件

 给新安装的Oracle主目录安装补丁

 关闭原有数据库

 把Oracle主目录修改为新安装的路径

 启动数据库

 如果出现问题,执行以下步骤:

 关闭新安装的数据库

 把Oracle主目录修改为原来的旧路径

 启动原有数据库

(作者:Arup Nanda 译者:冯昀晖 来源:TT中国)

五个DBA最佳实践(下)

采用新方法,数据库只需要在第四步到第八步之间停止,最多需要停止几分钟,而不是几小时。

新方法的优势有:

 极大地减少了数据库停止状态的时间,大概是旧方法所需时间的六十分之一。  极大地降低了更新风险。出现问题时,新方法不需要回滚补丁,只需要通过设置主目录切换回安装前的版本即可。

 你可以对两个主目录执行“diff”功能查看它们直接的变化和区别,也可以查看多个(两个以上)主目录之间的区别。

 你可以在同一台服务器上安装多个数据库,然后选择任意一个运行。

 你可以看到多个Oracle主目录,这些主目录显示了你每次应用补丁的详细清单。 采用新方法唯一的副作用是需要多占用一些磁盘空间——你需要满足两个Oracle主目录的存储空间。但是考虑到一般的Oracle主目录占用空间不超过4GB,所以对存储空间这方面的影响问题不大。

#2: 设置audit trail(审计跟踪)= DB

在数据库创建过程中,给Oracle初始化参数文件中添加参数“AUDIT_TRAIL = DB”,可以设置数据库开启审计功能。设置这个参数并不意味着审计功能已经开始执行了,必须对对象明确调用AUDIT命令才行。但是要使AUDIT命令有效,该参数必须被设置为某个值,因为默认值是FALSE。对于非动态参数,数据库必须快速改变AUDIT_TRAIL的值。即便你从来没打算审计什么,但是要保存问题内容,避免不明原因的停机,就把这个值设置为DB。它并不会破坏什么,但在出问题时,你可以随时执行审计。

#3:文件名不要使用“.log”后缀

不要给redo log文件名使用“.log”后缀。有人可能会想当然地认为所有“.log”后缀都是多余的日志文件,就运行脚本删除所有log后缀文件。这会导致数据库联机redo log文件丢失,强迫执行数据库恢复。你可以用后缀“redo”或“rdo”来代替“.log”。 #4:预操作RMAN恢复

通过RMAN恢复的预操作功能,我们不需要执行真正的恢复操作,就可以检查将来在正式恢复操作时需要使用的所有备份文件是否有效。这可以排除在真正执行恢复时由于丢失文件发生的异常事件。

#5:给运行在同一台数据库服务器上的客户端创建新的Oracle用户

Oracle数据库服务器软件也包含有客户端的功能,你可以在同一台服务器上用客户端连接数据库。但是按照最佳实践,我们不对Oracle软件使用同一个用户,而使用另外新创建的用户。例如:如果你安装Oracle软件时使用的用户是“Oracle”,那就创建一个叫“oraapp”的用户,并用这个用户安装只含客户端的软件。用户“oraapp”不应该拥有dba权限或者属于oinstall权限组,所以该用户不能以sysdba的权限登录数据库。创建一个新的权限组叫“appgrp”,把用户“oraapp”分配到这个组。所有应用程序使用的用户都应该属于“appgrp”组。这样,这些用户可以在sqlplus,sqlldr或其他在server上可以执行的工具中使用,但是不能以sysdba权限登录连接。

一般的做法是让客户端软件使用与数据库软件owner相同的用户,但是在Oracle 10.2以上的版本,Oracle已经修改了安全策略,从Oracle主目录去掉了全局执行权限。唯一的选择是允许应用用户作为dba组的一部分,或者修改在Oracle主目录的权限——这两种做法都会使数据库变得脆弱,易于受到攻击。

(作者:Arup Nanda 译者:冯昀晖 来源:TT中国)

SQL Server DBA需要熟知的SAN基础(一)

数据库管理员往往对于SQL Server存储不以为然。然而作为DBA,你必须了解更多关于存储空间网络(SAN)的知识。通过对SAN概念的理解,我们可以更好地管理SQL Server环境并创建更好地系统性能支出。

选择RAID级别和存储层

当向SAN或Windows管理员请求存储空间时,你要告诉他们你需要的RAID级别和存储层。这非常重要,因为RAID级别决定了你需要的读写I/O和数据冗余度。要定义SAN阵列支持的RAID级别,可以看看我写的技术文章。DBA应该参与RAID级别容量的决策过程,毕竟他们比存储工程师更加了解系统中的数据。

知道数据所在的存储层会让你成为存储管理员的好伙伴。大多数数据库处于第一层存储。第一层存储在系统中是最快最昂贵的。许多光纤通道硬盘支持数据库正常运行(通常有146G或300G)。二层存储通常是更大的光纤通道硬盘。它通常没有第一层存储那么快那么昂贵,因为轴上面分配了很多数据。第三层存储是最便宜的。它通常由非常大非常便宜的磁盘组成。

注意:这不是标准的存储布局。你可以咨询存储管理员获取布局信息。

如果你的系统不需要超高速(只有少数用户使用),那么你可以将系统放到二层存储。虽然它不如一层存储那么快,但你可以花更少的钱,将第一层存储用于需要更快速度的系统中。

如果你的数据库使用SATA 硬盘时,需要留意。SATA 硬盘也许在台式机上性能优越,但是如果一次引入多个请求时,性能就不如预期效果那么好了。

不要害怕在一个数据库系统中混合匹配多个存储层。如果你的一个硬盘需要高速存储而另一个需要慢速存储来存档数据,就可以从两个不同分层来请求存储。这样的话,你不仅可以获得所需要的存储,而且存储管理员也可以在整个环境中平衡存储需求。

冗余是关键

当移动本地存储到存储空间网络时,冗余(SAN阵列中与光纤通道中)对于SQL

Server的正常运转十分关键。在存储阵列中,应该有几个热备用硬盘。在光纤通道硬盘中,每30个光纤通道硬盘就要有一个热备用硬盘。SATA硬盘中,每15个硬盘就需要一个热备用硬盘。这减少了阵列中可用存储的总数,它可以使阵列在硬盘发生错误时自动恢复。 针对光纤通道中的光纤本身,所有的生产系统都应该有两个HBA,每个HBA连接不同的光纤通道网络。每个光纤网络都应该连接到存储阵列。光纤网络不应该互连,这样就可以保持冗余。连接网络将使它们成为一个单一的光纤网络。一个光纤交换机掉线就会导致整个光纤网络掉线。要记住:如果一个光纤交换机掉线了,连接它的所有交换机都会掉线。所以一定确保冗余网络的分离。

(作者:Denny Cherry 译者:孙瑞 来源:TT中国)

SQL Server DBA需要熟知的SAN基础(二)

备份同样重要

由于数据库存储在SAN上,备份同样很重要。虽然SAN环境冗余度很高而且多硬盘故障非常罕见,但并不代表不可能。当然也不排除发生数据损毁或意外删除的情况。

然而将数据库存储在SAN上,你可以使用快照功能。快照在SAN领域不同于数据库领域。在SAN中,快照意味着为LUN提供一个完整副本,并提交给主机。每个厂商对此都稍有不同,所以使用前要先弄清楚你想要什么。当使用SAN快照时,要确保存储阵列指出一致性组。阵列会使用一致性组来确保备份时的一致性状态。这在数据库领域极为重要,因为如果文件不同步,你将没办法还原它们。

你还要知道在什么情况下将进行备份恢复。基本有两种情况:修复崩溃和重启崩溃。修复崩溃备份是指在SQL Server服务器电源线被拔掉时进行备份。重启崩溃备份指在SQL Server终止时进行备份。当然,重启崩溃备份要比修复崩溃备份在数据恢复几率上大的多。

SAN不是万能的

许多IT人员视SAN为解决所有问题的万能工具。我经常听到有人说:“就用SAN吧,它能解决所有性能问题。”这样说并不确切,SAN的确是一个强大的工具,但需要你正确使用它。除非花费大量人力物力在SAN上,它不会自动诊断并修复系统问题(硬盘故障除外)。它不会自动找到过度使用的部分并将数据转移,这都需要手动处理。对于SAN声称可以自动处理的问题一定要警惕,因为最终结果可能是要花更多时间进行自我清理而不是真正处理I\O请求。我听说过一个恐怖的故事,当SAN在运行高峰时,系统显示80%的时间它在进行自我优化,只有20%的时间用来处理I\O请求。

作为DBA的你一定要时刻警惕上述情况的发生。SQL Server MVP Hilary Cotter曾经写过一篇技术文章《SAN参考》,那里面讲述了其他一些关于SAN的内容。

同你的存储工程师共事时,你们应该相互协作而不是相互添麻烦。毕竟你们有着共同的目标:在一定的预算成本下让系统运行的更快更好。

(作者:Denny Cherry 译者:孙瑞 来源:TT中国)

Oracle 数据仓储 DBA 的 MetaBase 脚本对于任何 Oracle DBA 来说,一个最有挑战性的领域就是对复杂的 job stream 进行管 理。幸运的是,Oracle 已经有 dbms_scheduler 包和 Oracle Warehouse Builder MetaBase Plus (OMB)脚本语言可用来对它进行管理。 就 Oracle 数据仓库管理而言,Oracle Warehouse Builder 产品提供一种能够整合抽 取、转换和装载等命令的 OMB 脚本,这种整合要依靠能进行错误检测、确认以及数据配置 的内部工具才能进行。对 OWB 环境来说,它就是一种类似 TP 的检测器(CICS)。 一方面 Oracle 公司在 Oracle 10g Enterprise Manager 图形用户界面(GUI)方面取 得重大进展,另一方面一些高级 Oracle 专家仍然觉得有必要利用更加活跃的脚本环境。 一个图形用户界面不能完成所有的任务,并且有些高级操作需要更加灵活、精确的工作控 制逻辑: 预定执行——工作流在预先确定的时间、先决条件下完成。确保“遗漏”工作都是预 先确定的。 条件执行——在已完成任务情况的基础上执行新的任务。 对错误警告和工作流的确认——Oracle DBA 需要确定所有可能出错的范围并创建用户 退出窗口终止执行直到解决所有重要事情。 Oracle 数据仓库专家在管理 ETL 时有两种方法: 亲自动手(DIY)——如果 Oracle DBA 已经懂得怎样创建 batch stream、检测错误和 进行有条件执行,那么写 ETL 就是一种方法。Oracle10g dbms_scheduler 包能够用来安排 job-stream,或用习惯做法:OS shell 脚本。DIY 方法更加灵活,这样你就可以选择最佳 的处理方法和技术,而不是依靠 OWB 提供的工具。Tim Hall 在这方面撰写了一本很好的书, 书名为 Oracle Job Scheduling,它是在 Oracle 环境中执行复杂工作任务的最全面的参考 书。TT 数据库技术专题之“DBA 职业生涯规划指南”Page 31 of 44

使用 OracleMetaBase 脚本——OMB 是 Tcl 语言的扩展(全称为 tickle),它具有下列 强有力的特性:程序设计语言,包括复杂的布尔运算符、变量支持和 loop 循环(FOR, WHILE, REPEAT-UNTIL)。Oracle 数据仓库 Tcl 扩展是为 OMB 定做的,所以进行复杂的数 据配置以及规划 job stream。跟 Java 一样,OMB 有独立的平台而且在 Mainframe 或者 Macintosh 上运行 MetaBase 时不需要做任何的改变。 当然,MetaBase 需要你额外购买 Oracle Warehouse Builder 来处理 ETL,但是 OWB OMB 的脚本语言是一种具有吸引力、并能代替“亲自动手”的方法,这种方法取决于你 ETL 处理的经验水平。 内部 OMB 语句 让我们更仔细地观察 OMB 环境。OMB 跟 SQL*Plus 很相似,它可以调用内部命令目录来 处理 OWB 数据映射。这些数据映射能嵌入(一个层级结构),并且 OMB 给出命令允许你从 Tcl 程序中调用这些映射。以下是两种 OMB 命令: 元数据定义语言(MDL)——如 DDL 一样,通过它你能创建和下拉 OMB 对象。MDL 对象 类型包括项目、模块、表、映射以及工作流程步骤。 OMBalter——用来为 Warehouse Builder 元件改变元数据。在下列的示例中,要注意 类似 UNIX 反斜线符号命令延续字符:ombalter mapping ’MAP_NAME’ modify operator ’join’ set properties join_condition) values (’fact.empno = emp.empno) OMBcreate——用这一命令在 OWB 中创建一个元件,也许是一个项目、模块、表、映射 或者工作流程步骤。 OMBdrop——用来下拉存放中的命名对象。 元数据维护语言(MML)——类似 Oralce DML,MML 命令允许我们改变(增加、更新、 删除)命名对象。一些 MML 命令还包括:TT 数据库技术专题之“DBA 职业生涯规划指南”Page 32 of 44

OMBCC——这是“更改内容”命令,其用法和 UNIX 以及 DOS

OMBcreate TRANSIENT DEPLOYMENT_ACTION_PLAN ’DEPLOY_PLAN’ ADD ACTION ’WORK_FLOW_DEPLOY’ SET PROPERTIES (OPERATION) VALUES (’create’) SET REFERENCE PROCESS_FLOW_PACKAGE ’$mapName’ OMBDEPLOY DEPLOYMENT_ACTION_PLAN ’DEPLOY_PLAN’ OMBdrop DEPLOYMENT_ACTION_PLAN ’DEPLOY_PLAN’ OMBCOMMIT incr J } OMBCC ’..’ 小结 Oracle 数据仓库 DBA 能否像选择 ETL 脚本语言一样选择 OMB 脚本? 由于 OWB 通常带 有数据仓库许可证,因此它一般都是免费工具,任何数据仓库 DBA 都想希望能够在非 GUI 环境中处理 OWB。唯一的缺点就是需要学习 Tcl 语言。(作者:Donald K. Burleson 译者:April 来源:TT 中国)TT 数据库技术专题之“DBA 职业生涯规划指南”Page 34 of 44

分布式 DBA:掌握 SQL 存储过程(一)DB2 存储过程:基础知识 您在客户端工作站上对远程服务器和位于该服务器上的数据库进行分类的任何时候, 都存在一个简单的 DB2 客户端/服务器环境。在这种环境中,每次对远程服务器上的数据 库执行 SQL 语句时,语句本身通过网络从客户端发送到服务器上的数据库。然后数据库 处理语句,结果通过网络发送回客户端。这意味着,对于每条被执行的 SQL 语句,两条消 息都必须经过网络。因此,执行大量 SQL 操作的应用程序将产生大量网络通信。 存储过程是编写并直接存储在数据库中的命名 SQL 语句组(在一些情况中,包括操作 系统调用)。存储过程提供下列优势: 减少网络通信量。对于编码在存储过程中的 SQL 语句,消息不通过网络发送。如果 存储过程设计正确,那么只有客户端应用程序需要的数据才通过网络发送。 提高服务器密集型工作的性能。因为较少数据通过网络发送,并且因为处理在服务器 上完成,所以复杂查询和其它服务器密集型的工作可以更快地执行。 业务逻辑的分离和重用。当业务规则被合并到存储过程中时,可以仅仅根据需求调用 存储过程来多次重用逻辑。此外,保证相同的业务规则逻辑在所有使用它的应用程序中一 致实施。如果业务规则改变,那么只需要改变存储过程中的逻辑;不需要更改调用存储过 程的应用程序。 访问服务器功能。因为存储过程在服务器工作站上直接运行,所以它们可以利用任何 额外的内存、更快的处理器或数据库服务器可能具备的其它资源。另外,存储过程可以执 行许多 DB2 的管理命令,这些命令只能在服务器上运行。最后,因为存储过程不仅仅限 于执行数据库的活动,所以它们的优点是可以利用已经安装在服务器上的任何附加软件。 但是,有两个需要注意的地方。第一,所有输入数据都必须在调用时从应用程序传递 到存储过程。第二,存储过程生成的结果数据集只有在存储过程完成执行后才返回给应用 程序。换句话说,在存储过程运行期间,应用程序和存储过程之间不能发生任何交互。TT 数据库技术专题之“DBA 职业生涯规划指南”Page 35 of 44

创建 SQL 存储过程 对于 Linux、Unix 和 Windows 平台上的 DB2,可以使用三种不同类型的存储过程: SQL 的、外部的和来源(sourced)的存储过程。正如名称所示,SQL 存储过程完全由 SQL 语句和 SQL PL 对象组成。相反,外部存储过程使用 C、C++、Java 或 COBOL 等高级编 程语言构成。来源存储过程是基于其它 SQL 或外部存储过程的存储过程。 存储过程通过执行 create PROCEDURE SQL 语句创建。这个语句存在三种形式(每种 类型的存储过程有一种);用来创建 SQL 存储过程的形式的基本语法如下:create PROCEDURE [Procedurename] ( [ParamType] [ParamName] [DataType] ,...) create PROCEDURE [Procedurename] ( [ParamType] [ParamName] [DataType] ,...) [ProcedureBody]其中: Procedurename 标识指定给存储过程的名称。 ParamType 指示 ParamName 标识的参数是输入参数(IN)、输出参数(OUT)或两者 (INOUT)都是。 ParamName 标识指定给存储过程参数的名称。 DataType 标识存储过程期望为 ParamName 标识的参数接收和/或发送的数据类型。(作者:Roger E. Sanders 译者: 来源:TT 中国)TT 数据库技术专题之“DBA 职业生涯规划指南”Page 36 of 44

分布式 DBA:掌握 SQL 存储过程(二)游标声明 条件处理程序声明 赋值,流程控制,SQL 语句和其它复合语句 END 正如这个格式结构所示,可选的变量、条件和条件处理程序声明必须在存储过程逻辑 (使用 SQL PL 流程控制语句实现)和 SQL 语句之前。游标可以在任何地方声明,但是最 好在任何条件处理程序声明之前定义。 SQL 存储过程可以由遵循此格式的一个或多个复合语句(或块)组成,这些块可以嵌套 或依次执行。为了清晰地显示流程控制,每个块都可以加上标签,从而可以包含许多 SQL 语句。这使进行控制转移语句引用时更加容易实现精确性。 清单 2 显示一个其存储过程体由几个嵌套复合 SQL 语句组成的 SQL 存储过程,它 们遵循刚才所述的格式。可以在 DB2 9 SQL Reference(卷 2)中的标题 “复合 SQL(存储 过程)” 下找到关于这种格式的更多信息,以及如何对每个部分进行编码的详细信息和例 子。 清单 2. 饱含多个子句的存储过程create PROCEDURE hr.adjust_salary (IN empid INTEGER, IN rating INTEGER, OUT msg VARchar(128)) DYNAMIC RESULT SETS 1 MODIFIES SQL DATA DETERMINISTIC LANGUAGE SQL main: BEGINTT 数据库技术专题之“DBA 职业生涯规划指南”Page 37 of 44

DECLARE SQLSTATE char(5) DEFAULT ’00000’; DECLARE SQLCODE INTEGER DEFAULT 0; DECLARE not_found CONDITION FOR SQLSTATE ’02000’; DECLARE c1 CURSOR WITH RETURN FOR select * FROM hr.employees; error_handler: BEGIN DECLARE EXIT HANDLER FOR not_found SIGNAL SQLSTATE ’20000’ SET MESSAGE_TEXT = ’Employee ID not found’; work: BEGIN ATOMIC IF (rating = 1) THEN update hr.employees SET salary = salary * 1.10 where emp_id = empid; ELSEIF (rating = 2) THEN update hr.employees SET salary = salary * 1.05 where emp_id = empid; ELSEIF (rating = 3) THEN update hr.employees SET salary = salary * 1.03 where emp_id = empid; ELSE update hr.employees SET put_on_plan = ’Y’ where emp_id = empid; END IF; SET msg = ’updated record for employee with ID = ’ || char(empid); END work; END error_handler; OPEN c1; END main 调用 SQL 存储过程 创建 SQL 存储过程之后,就可以从另一个 SQL 存储过程或从一个客户端应用程序交 互式地调用它(使用命令行编辑器或 CLP 等工具)。通过执行 CALL 语句调用 SQL 存储过 程;这个语句的基本语法如下: CALL [Procedurename] ( ,...) 其中: Procedurename 标识指定给要调用的存储过程的名称。记住,调用存储过程时必须使 用存储过程名,而不是专用名。TT 数据库技术专题之“DBA 职业生涯规划指南”Page 38 of 44

ParameterValue 标识要传递给所调用的存储过程的一个或多个参数值。 OutputValue 标识一个或多个接收由所调用存储过程返回的值的参数标记或主机变量。 您可以从 CLP 调用清单 1 中所示的 SQL 存储过程(通过连接到合适的数据库和执行 类似以下的 CALL 语句): CALL conv_temp.f_to_c(98.6, ?) 当这个语句被执行时,值 98.6 通过名称为 TEMP_F 的输入参数传递给存储过程,问 号(?)被用作一个占位符,用于将通过名称为 TEMP_C 的输出参数所返回的值。 可以从嵌入的 SQL 应用程序使用如下的 CALL 语句来调用相同的存储过程: exec SQL CALL conv_temp.f_to_c(98.6, :TempC) 在这种情况,TempC 是主机变量的名称,该变量使用与 REAL DB2 数据类型兼容的特 定于编程语言的数据类型来声明。 效率和性能 SQL 存储过程提供有效的方法将业务规则逻辑从应用程序移动到数据库。通常,这种 移动带来极大的性能提升,因为在服务器上完成处理,并且必须通过网络传输的消息更少。 使用 SQL 存储过程保证在访问数据库的所有应用程序中一致地实施业务规则。并且因为 SQL 存储过程中的逻辑可以单独修改,所以当业务规则改变时不必重新编写应用程序。 不管是设计新的数据库应用程序还是只想简化日常操作,都可以寻找机会使用 SQL 存储过程。如果您发现 SQL 存储过程的开发和部署在您的工作中很有用,那么您可能想 成为一名 IBM 认证的 DB2 9.5 SQL 存储过程开发人员。(作者:Roger E. Sanders 译者: 来源:TT 中国)TT 数据库技术专题之“DBA 职业生涯规划指南”Page 39 of 44

DBA 职业道路可以转向商务智能当大多数数据库专家在谈及其职业生涯时,听到最多的莫过于“究竟有多大的上升空 间?”尽管各种名号、专业认证很好很重要,但在现在的环境中,成功的准则并不仅仅是 那一张纸和一个称号。在经济低迷、全球金融危机的洗礼中,许多公司已经勒紧裤腰带再 过日子了。升职?谈何容易! 就像 IT 人士经常会面对没有一条清晰职业道路的问题一样,DBA 在经历各种基础工作 之后,也会遇到职业生涯的瓶颈。 Quest 公司的 SQL Server 解决方案技术经理 Kevin Kline 这样说道:“不幸的是,IT 界在某种程度上来说就是一个瓶颈。经历一段时间后,如果还想进一步发展,你就必须往 管理层靠,否则在技术的海洋中迟早会被淘汰。” Kline 计划在 PASS 2009 上进行主题为 IT 基础管理的演讲。他表示数据库专业人士面 临的最大障碍就是,他们原先擅长的管理技能在进行角色转化之后未必也能好使。 数据库管理员同时还要面对着技术革新的挑战,而在这样的经济环境中,对他们来说 就更难了。Kline 说:“在数据库方面,已经有很多东西越来越复杂,原先只有一个服务 器一个应用的情况已经不复存在。” 所以,他表示 DBA 想要在其职业生涯中取得更多的成功,关键的一点就是掌握更多的 知识,这些知识往往是 DBA 没有注意到的,比如存储技术、硬件与虚拟化技术。“当你在 DBA 的职位上干了六年、八年甚至十年,而且你工作的很好。下一步怎么办?你就必须在很 多不熟悉、很复杂的领域掌握更多的知识,这样才能得到升职的机会。”Klein 说到。 为自己正名 广博的技能储备使所有 IT 专业人士的关键,特别是在这样的经济环境之下,他们必 须将触角延伸到 IT 领域的各个角落。一些人认为,自由写作以及公共演讲的能力也同样 重要。TT 数据库技术专题之“DBA 职业生涯规划指南”Page 40 of 44

IT安全顾问Kevin Beaver这样说道:“你必须走出去,让所有人都知道你。的的确确,通过写作、演讲等方式,你可以让更多人了解你的技能。而且在你的简历中这也是光彩的一笔,它可以帮助你获取更多的工作机会和职业上升空间。”

Kline也十分赞成这一点,他说在竞争如此激烈的环境中,通过博客和twitter等方式表达自己,可以显示你同其它DBA有所不同,让你变得更加出众。他还强调说DBA在IT社区的影响力同企业内部的影响力同样重要。“在我看来,经济的增长同IT专业人士的整体努力十分不开的。许多DBA以及开发人员都忽视了我们所创造的商业价值。我们需要清楚地表达我们的业务内容,能够告诉世人我们所做的努力是如何创造价值并让生活更加美好的。”

他引用了一个在航运公司工作的DBA的例子。如果DBA不知道任何业务逻辑的话,那么他同其他了解业务内容的DBA比起来就相形见绌了。他解释到:“我们需要清楚地明白最终要达到的目标,我们所起的作用不只是让事情自动运转起来,我们还创造了价值。我们通过改进服务质量让公司获得了更多的客户,赚了更多的钱。”

Beaver则表示在企业内部的影响力是很关键的,IT人士可以通过它来保住自己的工作,得到升职的机会。“你需要多花点力气,在没有人指导的情况下把工作顺利地完成,这样才能让你更有影响力并赢得更多人的信任。它显示了你对推动业务的意愿与能力。” BI需求在增长

另一个DBA需要考虑的职业路线就是选择正确的专业领域。即将发布的SQL Server 2008 R2 就被称为微软的SQL Server“BI版”。Klein说商务智能和数据仓库技术在目前的需求正在激增。“你可以看一下目前所有的主流数据库平台,没有哪家像微软一样增加了更多的商务智能功能。像PowerPivot这样的新功能新特色的确很让人兴奋,我们也应该看到BI专业人士的稀缺,特别是在微软SQL Server领域。”

他将商务智能表述成“火爆、需求激增”的领域,在这一领域需要做的工作还有很多,而微软在这一方面比其它厂商拥有更好的技术。对于许多IT人士来说,这个方向是一个非常好的选择。

暂时放弃云计算

现在DBA不太想触碰的一个领域就是云计算。SQL Server专家Brent Ozar表示从 SQL Server角度来说云计算,对于开发者的意义大过DBA。“我认为SQL Server云计算所关注的不是DBA,如果一个公司有相应的需求,他们会雇用一个全职DBA来构建整体架构。”

Klein则表示对近一段时间内云数据库发展并不看好。他说:“我对此一直保持怀疑态度,并不是对云计算的价值,而是它的可靠性问题。云计算对于企业来说并不可靠,至少现在还不可靠。”

尽管Klein强调云计算现在还不适合企业级用户,但他还是建议DBA不要完全不关注云计算。他还同意Ozar的观点,现在关注云计算更多的应该是开发人员。“你可以试着将一些东西放到云中,观察它如何工作。但如果是我,我肯定不会再企业层面上使用它,现在云计算存在的问题还有很多。”

(作者:Brendan Cournoyer 译者:孙瑞 来源:TT中国)

Oracle DBA工资持续上涨

如果你在过去的一年中从事Oracle数据库管理工作,那么你受到经济衰退的影响肯定要比其它IT部门的员工要少。

严重的经济衰退对IT产业造成了极大的影响,厂商不得不延迟或取消正在进行的项目,他们用裁员和减薪的方式削减成本以度过艰难时期。就是在这样的背景下,厂商依旧对DBA的工作非常支持,甚至支付给他们更高的工资和奖金。

根据2009年独立Oracle用户组(IOUG)与Unisphere Research合作的一项收入调查,涉及数据库站点运作的DBA平均工资为96000美元(年薪),然而44%的Oracle数据库专家在过去一年中的平均奖金为7566美元,这使得他们的平均年收入达到了6位数。

奖金的提升在某种程度上来说是因为DBA所扮演的角色在不断扩大。在许多情况下,DBA发现自己正在承担日益复杂的网站管理职责,这意味着承担更多的责任和掌握更多的专业知识。

因此Oracle DBA的工资在持续增长着,但是他们的工作量也随之提升。毕竟天下没有免费的午餐。

夏洛特一家大型银行的DBA Eugene Lee这样说道:“这种现象不难解释,比如我们银行有很多综合的部门,再加上众多的分支机构,我要负责的网站非常多,还要监督内部与外部的相关人员,工作可以说是相当繁重。”

尽管Oracle DBA在经济衰退中也受到不小的影响,但是大约25%的人承认经济对他们工作影响并不大,超过16%的人认为自身的工作内容已经被调整,现在要承担更多的责任,只有4%的人从IT部门离职,转而去了其他业务部门。

迫于责任的扩大与IT预算的削减,一些DBA的工作压力也骤然提升。

一位不愿透露姓名的DBA说:“工资提高为我们带来了额外的工作压力,公司要求DBA不仅有零错误的表现还要有奉献精神。为保住现在的饭碗,我们必须要更具创新性,还要想出能赚更多钱的点子。”

在另外一项调查中,48%受访者表示自身的年薪在8.5万到11万美元之间,25%年薪超过10万美元的薪酬保持不变。

参与调查的人有超过半数的DBA,16%是开发人员与分析师。受访者所在公司规模各不相同,三分之一的公司员工少于1000人。16%是IT服务提供商,14%市政府部门。
时间:2022-06-17 作者:湖北大学生网 来源:湖北大学生网 关注:
大学生活规划推荐
  • DBA职业生涯规划指南
  • DBA职业生涯规划指南
  • DBA是Database Administrator的简称,即我们常说的数据库管理员。在数据信息呈爆炸式增长的今天,DBA的角色已经发生了重大的转变。
  • 06-17
  • 职业生涯规划涉外律师
  • 职业生涯规划涉外律师
  • 职业生涯规划是对个人和社会主客观条件进行测定、分析、总结、研究的基础上,确定其最佳的职业奋斗目标,并为实现这一目标作出行之有效
  • 06-17
  • 一年级下册级品德与生活教学工作计划
  • 小学生活老师工作计划
  • 小学生活老师工作计划
  • 按照学校相关领导及住读部学年度下期工作计划的要求,培养学生诚实守信等优秀品质和良好的生活、阅读习惯。
  • 06-16
  • 实习带队教师工作总结
  • 实习带队教师工作总结
  • 20xx年11月20日,我带领我院11级土木工程管理班的学生正式开始他们的课外实践阶段,我们一同前往崇左市八大住宅区工地实习。
  • 06-16