DBA

      大杂烩 2006-2-21 13:42
程序员到数据库管理员国内某企业设计了一套大型进销存系统,包括业务处理平台、内部管理平台和财务处理平台。后台数据库采用AIX4.3.0 + Oracle 数据库,前台采用JAVA进行应用程序开发。开发完成后,项目测试没有发现什么问题。但实际投入运行后,发现用户稍稍增多,达到一百左右的并发连接后,CPU占用就从10%逐渐增大到100%,数据库负载急剧升高,最终停止响应,为此每天要重新启动两到四次数据库。整个公司不仅经常中断很多事务,而且因为系统处理速度慢,很多员工白天做不了业务,只能晚上加班,财务部门也无法正常运行,这让公司恼火不已。无奈之下企业找到了太阳之子公司总经理、资深数据库专家(Senior Database Administrator)范生和他的团队,希望通过优化数据库性能来解决问题。大型数据库的优化要按照一定次序进行:依次为系统设计优化、应用程序优化、内存区优化、磁盘优化、I / O 优化、操作系统优化(Design -> Application -> Instance ->Disk -> I/O -> Operating System)。但该企业考虑到重新修改设计耗费巨大,因此尽管设计存在不合理之处,也只能从程序部分开始优化。该公司数据量在8G 左右,在国内属于比较大型的数据库。范生首先给系统重新做了文件部署,将物理文件、日志文件、控制文件进行合理分布,并将系统数据和用户数据按照不同职能重新划分。范生表示,数据库管理员(DatabaseAdministrator,以下简称DBA)要考虑数据的流动,把数据负载较高的部分单独存储,这样才能降低磁盘调用中的争用现象,避免对同一数据文件的大量存取而引发的数据库并发性能的降低。接下来,他又修改了某些数据库表之间的关系,调整了内存区的各种参数。为了避免单操作关联多表造成的效率低下,范生采用了部分冗余数据加上同步的功能进行处理,并采用全局临时表实现并发访问操作,将单一线程转化为了多线程访问。他们还通过修改代码把数据库的一部分负载转移到第二层的应用程序服务器上。最后一步,就是修改大量低效的数据库访问语句和过程、函数。经过一个月的优化工作,该企业的数据库性能逐渐好转,最终一个月也不需要重新启动一次了。资料:大型数据库并没有一个准确的定义。最初只要是GB或者TB级就可以称之为大型数据库。后来国际级组织提出,在18小时之内不能完全从归档日志中恢复出完整数据库的时候,就说明这是一个大型数据库。按照这种说法,软硬件和操作系统的执行效率都成为重要指标。随着硬件水平的提高,数据库就可以无限增大。国内DBA 现状上面的故事仅仅讲述了DBA工作的一方面,实际上,DBA的职责包括了很多,比如:1.安装和升级数据库服务器(如Oracle 、Microsoft SQLserver),以及应用程序工具。2.数据库设计系统存储方案,并制定未来的存储需求计划。从程序员到数据库管理员策划/本刊编辑部撰文/闫辉从程序员到数据库管理员Progr ammer 2003.02 17人物& 报道3.开发人员设计了一个应用,就需要DBA来创建数据库存储结构(tablespaces)。4.开发人员设计了一个应用,就需要DBA来创建数据库对象(tables,views,indexes)。5.根据开发人员的反馈信息,必要的时候,修改数据库的结构。6.登记数据库的用户,维护数据库的安全性。7.保证数据库的使用符合知识产权相关法规。8.控制和监控用户对数据库的存取访问。9.监控和优化数据库的性能。10.制定数据库备份计划,灾难出现时对数据库信息进行恢复。11.维护适当介质上的存档或者备份数据。12.备份和恢复数据库。13.联系数据库系统的生产厂商,跟踪技术信息。然而,现状显示,在国内很多软件公司中,DBA除了要做数据库管理外,还要做很多程序员和系统分析员所做的工作。另外一种情况是,某些企业中的数据库管理由网络工程师来负责,而数据库的开发由程序员来兼任。这些公司往往认为,DBA的工作就是需要的时候做数据库规划和备份恢复而已,因此不必设DBA职位,即便设置,薪水也很低。因此,企业领导者的出发点就决定了DBA能否坚持自己的岗位。DBA的终极目标是在设计完成后,所有的备份、恢复、归档日志都有序的排列在计划任务中,自动完成这些工作,减少人工的干预。如果一个DBA的大部分时间被技术服务占据,那就很少有时间钻研新技术,对其未来的发展很不利。实际上,DBA除了维护工作外,还需要参与数据库的设计和测试工作。数据库设计不应由系统分析员做,而是应由DBA负责,而且要与需求组捆绑在一起。因为DBA需要了解需求,考虑数据的业务量、并发事务、连接,以及企业能够承担的人力成本和运营成本,这样才能把握数据流逻辑,提供一个比较恰当的设计方案。下面就是数据库结构设计和行为设计的示意图(左下)。大型数据库要稳定运行,测试必不可少。数据库测试分为四部分:开发中的测试(Development Test)、系统测试(System Test)、压力测试(Stress Test)和验收测试(Acceptance test)。系统测试主要是根据业务状况跟踪数据走向,保证其完整性和准确性。因为国外的测试软件价格昂贵,而国内还没有很好的压力测试软件,所以一般采用国外的免费测试软件或者微软提供的Stress Tool 软件。有条件的公司,还会自行编写测试程序。DBA工作中还有一项很重要的内容,这就是培训程序员做数据库开发。程序员往往对数据库底层并不了解,所以编写的过程代码容易低效,还可能存在漏洞。一般来讲,DBA刚加入开发团队时,有时项目团队会认为DBA有些多余,另外DBA也因为要指出程序员代码中的低效问题,所以很容易受到排挤。不过一旦解决好与团队的融合,树立了威信,DBA比较容易成为项目经理。资料:DBA可以分为三个等级:分别是初、中、高级。初级DBA:初级DBA又称为DBBS,是英文Database BabySitter的缩写。他们有一定的理论基础,但对数据库的理解和体验仅限于某一特定的数据库产品,并在这一产品领域担当DBA角色,进行如管理、备份与恢复、数据存储与传输方面的工作。此层次仅可以把数据库作为谋生手段,而在技术水平,经验都较缺乏,今后还有很长的路要走。中级DBA:中级DBA往往从业一年左右,熟悉某种操作系统环境下的数据库。他对数据库理论有较全面的研究,对一到两种数据库产品具有管理经验,能够管理大中型数据库项目的运营,熟悉系统管理、网络管理。通常没有软件工程的经验,不能独立完成数据库设计。中级DBA往往同时兼任数据库程序员,他们的工作对性能、稳定性、安全性的追求基本上不是很高,往往配合高级DBA做一些例行工作。高级DBA:高级DBA 在国内是非常少的。高级DBA 一般都熟悉很多种操作平台下的几种大型数据库。他们知道各种不同数据库在不同环境下的优势和劣势,并能在数据库平台和数据库环境的选择方面做出决策。他们一般通晓系统架构和数据库设计,并能对数据库进行各种级别的优化。高级DBA一般都配有助手,他们更偏向做决策和计划。高级DBA往往在银行业、保险业、在线交易等对稳定性、安全性、性能都要求比较高的关键业务处理领域大显身手。PROGRAMMER18 www.csdn.net/magazineDBA还需要积累经验,其中包括大型项目的总结和平时管理脚本的总结,多方面的积累才能成为一个优秀的DBA。DBA 认证要做DBA工作,最有效的途径就是通过DBA的认证。对于认证,数据和系统管理独立咨询专家Howard Fosdick表示,因为所有认证支持商都控制着自己产品的认证,所以你不得不接受"公司认证"这一现实。因此在你决定花费时间和金钱参加认证之前,最好还是对这几种认证进行一些比较。下面列出一些数据库产品认证的对比数据。有位来自天津的程序员做了三年开发后,到北京参加Oracle的培训。他的意图是想通过参加培训通过考试,获得证书,进而通过证书的含金量去获得DBA的职位。然而事情并不是想象的那样简单,因为他对数据库体系了解的太少,十多天培训中的很多知识点对他来说都是陌生的,没有基础,课程的吸收自然很不好,再加上需要背诵的内容过多。因此,在他参加完培训之后,除通过程序设计外,其他各门考试始终无法通过,两次失败之后只能再回去潜心研究了。对于初学者来说,首先要选择一种数据库产品,这些产品都可以在相关的网站上下载试用版本,然后根据产品使用手册搭建起数据库学习环境。书籍需要有一本数据库管理员使用手册,一本针对某种数据库产品的核心指南,一本讲述数据库编程的书,一本讲述性能优化的书。不过更重要的是要学习产品文档。国外数据库产品的文档非常丰富,每个技术细节,如多线程处理、备份恢复都有一套完整的文档,而且这些文档写的深入浅出。范生说,其实这些文档的浓缩版就是认证教材。Howard Fosdick表示,是不是考DBA认证在很大程度上靠个人做决定,因为花费和收益都是个人的。你不妨拿一张表格,把各项花费和带来的好处都列举上,然后标注上重要还是不重要,最终再做出决定。DBA 成长数据库技术是不断累积的技术,一种新技术的出现不会冲淡已有的技术。比如,PLSQL在Oracle7.3的时候就非常盛行,有人怀疑在Oracle 8或者Oracle 9i会不会失去。Oracle公司表示,尽管现在推行SQL-J(一种以Java为主的技术),但PLSQL和SQL-J地位是平等的。因此DBA越老越有自己的竞争力。相比较而言,编程领域变化性较大,延续性差一些。然而作为OCP和MCDBA的认证讲师,范生认为,DBA认证只是起点,绝不是终点。范生建议,DBA不要把自己捆绑在某种产品上,这样才能保证掌握的是数据库技术,而不是基于某种产品的技术。数据库有很多产品,这些产品看似孤立,其实是有很多联系。技术的联系保证了产品的联系, 比如微软有自己的SQL,Oracle也有自己的SQL,这两种语言很相似,因为他们都是遵从ANSI SQL-92标准这根纽带进行扩展的。作为一种产品的DBA,只要对其他产品潜心研究一段时间,就会发现这些产品的相通之处。产品更新换代时,DBA也需要用技术眼光去看待。比如Oracle 从8i版本到9i,很多知识点已经消失,像数据库的缓冲计算方式直接用DB_CACHE_SIZE 来表示了,但其本质是没测试和考试花费厂商认证考试科目单门费用总体费用Ora cle OCP-DBA 5 $ 125 (1) $ 625IBM DB2 DBA 2 $ 120 (2) $ 240Micro soft MCDBA 4 $ 100( 1,3) $ 400各种DBA认证对比厂商DBA认证主要的好处缺点IBM 适用OS/390的DBMS,灵新出现的认证项目,意味着活的认证程序,费用低。其市场接受度还不确定。Oracle 广泛的应用在Unix和Windows服务器,最受市场认需5门测试,费用最高。可的DBA认证。Microsoft 和其他的微软认证很好只适用于Windows服务器,的契合和重叠,通过任需要不断跟随Windows何一门考试都可以获得服务器和SQL服务器而进行MCP的认证。升级,否则就会被取消认证。认证网址厂商网站认证支持网页Ora cle www. oracle .com www.o racle.com/education/certificatio n/index. htmlIBM www.ibm.com www-1 .ibm.com /certify /certs/d b_index. shtmlMicro soft www.m icrosoft.com www.m icrosoft. com/trainingandserv ices/认证的"秘密"厂商通过认证的"秘密"Oracle 在www.selftestsoftware.com购买测试题CD。在www.oracle.com/education/certification/index.html学习Oracle的在线模拟试题IBM 学习官方的认证指南,可以在www.phptr.com 搜索"DB2"的关键词。在IBM的站点下载IBM的免费DB2课程www-4.ibm.com/software/data/db2/selfstudyMicrosoft 从www.transcender.com购买测试题CD,在微软的Windows Server和SQL Server站点购买微软的自学课程套件www.microsoft.com/trainingandservices/系列专题Progr ammer 2003.02 19人物& 报道有变化的,理论还是延续的。数据库技术又是博大精深的, 当你深入学习大型数据库到一定层次的时候, 就会发现眼前出现了另外的广阔天地, 这就是数据仓库(Data Warehouse) 和数据挖掘(Data Mining)。数据仓库和数据挖掘软件在国外的市场已经达到200亿美元,发展空间巨大。国外著名软件企业SAS专门做数据挖掘,在市场上处于垄断地位,一套软件的价格可以达到几百万美元。作为DBA,如果有一定空闲时间,而且基础还不错,可以先下载数据库仓库的软件,阅读产品文档,通过实际操作来了解数据挖掘,因为未来很多行业都需要这种服务。在职业发展方向上,DBA的空间同样广阔。他可以成为DBA等级数据库系统初级DBA年薪( 万元) 中级DBA年薪( 万元) 高级DBA年薪( 万元)Oracle 4 8 11Microsoft SQL Server 3 5 8IBM DB2 4 8 10Sybase 3.5 6 8Informix 4 7 10数据库的咨询专家和顾问。Oracle的最高级认证-通晓数据库和财务知识的Financial Consultant在国外就属于非常高级的职位。很多CIO(chief information officer)也都是做数据出身,因为CIO就是给CTO和CFO提供数据支持的,这些都是DBA可能的发展方向。有很多因素可以影响作为DBA的薪资水平,下面国内和国外的DBA薪资调查表。(仅供参考)国外DBA薪资MicrosoftMCSE:6.5万美金~7.7万美金MCSD:6万美金~8.5万美金MCDBA:6万美金~8.5万美金MCP:3.2万美金~4.5万美金OracleOCP DBO:3万美金~4 万美金OCP DBA(8i):7万美金~10 万美金OCP DBA:7万美金~10 万美金OCP Application Developer:8万美金~10 万美金(资料来自IDC)国内DBA薪资资料:数据仓库的概念最初出现在20世纪80年代中期,数据仓库之父W.H.Inmon在《建立数据仓库》一书认为数据仓库就是面向主题、集成、稳定、随时间不断变化的数据集合,用以支持经营管理中的决策制定过程。这方面有一个经典案例:美国某大型超市通过数据仓库反应出一个现象,就是周五黑啤酒和一次性纸尿布的销量都比平时要多,但开始超市并不知道两者之间有什么关联。后来经过调查发现,每到周末的时候,当地的女主人都会要求男主人去给小孩子买纸尿布,而男主人会顺手购买两打黑啤酒。知晓了两种产品之间的关系之后,工作人员将两种产品有机的摆放在一起,第二个月这两种产品的销售额果然大增。
标签集:TAGS:
回复Comments() 点击Count()