数据库管理员
数据库管理员(data base administrator,DBA)
数据库管理员是指全面负责数据库系统的日常管理、维护和运行的人员。DBA处于终端用户与应用程序员之间,是数据库系统能否正常运转的关键,大型数据库系统需要设置专门的管理办公室。其职责是监督控制数据库的使用和运行,实施数据库系统的维护、改进和重组,开展信息社会化服务。
对于不同规模的数据库系统,用户的人员配置是不相同的。只有大型数据库系统才配备有应用程序员和数据库管理员。应用型微机数据库系统比较简单,其用户通常兼有终端用户和数据库管理员的职能,但必要时也应当兼有应用程序员的能力。
以下就功能面划分出数据库管理员的类型,但以现实面来看,有可能是一个数据库管理员囊括所有项目,也有可能是多个数据库管理员共同分担一个项目,或是交叉负责等。
- 操作数据库管理员(OperationDatabaseAdministrator):其职责是监控和维护所有数据库及服务器的可用性,并对数据库做结构上的改变。例如,新增使用者、调整表空间、新增表格及索引,以及SQLStatement性能调教等属于例行性的事务。
- 应用程序数据库管理员(Application Database Administrator):应用程序数据库管理员也称为数据管理数据库管理员(Data Manage Database Administrator),无论如何称呼,主要工作内容是介于操作数据库管理与作为程序开发人员之间的桥梁,必须对于数据的流向相当清楚明了,对于系统的实体关系模型图(Entity Relationship Model,ERModel)要有很好的掌握度,并能够提供程序开发人员准确的数据整合,同时应用程序数据库管理员也需具备编写数据库程序的能力,如PL/SQL,以提供基础的数据流的转换给程序开发人员使用。
- 解决方案数据库管理员(Solution Database Administrator):其职责是规划最佳数据库解决方案,以确保整个系统最大的效益。例如,规划数据库的联机方式、数据文件在存储媒体要如何摆放、数据库的备援模式、是否需要同步复制数据到另一个数据库,以分担数据库的负荷等。
以下就资历深浅及工作定位划分出数据库管理员的3种定位。
- 初级数据库管理员:初级数据库管理员只具备部分经验或根本没有数据库管理经验,主要工作性质是负责监控数据库及基本的数据库维护。初级数据库管理员的工作大致如下。
- 检查Oracle AlertLog是否有错误信息。
- 资深数据库管理员:通常是指具备多年数据库管理经验的人,对整个数据库甚至整个系统都相当地熟悉,同时对数据库的各种操作及指令也相当纯熟,其对于所接触的层面必定较为宽广,除了每天操作面的工作项目之外,还需负责资料库环境的规划与管理,同时必须了解及协助程序开发人员的需求。资深数据库管理员的工作大致如下。
- 安装数据库服务器及数据库,或是建立标准安装程序,提供资浅数据库管理员进行安装作业。
- 根据资浅数据库管理员整理的报表,发觉潜在的危机,并加以解决或预防,以增强数据库的稳定度。
- 颇问数据库管理员:除了必须对数据库要有深厚的知识外,其特别的价值来自于拥有与其他数据库管理员不曾有过的经验与知识领域,而这些经验和知识对数据库本身,以及相关的应用程序和环境架构来说,又是非常重要的。例如,数据库的性能急速低下,不可预期或极端且急迫的问题,顾问数据库管理员均能够用一个结构化、程序性流程,快速诊断出问题的症结,并同时提供解决方案,而这些都是经验及专业的积累。通常,顾问数据库管理员都是历练过上述各种类型的数据库管理员。顾问数据库管理员的工作大致如下。
- 利用自身积累的经验和专业知识,提供适当的建议与解决方案。
- 强而有力的沟通能力,在企业里顾问数据库管理员必须在许多不同层次的人员之间进行沟通及了解。
- 编写文件并记录解决方案,同时协助建立知识库,以便当相同问题再次发生时,能提供相关人员有所遵循的依据,迅速排除障碍。
以上是就数据库管理员的类型及工作定位而划分的定义,就实际面来看,这3种类型及3种定位往往是交互重迭的,如图所示。
上图显示数据库管理员的定位是按资历由下而上排列的,对应到数据库管理员的类型,越资深的数据库管理员占规划及解决方案的工作比例越重。因此,图形以正三角与倒三角来显示工作比重,而操作数据库管理员与应用程序数据库管理员之间由双箭头连接,代表这两种类型的数据库管理员的工作是互通有无、交互配合的,而对应到数据库管理员的定位,资浅数据库管理员在这两种类型的工作中所占的比例较重。
现今系统架构是大者恒大,盘根错节,因此,必须向上延伸及向下扎根,以现实状况而言,数据库管理员的工作内容有可能被无限延伸或包山包海,受限于篇幅无法一一详述,在此仅就数据库管理员的核心工作内容进行介绍。数据库管理员核心工作内容包括三大方向,其典型的工作内容重点如下。
- 1.规划与建设
- 数据库服务器环境架构评估与规划:服务器环境架构的规划与数据库往后的运作是息息相关的,也就是说,当服务器环境架构先天不良时,将会增加日后数据库性能的限制与维护上的种种困难。因此,数据库管理员在整套系统规划初期,就必须针对数据库未来的成长需求、性能需求及商业考虑等方面,来决定数据库运作上所需的内存、硬盘、CPU及其他资源。例如,在硬件规划时,必须考虑到如何使用RAID、数据文件(Data File)要如何放置,以及在线重作日志文件(Online RedoLog File)要如何放置等,这些都影响到未来数据库运作的性能。
- 安装及升级数据库软件:安装及升级数据库软件是数据库管理员最基本的工作之一,但这并不是代表只需要依照指示单击“下一步”按钮就可以完成的,因为Oracle是个非常强大且复杂的系统,稍有不同的设定,可能牵一发而动全身,影响巨大而深远。因此,在安装Oracle软件时务必了解不同选项所代表的意义,在升级Oracle软件前,要确认是否会影响到操作系统及应用程序。
- 数据库的创建与设置:当安装完Oracle软件之后,就要把数据库创建起来。有些数据库的参数是在创建的当F就必须决定的,日后是无法修改的,因此,创建数据库需要考虑到应用程序的需求,以及操作系统的限制。
- 设计数据库存储方式:数据库创建完成后,此系统便可开始运作,此时要考虑的是数据库存储方式,例如索引、数据、表格要如何摆放,需不需要建立Partition Table等议题,也就是说,必须确定Oracle的物理数据结构弓Oracle的逻辑结构要如何以最佳的方式呈现出来。
- 建立完善的备份计划:数据库管理备份与恢复是数据库管理员最重要的职责之一,当数据库损坏时,整个企业的运作将完全停止,各方的压力及关爱的电话必定会接踵而来,等着数据库管理员发挥神奇的魔力,将数据库在第一时间恢复,而完善的备份计划将能让数据库管理员拥有这股神奇的魔力,因此,规划备份时必须考虑到系统的重要性及企业可承担的风险。Oracle拥有数种不同的备份方式,可交互运用,相关内容请参阅“第3篇Oracle数据库的备份与恢复”。
- 建立数据库安全性管理规范:这里所说的数据库安全性管理规范是指将数据分门别类,将适当的数据提供给拥有适当权限者,例如,将对象拥有者(Schema Account)独立出来,再依照不同的账号需求赋予适当的权限。
- 2.营运与维护
- 建立及维护数据库使用者与所有对象:一旦新使用者必须存取数据库,或当原有使用者有权限变更需求时,数据库管理员就必须按照安全性管理规范,给予适当的存取权限。当使用者有新增、修改或删除Oracle对象的需求时,数据库管理员除了按照使用者的需求作异动之外,尚需给予适当的权限与存储摆放方式。
- 检查数据库备份是否成功地执行及确认备份的有效性:数据库管理备份与回复是数据库管理员最重要的职责之一,因此,当有了完善的备份计划后,就必须监控备份是否有按照时程且成功地执行完成,单是监控备份仍然不够,还需要定期将备份拿出来作恢复测试,以确保备份的可用性。
- 控制和躲控使用者对数据库的存取状况与使用数据库资源:使用Oracle对象Profile将使用者分成不同等级,依照等级的高低提供不同的数据库资源,所谓的数据库资源包括CPU使用量、内存使用量、联机时间等,而监控使用者对数据库的存取则利用PL/SQL里的Trigger或Procedure,当不正常地存取时,可实时发出警告。
- 监控数据库的性能、存储状况及可用性:数据库管理员需时时监控数据库的性能、存储状况及可用性,套旬郭台铭说过的一句话“魔鬼都在细节里”,在大多数情况下,数据库在运作中断前都会有一些细微的征兆,因此,当征兆出现时,若能及时分析及处理,就可以避免系统不必要的中断及损失。
- 数据库安全性的监控:善用Oracle提供的LogonTrigger,确认或记录使用者的身份,避免数据的窃取及确保企业的安全。
- 3.障碍排除与灾后恢复
- 调整数据库性能:数据库的性能可用与否,最终都是由数据库的执行效率与稳定性来判断的,而数据库性能问题经常在设置初期无法一一地显现出来,当运作了一段时间后,可能由于外在环境改变、使用者增加、数据累积快速、程序改写,甚至硬件设备老旧等因素,都会让数据库显露出疲态,此时,数据库的性能调校对数据库管理员就显而亦重。
- 灾后恢复:数据库灾后恢复的定义其实是很,一泛的,小到使用者不当修改或删除数据,大到硬件损坏、天然灾害或其他不可预期的灾难造成数据库无法正常运作等,数据库管理员有责任在最短的时间内将数据库从各种不同损坏的状况中复原,这是非常重要的,这也是为什么我们一再强调规划备份、监控备份及定期测试备份的重要性。所谓养兵千口,用在一时,此刻就是显示数据库管理员平日努力的价值所在。
以上所讲的都是针对数据库管理员应具备的专业技能,作为一个数据库管理员,除了坚实的数据库管理技术技能外,还必须具备下列的认知与特性。
- 1.数据库管理员应具备的认知
- 24小时待命,手机无法关机:大部分的数据库都是24小时营运的,但数据库出现问题并不会特别选择在白天上班时,因此,大部分的数据库管理员必须要随时待命,以解决突发状况。
- 非朝九晚五的工作:数据库管理员常常需要针对数据库执行维护、版本升级或是支持系统升级等数据库必须暂停才能执行的任务,通常这些任务必须选择在对企业营运伤害性最Jl,fl勺时段来进行,往往是在深夜、清晨或假日。
- 十年寒窗无人问,一举成名天下知:数据库管理员的工作价值实在是可用“十年寒窗无人问,一举成名天下知”来形容。当系统作业及性能都不错时,没有人会注意到数据库管理员平H花了多少精神与心力呵护数据库,一旦有问题发生造成营运停止,则数据库管理员的一举一动马上就会成为众人的焦点。
- 一心多用:一个企业信息部门里可能有上百位程序设计师,但数据库管理员却屈指可数,因此,一位数据库管理员通常会负责数套系统的数据库,但总有川流不息的程序设计师向数据库管理员寻求问题的解决方案,数据库管理员常需要中断手边的工作,给予适当的协助。
- 自动自发及注意细节:自动自发对每个人都是很重要的,对数据库管理员尤其如此。数据库管理员要能想办法促使问题出现,而不是等待问题出现,但这样还不够,在大多数情况下,数据库运作中断前都会有一些细微的征兆,不要放过任何可疑的问题、解决及了解发生原因,做到预防胜于治疗。
- 2.数据库管理员应具备的特性
- 坚强的抗压力性:数据库管理员常常是解决问题的最后一道防线,当发生问题造成运作停止时,最常看到的景象就是数据库管理员一边讲着电话,一边双手飞快地下着指令,旁边站着数个不断徘徊及等待的人。这意味着数据库管理员最重要、最关键的工作往往是在数据库出现问题时,数据库管理员必须在众人的焦点下解决问题,承受巨大的精神压力,因此,抗压性对数据库管理员来说非常重要。
- 自信心:数据库管理员常常需要做出大大小小不同的决定,自信心非常重要,而自信心的培养是从平日的维护工作、专业知识及对系统的了解程度所积累起来的。
- 强韧的意志力与耐心:数据库管理员有时会碰到棘手的问题,而这些问题的形成常常是由多方面的原因造成的,因此,要了解这些问题需要长时间的监控,进而解决。
- 永无止境的学习心:几乎所有的数据库都在不停地更新,每隔一段时间就有新的版本和功能出来,而求知欲强的数据库管理员将会进行安装及测试最新版本的数据库,并立即开始寻找功能和性能上的差异,从而改进系统性能,甚至帮企业取得最大利益。对于一位优秀的数据库管理员来说,学习心是必需的。
- 待人圆融,处世坚定:数据库管理员的角色像是一座桥梁,桥梁的一端是程序开发人员,另一端是硬件工程师。很多时候,程序开发人员、系统管理者,甚至使用者会提出毫无道理的需求,数据库管理员必须圆融地引导、修正及说服他们,但同时也能坚持管理规范。
- ↑ 吴冲龙.地质信息技术基础[M].清华大学出版社,2008.8.
- ↑ 2.0 2.1 2.2 2.3 张天慧.专家精讲:Oracle数据库管理与维护[M].电子工业出版社,2009.01.