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

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:


作者介绍

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

 

1 DBA应该干什么?

记得我在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系统整体质量就一定有保障了。

本文来自云栖社区合作伙伴"DBAplus",原文发布时间:2016-08-01

目录
相关文章
|
17天前
|
Oracle 关系型数据库 Linux
【赵渝强老师】Oracle数据库配置助手:DBCA
Oracle数据库配置助手(DBCA)是用于创建和配置Oracle数据库的工具,支持图形界面和静默执行模式。本文介绍了使用DBCA在Linux环境下创建数据库的完整步骤,包括选择数据库操作类型、配置存储与网络选项、设置管理密码等,并提供了界面截图与视频讲解,帮助用户快速掌握数据库创建流程。
197 93
|
3月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
29天前
|
SQL Oracle 关系型数据库
Oracle数据库创建表空间和索引的SQL语法示例
以上SQL语法提供了一种标准方式去组织Oracle数据库内部结构,并且通过合理使用可以显著改善查询速度及整体性能。需要注意,在实际应用过程当中应该根据具体业务需求、系统资源状况以及预期目标去合理规划并调整参数设置以达到最佳效果。
96 8
|
3月前
|
SQL Oracle 关系型数据库
比较MySQL和Oracle数据库系统,特别是在进行分页查询的方法上的不同
两者的性能差异将取决于数据量大小、索引优化、查询设计以及具体版本的数据库服务器。考虑硬件资源、数据库设计和具体需求对于实现优化的分页查询至关重要。开发者和数据库管理员需要根据自身使用的具体数据库系统版本和环境,选择最合适的分页机制,并进行必要的性能调优来满足应用需求。
127 11
|
3月前
|
Oracle 关系型数据库 数据库
数据库数据恢复—服务器异常断电导致Oracle数据库报错的数据恢复案例
Oracle数据库故障: 某公司一台服务器上部署Oracle数据库。服务器意外断电导致数据库报错,报错内容为“system01.dbf需要更多的恢复来保持一致性”。该Oracle数据库没有备份,仅有一些断断续续的归档日志。 Oracle数据库恢复流程: 1、检测数据库故障情况; 2、尝试挂起并修复数据库; 3、解析数据库文件; 4、导出并验证恢复的数据库文件。
|
3月前
|
存储 Oracle 关系型数据库
【赵渝强老师】Oracle RMAN的目录数据库
Oracle RMAN默认将备份元信息存储在控制文件中,但控制文件损坏或丢失会导致恢复失败,且备份增多会使控制文件无限增长。为解决这些问题,Oracle引入了RMAN目录数据库(Catalog Database),专门用于存储RMAN备份的元信息。使用目录数据库可提升备份管理效率,支持多数据库共享、长期备份历史记录存储,并可保存RMAN脚本。本文详细介绍了如何创建目录数据库、注册目标数据库及其操作步骤。
|
4月前
|
存储 Oracle 关系型数据库
oracle数据恢复—oracle数据库执行错误truncate命令的数据恢复案例
oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原报错等。下面和大家分享一例oracle数据库误执行truncate命令导致数据丢失的数据库数据恢复过程。
|
6月前
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
1183 28
|
6月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的闪回数据库
Oracle闪回数据库功能类似于“倒带按钮”,可快速将数据库恢复至 earlier 状态,无需还原备份。本文介绍了闪回数据库的使用方法及实战案例:包括设置归档模式、开启闪回功能、记录SCN号、执行误操作后的恢复步骤等。通过具体 SQL 操作演示了如何利用闪回数据库恢复被误删的用户数据。注意,使用此功能前需确保数据库为归档模式。
167 9
|
7月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle数据库的闪回表
本文介绍了Oracle数据库中的闪回表(Flashback Table)功能,它能够将表的数据快速恢复到特定时间点或系统改变号(SCN),无需备份。文章通过实战示例详细演示了如何使用闪回表恢复数据,包括授权、创建测试表、记录时间与SCN号、删除数据、启用行移动功能、执行闪回操作以及验证恢复结果等步骤。同时,还展示了如何通过触发器禁止插入操作,并在闪回过程中处理触发器的启用问题。文末附有视频讲解,帮助读者更好地理解闪回表的使用方法。
242 10

推荐镜像

更多