20年资深Oracle数据库专家:国内应用级DBA的缺失


作者介绍

罗敏,从事Oracle技术研究、开发和服务工作20余年,在Oracle中国公司的10多年,分别在顾问咨询部、技术服务部担任资深技术顾问。曾参与国内银行、电信、政府等多个行业大型IT系统的建设和运维服务工作,为国内主要软件开发商和集成商进行过多场Oracle高级技术应用培训和交流活动。著有书籍《品悟性能优化》、《感悟Oracle核心技术》、《Oracle数据库技术服务案例精选》。

 

1DBA应该干什么?
记得我在1999年在某网站第一次担任DBA工作后不久,公司一位新来的财务总监(CFO)看到我的一份述职报告之后问我:“请问DBA代表什么意思?”

我想现在别说CFO了,整个IT界都应该无人不知数据库管理员(DBA)这个职位了,更深深理解这个岗位对企业的重要性。DBA,即企业最重要的数据资源管理者!俗称“裤头”啊,呵呵。

相比应用开发人员一般承担具体应用模块开发,工作职责、工作范围比较明确,而DBA却给人感觉好像平时无所事事,而只有数据库系统出问题了,才看到DBA救火的身影,给人一种“养兵千日,用兵一时”的感觉。“DBA究竟应该干什么呢?”身为Oracle原厂服务团队,也是为广大DBA提供服务、共同合作最多的我们,经常面临客户领导、技术人员这样的问题。

以下就是我摘录Oracle官方联机文档之一,也是DBA应该最常备的手册《Oracle Database Administrator's Guide11g Release 2 (11.2)》第一章中描述的DBA的11大职责:

  • 评估数据库服务器硬件
  • 安装数据库软件
  • 规划数据库
  • 创建和开启数据库
  • 备份初始化数据库
  • 注册用户
  • 实施数据库设计
  • 备份全功能数据库
  • 数据库优化
  • 下载和安装数据库补丁
  • 迁移和克隆数据库

2国内大多数DBA在干什么?
我想上述11大职责是老外根据国外DBA经验总结归纳而来,不仅体现了国外IT行业分工明确、细致的特点,而且也有一定的学究气。而国内IT行业DBA们都在干什么呢?可能有的国内DBA对上述11大职责不以为然:“我的工作内容比这还要多得多,不仅管数据库,还管中间件和应用,甚至管硬件、操作系统、网络、存储呢。”也有的DBA会感到汗颜:“我们在数据库管理方面还真没有这11大职责这么细致,比如我们可能从来不打补丁。”

以本人的感觉,无论是前者一样面面俱到的通才,还是后者菜鸟一样的初级入行者,其实就DBA本身工作职责而言,国内DBA们都或多或少有缺失,而最大的缺失就是DBA们对应用的缺失,甚至完全不关注。也许原因很多:有国内企业运维和开发两大部门分工和职责过于明确的因素,也有DBA们自身认识偏差的因素。

总之以我的观察,国内绝大多数DBA更专著于数据库系统层面、甚至硬件等,而忽略了对应用的关注。换言之,国内各企业的DBA们其实更多扮演了系统级DBA角色,各企业明显缺乏应用级DBA。我想这也是导致国内IT系统应用级和系统级脱节、IT系统整体质量不高的重要原因。

3应用级DBA需要干什么?
再介绍一个案例:在我们Oracle服务团队为某外企提供应用优化和架构优化等服务过程中,我发现与国内大多数企业DBA一样,该外企DBA也是一个标准的系统级DBA,因为他明显缺乏对应用的深入了解,这种状况在一定程度上影响了整个项目的实施质量和实施进度。于是,我感慨和建议道:“你们公司其实非常需要设置一个应用级DBA岗位。”

没想到这条建议当天就被汇报到该企业的CTO,CTO深受启发,第二天就给我反馈:“请罗老师告诉我们应用级DBA岗位的资质、工作职责、工作范围,我们企业应该如何培养一名合格的应用级DBA?如果我们暂时培养不了,请你们原厂提供有资质的应用DBA专家。”

是啊,应用级DBA究竟做什么?其实多年来,我也一直只是有这种感觉和建议而已,并没有深入思考过这些问题。国内企业也鲜有这种角色可供参考,而且无论系统级还是应用级DBA的工作职责和范围都是需要结合各企业、各单位具体情况进行定制的。尽管如此,本人今天还是斗胆提出如下一些拙见,抛砖引玉,供大家参考。

  • 应用级DBA一定要有多年应用开发经验

首先,应用级DBA一定要有多年应用开发经验,我想这一条大家一定苟同。否则,他无法从应用层面,尤其从IT系统整体视野去看待问题。多年的应用开发经验,更能让他/她能以易于理解的语言与广大应用开发人员沟通。

  • 应用级DBA也一定要具有系统级DBA能力

其次,应用级DBA也一定要具有系统级DBA能力甚至实战经验,我想这一条大家也一定不会有疑义。当然,他/她可能不如一个真正系统级DBA那样对系统层面的细节如此精通。但他/她至少应懂得RAC、Data Guard等技术原理,更能结合应用去看待系统层面的关键问题。

例如他/她应该知道在RAC环境下确保高性能、高扩展性的关键点是尽量减少RAC之间的数据访问冲突,合理的应用部署和数据访问分离是RAC实施成功的重要策略。他/她也应该知道Data Guard的关键因素是日志文件的产生量,他/她考虑的不仅是网络带宽、主机和存储对日志文件的传输和处理能力,他/她更应该考虑如何通过应用优化降低日志文件产生量,从而从源头就确保Data Guard的成功实施。

  • 应用级DBA = 系统架构师 + 数据库设计师 + 应用设计开发专家 + 应用质量控制师

这一条实际上更细化了应用级DBA的工作范围和定位。

从架构层面而言,他/她的确是数据库采用集中式还是分布式架构的重要决策者,他/她还是RAC、Extended RAC、Data Guard、Active Data Guard、Golden Gate等技术架构方案的决策者和总体方案设计者。

从数据库设计角度而言,他/她应该精通数据库逻辑设计基本原则和规范化设计理论,甚至对PowerDesigner、E-R Win、Oracle Date Modeler等模型设计工具都非常熟诣。在数据库物理设计方面,他/她更是对不同数据库平台的物理细节非常熟悉,例如深入了解Oracle表空间、表、索引、Sequence、物化视图等各种类型数据对象的原理和物理属性,还需要了解ASM事例、ASM参数、ASM磁盘组、ASM磁盘文件等诸多系统层面细节。

在应用设计开发和质量控制方面,更应该是他/她的老本行。虽然他/她可能已经不再承担具体应用模块开发工作了,也就是不再是烹制美味佳肴的厨师了,但他一定是位美食家,对各种SQL分析和诊断工具轻车熟路,并能准确定位各类SQL质量问题。更进一步,他/她还应该是应用设计开发规范的编制者和执行者。总之,他/她应该是最关系到IT系统质量的应用设计开发专家和质量控制师。

  • 极强的组织、协调和沟通能力

应用DBA不仅应具备上述全面的知识架构和技能,更应具备极强的组织、协调和沟通能力。他/她不仅是应用开发团队的领导者、组织者,而且也是与客户、测试、运维等不同层面和角色的协调和沟通者,他/她的职责不是只考虑局部利益,而是真正能站在IT系统整体和全局高度,去组织和协调IT系统建设、运维等各阶段的工作,有效处理各阶段、各部门存在的问题、矛盾和纷争。

4应用级DBA与系统级DBA的分工和合作
“罗老师,你这么描述应用级DBA的资质和职责,这样的人太难找了,你们原厂恐怕都没有这样完美的人吧?”是的,世界上很难找到具有这么完美知识结构的通才,那我们还是要从实际出发,特别是从应用级DBA与系统级DBA的分工和合作角度出发,去追求IT 系统更高的目标和境界。

  • 开发和运维是个整体

无论是国企还是外企,无论职责如何划分,我们的确发现大多数企业的开发和运维两个部门都存在着一定矛盾,甚至在某些企业达到了剑拔弩张的程度。这种局面对整个企业的IT系统建设是非常不利的,相互指责、相互推卸责任,甚至相互拆墙无济于事,更是置企业IT系统整体质量于不顾。

  • 应用级DBA与系统级DBA紧密合作的场景

我想还是举几个应用级DBA与系统级DBA紧密合作的具体场景,来加深大家对这种合作重要性的理解吧,也是为各企业开发和运维两大部门如何进行具体合作提供一些参考。

在数据库设计领域,如果系统级DBA也能参与其中,或者至少让系统级DBA知晓数据库逻辑设计和物理设计结果,一定可以充分发挥他/她的技术优势和经验。例如,系统级DBA非常熟悉磁盘系统的划分情况,他/她就可以根据应用情况,提出ASM磁盘组划分原则和实施建议,比如将最主要的交易表存储在性能最好的磁盘组里面,甚至根据ASM最佳实践经验,将这些交易表数据存储在ASM磁盘的最外道,从而更充分满足对这些最核心交易数据的访问性能需求。

如果系统级DBA更能了解应用特征,对他/她的各项运维工作也一定是大有帮助的。例如,当他/她知道主要业务表的访问特征,他/她就可以合理制定分级数据压缩方案了,比如,当月频繁访问数据不压缩;2-3个月访问频度比较低的数据采取OLTP压缩算法;更久远的几乎不访问的数据采取归档压缩算法等。

再比如,当他/她了解了数据变更情况,就可以为数据碎片整理、历史数据迁移和管理、数据备份/恢复等制定出更有针对性、更经济合理、投入产出比更高的技术方案了。例如,我们就会发现国内Oracle系统不会都采取最简单的“全库备份+归档日志备份”策略了,不仅会有“全量 + 增量”,而且还会有快速增量备份(FIB),甚至不仅在库级,而且会根据业务数据分布情况在表空间级、数据文件级设计备份方案了。

反过来,应用级DBA如果能更深入了解系统层面的知识和技术,特别是掌握IT行业最新发展趋势,就更有助于他/她设计更完美的IT技术架构,让应用软件设计更充分发挥新技术的特点和优势了。比如,若他/她了解Oracle 12c推出了In-Memory Option技术了,他/她就可以指导其统计分析和报表开发团队去深入了解这种技术并合理加以运用。若他/她了解Oracle 12.2即将推出水平分布式的Oracle Sharding技术,也知道这种技术主要适合于OLTP交易系统,因此他/她就可以指导其团队将核心交易表设计为Sharded表,并通过Sharding Key进行水平分库了。

其实写到这儿,我自己都有点写晕了,因为虽然各有侧重,但是应用级DBA和系统级DBA其实是你中有我、我中有你的关系。也许在一个企业内部设置两种DBA职位不尽合理,也不一定适合中国国情,但重要的是设计、开发、测试、运维等各阶段和各部门的确是一个整体,只要各个部门、各种角色真正协调合作、良性循环起来了,IT系统整体质量就一定有保障了。

时间: 2024-09-29 16:20:47

20年资深Oracle数据库专家:国内应用级DBA的缺失的相关文章

20年资深Oracle老兵:一个经典老问题在12c中的优化实践

作者介绍 罗敏,从事Oracle技术研究.开发和服务工作20余年,在Oracle中国公司的10多年,分别在顾问咨询部.技术服务部担任资深技术顾问.曾参与国内银行.电信.政府等多个行业大型IT系统的建设和运维服务工作,为国内主要软件开发商和集成商进行过多场Oracle高级技术应用培训和交流活动.著有书籍<品悟性能优化>.<感悟Oracle核心技术>.<Oracle数据库技术服务案例精选>.     1 一个经典老问题 我们先叙述一个经典老问题,也就是在批处理中由于统计信息

oracle数据库一次TB级ERP(ASM RAC)库的恢复案例

首先是客户在rac其中一个节点add disk时,发现在另外节点未添加成功,后面又反复折腾add,甚至dd 盘头进行了add. 最为致命的一个动作是强制add disk,其实在该步骤之前这几个disk已经add过一次,且完成了reblance,但是drop disk 却并未成功,最后客户尝试强制添加,如下: SQL> ALTER DISKGROUP xxxx ADD  DISK 'ORCL:VOL1_xxx' SIZE 2097152M  FORCE , 'ORCL:VOL2_xxx' SIZE

Oracle数据库语句大全

ORACLE支持五种类型的完整性约束 NOT NULL (非空)--防止NULL值进入指定的列,在单列基础上定义,默认情况下,ORACLE允许在任何列中有NULL值. CHECK (检查)--检查在约束中指定的条件是否得到了满足. UNIQUE (唯一)--保证在指定的列中没有重复值.在该表中每一个值或者每一组值都将是唯一的. PRIMARY KEY (主键)--用来唯一的标识出表的每一行,并且防止出现NULL值,一个表只能有一个主键约束. POREIGN KEY (外部键)--通过使用公共列在

Oracle 数据库针对表主键列并发导致行级锁简单演示_oracle

本文内容 •软件环境 •简单演示 Oracle 数据库并发导致行级锁 本文简单演示针对表主键并发导致的行级锁.并发是两个以上的用户对同样的数据进行修改(包括插入.删除和修改).锁的产生是因为并发.没有并发,就没有锁.并发的产生是因为系统需要,系统需要是因为用户需要. 软件环境 -------------------------------------------------------------------------------- •Windows 2003 Server •Oracle 1

关于炉石传说的Oracle数据库故障不要以为你也可以幸免

最近暴雪公司和网易的一则声明刷爆了朋友圈,大意就是由于『供电意外中断的原因而产生故障,导致数据损坏』,这样一则公告引发了一系列的猜想,我们在围观时仿佛人人都是诸葛亮,而事实上设身处地,我想在一次负责任的故障考验下,也许很少有人能够幸免. 如同阿里云会误删文件.京东会泄露数据.支付宝会被修改密码.携程会大面积瘫痪,在灾难来临之前,谁都会觉得自己是幸运者,而事实上,只是措手不及那次灾难还没有来到而已. 先回顾一下<炉石传说>长长的公告,然后我们再基于事实做一下分析吧: 首先,关于暴雪的核心数据库架

《Oracle数据库性能优化方法论和最佳实践》——1.7 Oracle性能优化的神话和误区

1.7 Oracle性能优化的神话和误区 Oracle性能优化工作是Oracle数据库科学最为神秘莫测的领域,自然也就会流传着各种传言和八卦.本书最主要的目的就是真正使Oracle性能优化成为一门严谨的科学,使任何阅读并且理解本书内容的读者可以比较简单地完成Oracle性能优化工作,使自己在其他人面前成为"巫师"或"神秘的对象".1.7.1 艺术和科学 从百度.Google等网站搜索"性能优化艺术",会出现大量的条目,部分Oracle性能优化的图

通过ASP.NET连接Oracle数据库实例教程

通过ASP.NET连接Oracle数据库实例教程 长期以来,我一直用的是 MS SQL Server / Access 数据库,通过.NET 访问MS自家的东西几乎没碰到过什么麻烦.最近项目中要用 Oracle 作为数据库,学习研究了一些 .NET 访问Oracle 的东西,发现问题倒真的不少. 1.System.Data.OracleClient 和 System.Data.OleDb 命名空间 虽然通过这两个命名空间的类都可以访问 Oracle 数据库,但和 SQL Server 类似的(S

用PHP连mysql和oracle数据库性能比较

mysql|oracle|比较|数据|数据库|性能 用PHP连mysql和oracle数据库性能比较 测试硬件说明:测试使用的是我的爱机,配置如下:CPU:C433内存:128M硬盘:酷鱼2代20G 测试软件说明:WIN32下用的是windows nt server4,sp5,apache 1.3.12,php3.0.15和php4rc1,mysql 3.22.29,oracle 8.0.5linux下用的是bluepoint linux1.0, apache 1.3.12, php4rc1,m

Oracle数据库移植时字符集问题的解决

对于Oracle数据库之间的移植采用Oracle的导入导出工具(Import/Export)是一个比较好的策略.虽也可以利用第三方软件如Sybase 的Power designer中的Reverse Engineering 进行数据库结构重建,然后在进行较复杂的数据导入过程,但对于作业队列.快照等则不得不用手工来创建.而Export能将整个数据库.指定用户.指定表和相关的数据字典进行输出,Export输出的输出转存二进制文件包括了完全重建所有被选对象所需的命令. 本人在为某电厂MIS(Oracl