﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-小海豚-随笔分类-SQL</title><link>http://www.cppblog.com/susu/category/6780.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 04 Mar 2011 14:46:54 GMT</lastBuildDate><pubDate>Fri, 04 Mar 2011 14:46:54 GMT</pubDate><ttl>60</ttl><item><title>成就DBA的职业生涯(转载)</title><link>http://www.cppblog.com/susu/archive/2011/03/04/141118.html</link><dc:creator>学习才能进步</dc:creator><author>学习才能进步</author><pubDate>Fri, 04 Mar 2011 07:38:00 GMT</pubDate><guid>http://www.cppblog.com/susu/archive/2011/03/04/141118.html</guid><wfw:comment>http://www.cppblog.com/susu/comments/141118.html</wfw:comment><comments>http://www.cppblog.com/susu/archive/2011/03/04/141118.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/susu/comments/commentRss/141118.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/susu/services/trackbacks/141118.html</trackback:ping><description><![CDATA[作者介绍：Brian Peasland，Techtarget网站Searchoracle子站的资深专家，SGT, Inc.公司首席DBA。Oracle7.3，8和8i的OCP，计算机科学硕士学位，专攻数据库方向。Brian 在IT行业从业已有20年，并且是从计算机操作人员到操作分析员、然后成为系统管理员，随后成为应用软件开发人员直至目前的DBA. 可以说，Brian本身的职业历程就是一部完整的DBA成长指南，后来他应美国Techtarget网站之邀，写了一个白皮书——《Grow that DBA Career》并发到了其个人的网站上 Peasland.net.<br><br><br>许多年来，我在不同的新闻组上花费了很多时间与那些想知道如何得到数据库管理员(DBA)的工作或者如何成长为一名DBA的IT人进行交谈，现在他们有了工作。这些年来许多人针对如何达到这个目标提出了不同意见。本文即是那些意见的综合并且能够在如何才能出色的完成DBA的工作方面给出好的建议。这篇文章同样对于如何让一名DBA变得对老板更有价值。假如你已经是一名DBA，那么也许你会希望跳过文章的前几段。<br><br>我应该成为一名DBA么?<br>&nbsp; 我曾问过的一个问题是一个人应该从事DBA这样的职业么。这个问题并不容易回答，因为它因人而异。有的人有成为一名好DBA所需要的天赋。而其他人并不认为能够很容易掌握成为DBA的秘诀。DBA职业需要掌握一定的技能。而且还需要其他IT职业所不必需的要求。因此，为了回答这个问题，我通常给将要成为DBA的人描述DBA职业所必需的要求。下面的段落中，我都将以问题结尾。在继续下一段以前请花一些时间考虑并且回答这些问题。<br>&nbsp; 许多人因为许多原因而立志要成为DBA。其中一个主要原因是薪水。DBA是IT业中薪水最高的职业之一。其他人想成为DBA是因为喜欢赞扬 DBA是受到的荣誉，或者因为他看上去很酷!我个人认为，成为DBA是很值得的。它是一个很有意思，令人兴奋的职业。那么，你把DBA作为一个可能的职业选择的原因是什么呢?<br>&nbsp; 除非你已经提前准备好了，否则你可能会发现从事DBA职业充满了挫折和令人头痛。一个数据库存在于操作系统和最终用户应用程序之间。同样地， DBA必须非常精通他的数据库所在的操作系统。DBA并不一定需要知道所有有关操作系统的知识，但是他知道得越多越好。数据库与操作系统联系非常紧密。理解这种关联是十分必要的。DBA还需要知道服务器硬件以及它如何影响与帮助数据库。同时，DBA必须理解应用软件。DBA可能会被要求帮助开发人员创建可靠，健全的数据库应用程序。还有，最重要的也是最明显的，DBA必须十分彻底的理解数据库引擎，它是如何工作的，所有的引擎是如何组合在一起的，以及如何影响数据库引擎向最终用户和应用程序传送数据的能力。我见过的最好的DBA有非常深刻的理解而且不仅仅在数据库本身。他们知道一些系统管理与应用开发。好多时候他们在成为DBA之前有其中一个或两个背景。无论如何，成为一名合格的而不是出色的DBA也需要许多背景知识。你是否已经做好准备开始学习直到你感到已经无法再学下去了?<br>&nbsp; 许多和我交谈过的，在开始DBA职业时遇到困难的人，在尝试着吸收大量DBA所需了解的信息时实际上都会有一些问题。毕竟系统管理员是全职学习操作系统的细节。应用程序开发人员全职学习如何编写好的程序。DBA不仅要非常了解这两种不同的工作，而且还需要花费更多的时间去理解数据库的体系结构，以及理解每一样东西的每一块是如何组合在一起的!听起来是不是很让人畏缩?有许多人失败后这样想，并且把DBA工作看作一项非常困难的事情。也有那些传播和理解所有这些信息，并且使用这些信息做出好的，听起来具有技术性的决定的人。正如我以前是一名DBA时喜欢说的，所有这些对我来说看上去像一个大谜团。把这些所有的很好的组合在一起就是挑战。你是哪一种人?<br><br>&nbsp; 许多DBA是随时侯命的。他们会在白天或晚上的所有时间接到呼叫去解决他们的数据库出现的致命问题。数据库是商业信息技术基础组织的必不可少的组成部分。没有数据，就没有必要拥有一个计算机系统。数据推动商业。假如amazon.com的网站不能在数据库中搜索产品并且假如没有人能够为他们的产品下订单，那么它会变成什么样?它就不会在商业中存在很久。当数据库down掉，即使只是很短的时间，公司也会损失重大。基于这个原因，DBA到达现场后必须尽可能迅速的解决问题。许多公司有自己的DBA团队以便可以轮流待命。这些DBA 24x7小时的维持数据库应用程序。假如工作需要的话，你准备好随时候命了么?<br><br>&nbsp; 一些DBA的职责包括为软件打补丁或者对数据库做些改变。通常，这些操作不能在公司职员工作的时候做，因为此时数据库必须运行以便他们能够工作。这意味着DBA经常不得不在很早或者深夜甚至周末，总之，在正常工作时间以外来完成工作。你准备好在非正常时间工作，或者你在找一个朝九晚五的工作?<br><br>&nbsp; 对DBA而言，需要掌握的一个重要内容就是通常被称为&#8220;软技术&#8221;的东西。DBA需要在团队中很好的工作，通常团队是在变化的，如系统管理员，网络管理员，应用程序开发人员，项目经理和其他人。DBA要能够用流利的英语解释复杂的技术概念，让团队中其他人明白。DBA还要能够在数据库相关问题上指挥团队队员。你的软技术怎么样?<br><br>&nbsp; 下面不是全部列表，但是包括了DBA的典型职责:<br><br>&nbsp;&nbsp;&nbsp; &#183; 把监视数据库实例当作每日必做工作以保证其可用性。解决不可用的问题。<br><br>&nbsp; &#183; 收集系统统计和性能信息以便定向和配置分析。<br><br>&nbsp;&nbsp; &#183; 配置和调整数据库实例以便在应用程序特定要求下达到最佳性能。<br><br>&nbsp;&nbsp; &#183; 分析和管理数据库安全性。控制和监视用户对数据库的访问。必要时审计数据库的使用。<br><br>&nbsp; &#183; 监视备份程序。必要时提供恢复。测试备份与恢复程序。<br><br>&nbsp; &#183; 升级RDBMS软件并且在必要时使用补丁。必要时升级或者迁移数据库实例。<br><br>&nbsp; &#183; 通过数据库相关动作来支持应用程序开发人员。<br><br>&nbsp;&nbsp; &#183; 跟随数据库趋向和技术。当可应用时使用新技术。安装，测试和评估Oracle新的相关产品。<br><br>&nbsp; &#183; 执行存储和物理设计。均衡设计问题以完成性能优化。<br><br>&nbsp; &#183; 创建，配置和设计信的数据库实例。<br><br>&nbsp; &#183; 诊断，故障检测和解决任何数据库相关问题。必要时联系Oracle支持人员以便使问题得到较好的解决。<br><br>&nbsp; &#183; 确保Oracle网络软件(SQL*Net, Net8, Names, OiD)配置和运行的很好。<br><br>&nbsp;&nbsp; &#183; 与系统管理员(Unix&amp; NT)一起工作以保证Oracle相关事务得到很好的处理。<br><br>&nbsp;&nbsp; &#183; 为有效的，定期的维护数据库创建任何必要的脚本。<br><br>&nbsp; 前面各段的问题是为了使你考虑一名DBA该做些什么，帮助你决定这是不是适合你的职业。我并非意味着假如你的目标是成为DBA这些会阻止你。我只是尝试着展现一些事实。我看到过一些DBA一旦被实际工作打击了就一蹶不振。他们花费时间，精力和一些金钱获得了他们的第一份DBA工作。我个人认为这个职业非常有价值。而且我无法想像现在做任何其他的会怎样。所以，这一段帮助你决定这是不是你希望从事的。假如它是，那么尽你所有去得到它!<br><br>我怎样得到第一份DBA工作?<br><br>&nbsp;&nbsp; 你已经阅读了前面的段落并且认为成为一名DBA是一个好的职业。祝贺你!我希望你的职业能变成你想像得那么令人兴奋和有意义。那么，你如何找到第一份DBA工作?这个问题我已经听别人问了许多许多遍。<br><br>&nbsp; 在90年代早期，因特网急速发展。它使公司象草一般萌芽。公司蜂拥而至并且开始创建他们在网上的形象。几乎所有这些有网站的公司都需要一个数据库作为 web应用的后台。不幸的是，当时在该领域却没有那么多DBA。在IT业，DBA变得奇缺。那段时间里，得到一份DBA工作看上去只要可以拼出 &#8220;Oracle&#8221;或者可能只是在大学里接触过一学期的数据库就行。为了使生活变得更好，DBA的匮乏促使公司付给有潜力的职员很高的薪水。假如你想要成为一名DBA，很容易，非常容易。你需要做的就是证明你了解什么是数据库然后工作就会比你预期的更早的出现在你面前。ITPUB个人空间!K&amp;d7a <br><br>&nbsp;&nbsp; 然后因特网的泡沫破灭了。大量投产因特网的公司破产。许多给公司工作的DBA重新寻找工作。缺少DBA的公司找到一名有DBA经验的人比以前容易得多。在21世纪初期，由于经济并不十分稳固，因此生活并不容易(至少在美国如此)。公司都勒紧了他们的裤腰带。所有这些转化为更少的工作机会和DBA 候选人更少的工作空缺。<br>&nbsp; 得到第一份DBA工作的最艰难的部分是每一个职位都要求有一些工作经验。如果你从公司的角度出发，你就可以理解为什么对DBA职位而言经验是必需的。假如他没有一点经验，你会付给这个人很高的工资让他去操作，维护和运行你IT基础组织的最大最重要的一部分么?你的公司会付钱给一名没有经验的 DBA么?并且，在等待他成长起来的过程中可能会损失上百万美元的收入。对大多数公司而言，这些问题的答案肯定是&#8216;不&#8217;。所以，没有经验，获得你的第一份 DBA工作是很困难的。<br><br>&nbsp;&nbsp; 第一份DBA工作现在成了恶性循环的境遇。假如我没有任何经验，我怎样才能得到DBA的工作呢?我没有工作的话又怎么能得到DBA经验呢?这是要战胜的最困难的障碍。最困难的部分是获得第一个DBA工作。这部分的剩下部分将针对实现你第一个DBA工作的目标给你一些建议。<br><br>&nbsp; 提示#1:接受教育。--尽可能多的学习有关数据库的知识。这很可能将占用你正常工作以外的部分时间也精力。参加本地大学举办的数据库培训班。许多培训公司都会举办数据库管理员的培训班。假如你的老板不资助你的学习，那么你可能不得不自己支付这笔费用。许多DBA职业要求至少为计算机科学或相关专业本科以上学历，因此你必须至少有那样的文凭。<br><br>&nbsp; 提示#2:锻炼成为DBA。--许多数据库供应商都允许你下载他们数据库系统的测试版或评估版。下载一份并且在自己的个人电脑上安装软件。练习使用数据库。故意破坏数据库并且尝试修复它。尝试着履行你所能想到的尽可能多的DBA职责。测试和磨练你在自己的测试平台上的技能这样你就可以证明你的数据库管理能力。<br><br>&nbsp; 提示#3:获得认证。 --许多数据库提供商都提供自己的数据库产品的认证。许多公司现在都把认证看作是一种标准。需要记住的一件事是仅获得认证是不够的。通过DBA认证测试并不意味着你知道如何管理一个数据库。它只是告诉你以后可能的老板，现在你拥有了一定的技术。它还告诉你的老板你对DBA工作的态度是很认真的。我看到许多人抱怨他们已经得到了认证但是没有经验，却仍然不能得到第一份DBA工作。认证本身并不能使你得到工作，但它是无害的。即使没有其他的，在你进行认证的时候你也已经学到了许多知识。只是不要依赖认证来给你带来你要找的工作。你需要的比这还要多。但它会在最后帮助你。<br><br>&nbsp; 提示#4:利用你现有的技能。--许多DBA具有系统管理员背景。其他的有应用程序开发背景。假如可能，查看你能否利用现有的技能来得到工作。现在的目标就是为你和你的老板创造一个双赢的局面。例如，让我们假设你已经是一名系统管理员而想进入DBA领域。也许你会找到一份工作，这份工作一部分时间里可以用到你的系统管理技能，并且在剩下的时间里可以使你涉及到数据库管理领域。假如你已经是一名某个产品平台上的DBA但你希望转到其他产品平台，那么看看你能否找到一份同时接触两个产品平台的工作。这样，公司和你都得到了想要的。在你定向到了DBA工作后，你可以试着得到一个能让你全职作它的职位，也许还可以在同一个公司中。<br><br>&nbsp;&nbsp; 提示#5:利用现在的机会。--有时候，一个人进入DBA领域仅仅需要的是正确的地方和正确的时机。假如你现在的老板有一个机会让你进行任何数据库的项目，抓住这个机会!任何数据库经验就比没有数据库经验要好。让你的管理者知道你十分积极的在寻找任何可能的数据库机会。他们就有可能在下次机会到来的时候想到你。进行这些数据库项目以及看到你要成为一个DBA的渴望以后，他们可能会决定培训你，提拔你。许多许多人都是以这种方式获得他的第一个 DBA工作，在进行了一些数据库相关的项目后不知不觉的成为一名较低级的DBA。通常当一名DBA离开公司后，公司将在内部寻找一个候选人，假如他们认为这名候选人是可训练的话。<br><br>&nbsp; 提示#6:寻找较低级的DBA职位。--假如你只是为了一个较低级的DBA工作，看到DBA职位的需求描述说他们正在寻找高级DBA或者其他的。所以，让我们严谨一些。你并没有一个高级方面的经验。我已经讨论过了对于这样的职位为什么公司不会考虑你。但是他们会在低级的职位上考虑你。低级的 DBA在高级DBA的指导下完成工作。他们摸索窍门。一般来说，高级DBA对数据库承担责任，同时也获得所有的荣誉。但是不要焦急。随着你的事业发展，你将会有越来越多的责任和得到越来越多的信任。因为你没有任何经验，你应该从这里开始启航。<br><br>&nbsp;&nbsp; 我也听到过一些公司寻找一名高级DBA，但是到最后，他们实际想要雇一名低级的DBA。你或许希望申请这样的职位虽然你也许没有资格。他们可能还是会决定雇佣你。但是提前说明你仍然在摸索阶段并且已经是较低级的DBA水平。不要试图欺骗他们让他们认为你是高级DBA的水平。这只会降低你得到这项工作的机会。<br><br>&nbsp;&nbsp; 这些提示将帮助你得到第一份DBA的工作。祝你在寻找工作时有好运气。当你已经找到了第一份DBA工作后，继续下面的部分来学习如何往下走下去。<br><br>&nbsp; 我刚得到我的第一份工作!现在该怎样?<br><br>&nbsp; 祝贺你!你现在是DBA俱乐部的正式成员了!对于这份梦寐以求的令人激动的职业，你准备好了么?你的工作才刚开始并且你在学习上已经落在后面。你将会发现要成为一名高效的数据库管理员有大量的知识你必须掌握。你的第一年或前两年将花费比以前更多的时间来学习。假如你发现学习知识的数量使你大脑超负荷，那么休息一下，歇口气，然后再回到学习中去。为了帮助你继续走下去，你可以按照下面的方法进行:<br><br>&nbsp; 步骤#1: 关系型数据库理论 &#8211;这部分我假设你将管理的数据库是一个&#8220;关系型&#8221;数据库。其他数据库模型也存在，但是关系型模式是近二十年工业上占统治地位的一种数据库模式。假如你的数据库系统是其他的模式，那么学习它的理论。相关数据库理论是十分重要的。它是其他一切的基础。我也看到许多跳到数据库管理职位的人从不想去学习纯粹的关系型数据库理论。不可避免的，在他们的事业中对理论基础的匮乏作为缺点暴露了出来。假如你对关系型数据库理论理解得很好，那么你将非常容易的在任何平台的关系型数据库管理系统(RDBMS)中转变。我使用Oracle数据库，或者IBM的DB2，或者微软的SQL Server是无关紧要的。他们都是关系型数据库系统。他们在最底层都在做着相同的事情。区别在于他们怎样去做相同的事情。纯粹的关系型数据库理论对于较低级的DBA来说并非必需的。但是假如你想要超越低级DBA的水平它就是十分重要的。许多大学的教科书都很好的包含了关系型数据库的理论。其中一本被广泛使用的教科书就是由Elmasri and Navathe编写的数据库系统基础，<br><br>&nbsp; 步骤#2: 彻底的学习查询语言 &#8211;数据库都有语言让你能够从数据库中得到数据，把数据放到数据库中，以及修改数据库中的数据。对于关系型数据库而言，这种语言就是结构化查询语言 (SQL)。这门语言是你与数据库接触的工具。不能让这个工具成为以后学习的障碍，这一点很重要。在你的测试数据库中练习不同的SQL语句直到他们变成了你的习惯。这方面的一本非常好的书叫做Oracle 9i完全参考(Oracle 9i The Complete Reference)由Loney 和Koch编写，Oracle Press。每一名Oracle DBA都应该在他事业的早期阅读这本书。Oracle 9i参考手册(Oracle 9i SQL Reference manual)是另一个很重要的知识来源。在他们的技术网站TechNet上(<a href="http://technet.oracle.com/" target=_blank><u><font color=#0000ff>http://technet.oracle.com</font></u></a>)你可以访...t上有一个账号。<br><br>&nbsp; 步骤#3: 开始学习基本的数据库管理工作 &#8211;这难道不是你最开始在这里的原因?为什么它在列表的第三位?我们尝试着建造一个知识的金字塔，我强烈的感觉到一个人需要知道关系型数据库理论和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&#8217;s Guide, and the Oracle 9i Backup and Recovery Guide)都来自Oracle文档。<br><br>&nbsp;&nbsp; 步骤#4: 阅读，阅读，再阅读 &#8211;由于你才刚开始你的DBA职业生涯，因此你正在开始为你的技能奠定基础。这需要一段很长的时间去形成，吸收和领会所有你将学到的知识。毫无疑问的，比你资深的DBA由许多工作要做，因此他们可能不会总是腾出大量时间辅导你的学习。你不得不靠自己学习很多东西。这就是阅读的目的。市面上有许多书籍可以解答许多数据库相关的话题。Oracle Press是Oracle公司的官方出版社，有大量的Oracle相关书籍。同时也有其他的出版社，如Wrox Press 和 O&#8217;Reilly Press。你也可以找到Oracle文档来阅读。并且还有许多网站和新闻组。尽可能多的读书使你能够继续下去。还有，不只一遍的阅读它们可以使你吸收你第一次阅读时错过的内容。<br><br>&nbsp; 步骤#5: 创建测试案例 &#8211;我经常看到初学者问一些很基础的问题，其实假如他们花一些时间来考虑，这些问题都是很容易解答的。毫无疑问的，在你开始学习Oracle的时候你会有许多的问题。看看这些问题你能不能自己回答出来。例如，我又一次被问到能不能向有唯一性约束的列中插入空值。最开始，这看上去也许不是很容易回答的问题。但它却是非常容易去试验的!只需要创建一个简单的表。在其中的一列，假如唯一性约束。尝试着在该列插入一个空值。有效么?你应该能够非常容易的回答出这个问题了。那么，为什么要创建这些案例呢?一个原因是这样做可以提高你解决问题的能力。创建这些案例需要的技能就是解决问题用到的技能。解决问题的技能将会对你的DBA事业有很大的帮助。另一个原因是随着你的事业的发展，你将经常需要创建更复杂的测试案例以便保证数据库和应用程序的成功。在将来，甚至简单的测试案例也可以组成更复杂的数据库和应用程序分解。<br><br>&nbsp; 步骤#6: 找一个良师 &#8211;一个良师能够为你的DBA生涯(或者其它类似的职业)引领方向。他们能够给你指示，回答问题以及在你的DBA的成长过程中帮助你节约一些时间。但愿这篇文章能够在你事业发展的一段时间内起到良师益友的作用。假如你与一名资深的DBA共同工作，那么那个人应该有责任为你的事业进行有益的指导。你也可以同时选择其他的人指导你。<br><br>&nbsp; 步骤#7: 参加本地用户群 &#8211;许多跨国家的城市有本地用户群，他们定期聚会讨论数据库相关的话题。假如可能，参加其中一个本地用户群。这将给你一个与他人相互交流的很好的方法。<br><br>&nbsp; 我如何能够从一名DBA初学者变为一个具有中级水平的DBA?<br><br>&nbsp;&nbsp; 你已经成为DBA一段时间了，你现在希望你的技术水平提高一阶么?下一步该怎么做?首先，往回看前面的部分，确认你已经完成了所有的步骤。彻底理解 SQL语言是十分重要的。理解关系型数据库理论和掌握基本的数据库管理任务也是非常重要的。到如今，你应该阅读文档和其他书籍到已经郁闷了。假如没有，那么你还没准备好继续深造，增长你的DBA的技术水平。假如你已经准备好继续了，我已为你的继续深造准备了一些方法。<br><br>&nbsp; 步骤#1: 学习操作系统和你的服务器硬件 &#8211; 正如我前面所说，数据库存在于操作系统和服务器硬件之上。理解这些组成部分如何工作是很必要的。你应该知道如何与特殊的操作系统相合。你如何删除或者编辑文件?假如你的操作系统是Unix，你应该掌握命令行以及Unix命令如何辅助你工作。对于运行在Windows或其他操作系统上而言也是一样的。你同时需要对服务器的硬件有一定的了解。物理内存和虚拟内存有什么区别?RAID是什么以及不同的级别是如何产生影响的?为什么数据库喜欢更多的物理硬盘而非一个大硬盘卷?你需要知道这些事情以便你能够容易的与系统管理员进行如何配置好你的服务器以便使它能够充分的支持数据库方面的交谈。<br><br>&nbsp; 步骤#2: 学习应用程序设计因为它与数据库相关 &#8211; 如前面所述，数据库存在于操作系统与数据库应用程序之间。你真的需要这两者。SQL语言是如何帮助创建好的应用程序的?绑定变量是什么并且为什么他们很重要?Tom Kyte 写了一本非常好的书，在Oracle应用程序设计上给出了很好的建议。他的Expert One-on-one Oracle书可在 Wrox Press找到。我强烈推荐阅读此书。他详细的叙述了那些能够生成和破坏Oracle应用程序的东西。你需要知道这些，因为你的应用程序开发人员希望从你这里得到指导和数据库知识。学习任何与应用程序设计有关的知识。也许参加一个关于软件工程，操作系统或数据结构的课程班会有好处。<br><br>&nbsp; 步骤#4: 取得认证 &#8211; 也许你的工作并不需要，但是取得认证一定对你有益。作为DBA的每一天里，你学到了许多新的和令人激动的事情。也许在你职业生涯的这段时间里，有几天你没学到任何新的东西。但你仍然有很多要学习。成为一名OCP(Oracle Certified Professional) DBA要求你必须已经学到了数据库管理所有方面的基础。我发现在OCP考试的学习过程中，我学到了在我工作中从未接触过的东西。一次我学到了我从未碰到过的一个特殊课题，在后来的日子里我就能够使用那个知识解决问题。假如我从为在 OCP考试中学倒它，那么我永远也不会用那种特殊的方法去解决问题。这已经一次次的发生在我的面前。有的人可能会说认证实际上真的不值得。我要说它只会对你有益无害。所以，去取得认证吧!<br><br>&nbsp; 步骤#5: 获得一个资源库 &#8211; 在前面的部分中，我指出每个DBA都应该在Technet上有个账号。这是你其中一个主要资源。但是同时还有许多其他资源。很多人共享他们的Oracle 知识。假如你还没有开始，你应该用网络浏览器去搜索并收集很多Oracle资源。愿意的话，你可以从访问我的网站(http: //<a href="http://www.peasland.net/" target=_blank><u><font color=#0000ff>www.peasland.net</font></u></a>)开始。下面是一些Oracle DBA必须了解得网站列表:<br><br>&nbsp; Ask Tom &#8211;<a href="http://asktom.oracle.com/" target=_blank><u><font color=#0000ff>http://asktom.oracle.com</font></u></a><br><br>&nbsp;&nbsp; Jonathan Lewis web site -<a href="http://www.jlcomp.demon.co.uk/ITPUB" target=_blank><u><font color=#0000ff>http://www.jlcomp.demon.co.uk/ITPUB</font></u></a>个人空间/HFcu N<br><br>&nbsp; Ixora (Steve Adams) &#8211;<a href="http://www.ixora.com.au/" target=_blank><u><font color=#0000ff>http://www.ixora.com.au</font></u></a><br><br>&nbsp;&nbsp; Orapub &#8211;<a href="http://www.orapub.com/" target=_blank><u><font color=#0000ff>http://www.orapub.com</font></u></a><br><br>&nbsp; Metalink (Oracle支持网站) &#8211;<a href="http://metalink.oracle.com/" target=_blank><u><font color=#0000ff>http://metalink.oracle.com</font></u></a><br><br>&nbsp;&nbsp;&nbsp; 国内的：<br><br>&nbsp;&nbsp;&nbsp; ITPUB论坛-<a href="http://www.itpub.net/" target=_blank><u><font color=#0000ff>http://www.itpub.net</font></u></a><br><br>&nbsp;&nbsp;&nbsp; Oracle技术网 -<a href="http://www.oradb.net/" target=_blank><u><font color=#0000ff>http://www.oradb.net</font></u></a><br><br>&nbsp;&nbsp;&nbsp; CSDN社区 -<a href="http://community.csdn.net/" target=_blank><u><font color=#0000ff>http://community.csdn.net</font></u></a><br><br>&nbsp;&nbsp; 还有许多其它的好网站<br><br>&nbsp;&nbsp; 步骤#6: 开始在不同的新闻组和论坛上交流 &#8211; 也许你已经发现了他们，但假如现在你还没有那么是时候去开始了。有许多的新闻组和论坛可以回答你的任何Oracle问题。在Oracle群落里还有许多高手愿意和你共享他们的知识。你所要做的就是提问。下面是一个列表包含了可以开始交流的最好的因特网团体:<br><br>&nbsp; Usenet newsgroups &#8211; comp.databases.oracle.server和 comp.databases.oracle.misc 是两个可以交流的非常著名的世界性的新闻组。他们拥有大量的针对Oracle问题的交流卷宗。观看这些组的最好的方法式使用新闻广播员。但是假如你想通过基于web的方式访问，也可以通过Google搜索引擎搜索它。 (<a href="http://groups.google.com/groups?hl=...atabases.oracle" target=_blank><u><font color=#0000ff>http://groups.google.com/groups?hl=...atabases.oracle</font></u></a>)<br><br>&nbsp; Quest Pipelines &#8211; 当他们在最开始还属于软件提供商RevealNet的时候，被称为the RevealNet Pipelines。现在，Quest购买了RevealNet 并且拥有Pipelines 。因为Pipelines是中等的，所以这些是我最喜欢的。你可以在这里找到Pipelines (<a href="http://www.quest-pipelines.com/index.asp" target=_blank><u><font color=#0000ff>http://www.quest-pipelines.com/index.asp</font></u></a>)。<br><br>&nbsp; 观察别人是如何经历考验和磨难的是一件好事。假如你有问题，可以自由的在群里提出来。假如你要提出问题，通常应该包括一些信息，比如你的 Oracle版本和Oracle运行的平台。这些将会得到有很大的差别的答案。假如你忘记了，会有人提醒你!甚至你不用提问也可以从其他人的答案中学到许多知识。我已经记不得多少次我之所以能够解决问题完全是因为我记得其他人在新闻组里问过相同的问题。 
<img src ="http://www.cppblog.com/susu/aggbug/141118.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/susu/" target="_blank">学习才能进步</a> 2011-03-04 15:38 <a href="http://www.cppblog.com/susu/archive/2011/03/04/141118.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】触发器使用</title><link>http://www.cppblog.com/susu/archive/2008/04/18/47509.html</link><dc:creator>学习才能进步</dc:creator><author>学习才能进步</author><pubDate>Fri, 18 Apr 2008 08:09:00 GMT</pubDate><guid>http://www.cppblog.com/susu/archive/2008/04/18/47509.html</guid><wfw:comment>http://www.cppblog.com/susu/comments/47509.html</wfw:comment><comments>http://www.cppblog.com/susu/archive/2008/04/18/47509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/susu/comments/commentRss/47509.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/susu/services/trackbacks/47509.html</trackback:ping><description><![CDATA[1、触发器<br><br>定义： 何为触发器？在SQL Server里面也就是对某一个表的一定的操作，触发某种条件，从而执行的一段程序。触发器是一个特殊的存储过程。<br>常见的触发器有三种：分别应用于Insert , Update , Delete 事件。(SQL Server 2000定义了新的触发器，这里不提）<br><br>我为什么要使用触发器？比如，这么两个表：<br><br>Create Table Student( --学生表<br>StudentID int primary key, --学号<br>....<br>)<br><br>Create Table BorrowRecord( --学生借书记录表<br>BorrowRecord int identity(1,1), --流水号 <br>StudentID int , --学号<br>BorrowDate datetime, --借出时间<br>ReturnDAte Datetime, --归还时间<br>...<br>)<br><br>用到的功能有:<br>1.如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关(也就是同时更改借书记录表的学号);<br>2.如果该学生已经毕业，我希望删除他的学号的同时，也删除它的借书记录。<br>等等。<br><br>这时候可以用到触发器。对于1，创建一个Update触发器：<br><br>Create Trigger truStudent<br>On Student<br>for Update<br>As<br>if Update(StudentID)<br>begin<br><br>Update BorrowRecord <br>Set StudentID=i.StudentID<br>From BorrowRecord br , Deleted d ,Inserted i <br>Where br.StudentID=d.StudentID<br><br>end <br><br>理解触发器里面的两个临时的表：Deleted , Inserted 。注意Deleted 与Inserted分别表示触发事件的表&#8220;旧的一条记录&#8221;和&#8220;新的一条记录&#8221;。<br>一个Update 的过程可以看作为：生成新的记录到Inserted表，复制旧的记录到Deleted表，然后删除Student记录并写入新纪录。<br><br>对于2，创建一个Delete触发器<br>Create trigger trdStudent<br>On Student<br>for Delete<br>As<br>Delete BorrowRecord <br>From BorrowRecord br , Delted d<br>Where br.StudentID=d.StudentID<br><br>从这两个例子我们可以看到了触发器的关键：A.2个临时的表；B.触发机制。<br>这里我们只讲解最简单的触发器。复杂的容后说明。<br>事实上，我不鼓励使用触发器。触发器的初始设计思想，已经被&#8220;级联&#8221;所替代.
<img src ="http://www.cppblog.com/susu/aggbug/47509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/susu/" target="_blank">学习才能进步</a> 2008-04-18 16:09 <a href="http://www.cppblog.com/susu/archive/2008/04/18/47509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>