数据库管理员,英文是Database Administrator,简称DBA。这个职位对不同的人意味着不同的意义。一个小的软件开发工作室和一个分工高度明细的大公司相比,DBA的职责来得更加宽泛一些。一个公司,不管它是自己开发应用软件,还是购买第三方的应用软件,只要涉及到数据库(有多少不涉及数据库的应用软件呢?数据库是商业的灵魂和大脑啊),就需要确定是否雇佣一个或几个DBA。知道DBA这个职位有哪些要求,对于企业内部这个职位的定义或者对于那些未来的DBA将是至关重要的。下面我列出了DBA的一些职责:
安装和升级数据库服务器(如Oracle、Microsoft SQL server),以及应用程序工具。
数据库设计系统存储方案,并制定未来的存储需求计划。
一旦开发人员设计了一个应用,就需要DBA来创建数据库存储结构(tablespaces)。
一旦开发人员设计了一个应用,就需要DBA来创建数据库对象(tables,views,indexes)。
根据开发人员的反馈信息,必要的时候,修改数据库的结构。
登记数据库的用户,维护数据库的安全性。
保证数据库的使用符合知识产权相关法规。
控制和监控用户对数据库的存取访问。
监控和优化数据库的性能。
制定数据库备份计划,灾难出现时对数据库信息进行恢复
维护适当介质上的存档或者备份数据
备份和恢复数据库
联系数据库系统的生产厂商,跟踪技术信息。
DBA的个性特点
很多时候管理人员都忽视了DBA的个性特点,他们只关注DBA的技术能力。实际上,上面谈到的每个职责都意味着:DBA需要跟各种人员打交道,这些人员可能是销售商、用户、开发人员或者管理人员。这说明:DBA必须具有下面的个性特点:
自信心
好奇心
坚韧的意志力
老练
自我驱动
注意细节
为什么这些个性特点很重要呢?
我就有几个缺乏自信心的部下,他们反复问我一些事无巨细的问题,他们没有信心哪怕做最小的决定。他们也缺乏工作的主动性。这对于初级DBA来说可能问题不太大,但对于那些高级DBA来说,如果他们缺乏自信心,他们又可以依赖谁帮他们决策呢?在DBA的面试中,即使你不能回答某个技术问题,你也要表现出足够的自信心。最致命的不是不知道问题的答案,而是不知道从哪儿得到答案。
几乎所有的数据库系统都在不停地更新。但并不是所有的更新都有技术文档。对于好的DBA来说,好奇心是必需的。没有好奇心和求知欲的DBA总是等待有人告诉他们答案。而一个求知欲强的DBA将安装最新版本的数据库系统,并立即开始搜寻那些哪怕是细微的功能和性能上的差异和增强,从而改进自己的工作。应试时一个必然问及的问题是:你手头有哪些参考资料?你如何使用它们?毫无疑问,如果你只回答了数据库的文档,或者你甚至没有读过他们,你的"股票市值"将大大下降。好奇心会驱使DBA们理解数据字典(Data Dictionary)、管理工具(Tools)或者其他支持包(Packages)。
DBA常常会碰到棘手的问题。寻找答案是一个需要坚韧意志力、可以经受摔打的个性特点。我常常在一些讨论组或者论坛上看到DBA们提出的问题,这些问题往往是提问者自己可以解决的,如果他们具有坚韧的个性特点,并努力寻求问题的答案。
自我驱动对每个人都是很重要的,对DBA尤其如此。DBA要能想办法使问题出现,而不是等待问题的出现。自驱力强的DBA常常设法取得或者自己写一些必要的脚本(Script)来监控包括数据表大小(Table Size)、表空间使用(Tablespace Usage)等项目,这些项目如果被忽视,他们将遇到麻烦。应试的时候DBA们常常被问及在PL/SQL、SQL或者SQL*PLUS方面的经验,这些问题将把你从从来没有编写过自己需要的脚本的那些DBA们区分开。
不用说和用户,就是和程序员和管理人员打交道,也需要你足够老练。一个一点不会处事的DBA不会为你做什么好事,只会在你的部门点燃敌对情绪的烈火。老练是这样一种能力,你劝告某个人到地府去,哈哈,最后这个人怀着渴望的心情去了。很多时候,开发者、管理者、用户,他们会提出毫无道理的需求,DBA们需要老练地引导、修正它们的要求,说服他们。在应试时,你的应对就很能说明你是否老练。
最后说说注意细节,这种性格倾向非常重要。注意细节的DBA们衣着整洁,有自己的日程安排,在应试前对应聘的单位做过调查。注意细节的DBA们深入了解数据库的内核,并能理解视图、表之间的关系。
SQL SERVER 是可视化的数据库,一般用SQL SERVER 的公司,都是网络、硬件维护员、系统维护员 兼 数据库管理员,不会专属请一个SQL SERVER数据库管理员,SQL SERVER 的管理 备份等都和操作QQ一样,可视化的。
数据库管理员能具备开发能力那更好,没有的话一般也要会写存储过程、触发器和基本的SQL查询。
现在真正需要数据库管理员的,一般是在LINUX/UNIX下管理 ORACLE 等命令式的数据库。 熟悉 LINUX/UNIX 的操作指令,会写SHELL,了解ORACLE 的体系结构,会在命令行下用指令操作 ORACLE, 大企业的数据库不会装在WINDOWS下的,LINUX一般也不会启动图形界面,都是远程连过去用 指令操作。
DBA是一个伟大的工作
下面不是全部列表,但是包括了DBA的典型职责:
· 把监视数据库实例当作每日必做工作以保证其可用性。解决不可用的问题。
· 收集系统统计和性能信息以便定向和配置分析。
· 配置和调整数据库实例以便在应用程序特定要求下达到最佳性能。
· 分析和管理数据库安全性。控制和监视用户对数据库的访问。必要时审计数据库的使用。
· 监视备份程序。必要时提供恢复。测试备份与恢复程序。
· 升级RDBMS软件并且在必要时使用补丁。必要时升级或者迁移数据库实例。
· 通过数据库相关动作来支持应用程序开发人员。
· 跟随数据库趋向和技术。当可应用时使用新技术。安装,测试和评估Oracle新的相关产品。
· 执行存储和物理设计。均衡设计问题以完成性能优化。
· 创建,配置和设计信的数据库实例。
· 诊断,故障检测和解决任何数据库相关问题。必要时联系Oracle支持人员以便使问题得到较好的解决。
· 确保Oracle网络软件(SQL*Net, Net8, Names, OiD)配置和运行的很好。
· 与系统管理员(Unix& NT)一起工作以保证Oracle相关事务得到很好的处理。
· 为有效的,定期的维护数据库创建任何必要的脚本。
都需要学,尤其是ORACLE
最重要的是要学PL/SQL