DBA的那些事

--Author:Leshami   
shell

--Blog    :http://blog.csdn.ne/leshami
数据库

      提及DBA,全称是Database Administrator,不是Doctor of Business Administration,千万不要误解,那但是天壤之别!尽管如此,不少人依然认为有着神秘的面纱,高深莫测,花环簇拥,是收入丰厚的一族人。实则否则,DBA说白了就一修理工。修理啥呢,不是车床机床,也不是修理啥精密仪器,修理的是数据库,仅此而已。DBA这个行业一样也经历了由萌芽,发展到鼎盛的过程。尤为是近2年海量数据的井喷以及新数据库时代,云数据时代,DBA 2.0时代的兴起。以及最近所谓后DBA时代的说法。说到DBA的工做,咱们先得搞清当前几类经常使用的数据库。主要有两大阵营,一类是SQL,学过计算机的人应该都知道,传统数据库,诸如Oracle,DB2,MySQL,SQL serer等主流数据库。面对的是那些传统行业,好比证券,银行,电信等使用的居多。另外一类是NoSQL,诸如Hadoop,MongoDB,CouchDB等,主要用于互联网行业,如在线社交系统,Amazon 的Dynamo等。对于当前这两大阵营,貌似有划江而治之势。让人难免眼花缭乱。究竟何去何从,应当更多或更深的思考,这是一个比较大的话题,暂且不表。本文主要描述一下传统DBA的那些事,也就是DBA的工做范围与职责,更多的围绕Oracle展开。本文主要从六个方面来简要描述DBA的工做。安全

1、数据库的总体设计与规划
      有如建造一座豪华的宫殿同样,宫殿还没有动工以前,其选址,结构布局,空间利用,方位设计等必须先有一套完整的方案。数据库的规划与设计一样如此。良好的数据库架构设计直接影响到基于该数据库业务系统的总体性能。而这个架构设计又来源于对业务有详尽的需求分析,从而对现实需求进行综合、概括与抽象并造成完整的E-R图,再由E-R图转换为相应的逻辑模式(表、视图定义等,考虑范式要求)。同时也根据业务的初期、中期及后期考虑合理的数据库存储规划以及根据数据库负载、重要程度考虑使用单实例数据库、集群、复制、镜像等等高可用策略。固然,对于数据库运行平台环境等也是一个比较重要的选择。大多数状况下,数据库的总体设计对大多数DBA而言没有机会来接触或实战,尤为是设计E-R图以及表、视图定义等,这部分一般都是由专业数据库设计人员或开发人员来完成。所以本文对此也是初步描述。若是有机会参与,不要放过。
性能优化

2、安装升级、迁移部署
一、安装数据库。这个是最起码的要求了。就比如那些个developer,最开始的代码,第一句是"hello world"同样。这个是你必须会的,要掌握的。若是是SQL server安装部署就相对简单,所有图形化界面搞定,并且美观赖看,功能也很强大,电信移动也有在用。这类数据库容易上手,这也是Microsoft的强项之一。惟一的缺憾就是不能垮平台。与之相比的复杂的安装部署那就是Oracle,DB2,MySQL等这几类数据库了。先得把整个环境搭建好,诸如内核参数,环境变量,rmp package之类的搞定,没得一个安装参考手册,有得你整。尤为是部署生产环境,每个参数都得结合其数据环境考量规划。这个须要必定的经验。缺省值有时候不必定能知足现状。尽管如此,跨平台特性则成为这几类数据库被普遍使用的重要缘由之一。管得你Windows,Linux,仍是Unix,都有对你胃口的。
网络

二、升级数据,更新patch等等也是司空见惯之事。那个Bug多的是难以数计。有道是,白天监控数据库,夜晚挑灯战bug。这个部分比较重要的是须要考虑更新patch等以后产生的影响以及作好回退措施。谁都难以绝对保证实地球明天照样转。因此得靠本身把握。架构

三、数据库迁移。这种情形也是常见之事。随着业务的增长,对性能要求的提升,以及更新换代,须要升级不得不实施数据库迁移。老牛拉破车老是入不敷出,影响业务。迁移也是一个比较耗大的工程,尤为是大型数据库,上TB级的。好比使用导入导出,尽管操做命令同样,但大型数据库你得考虑的更多。诸如考虑使用并行,如何优化这个过程的性能,整一steps彻底有必要。数据库设计

3、监控数据库
      除了合理的部署数据库以外,透过对数据库不一样部分、组件的实时监控,咱们能够及时采起补救措施以及防患于未然的策略来保障数据库持续、稳定、健康平稳运行。所以系统监控对于DBA而言,一样重要。下面先描述数据库级别的监控,后描述系统级别监控。这些部分一般包括如下内容:
      数据库告警日志的实时监控,绝大部分Oracle错误信息都会记录于此。所以监控告警日志显得尤其重要。
      数据库实例状态监控
      数据库监听器的实时监控
      表空间的使用率实时监控
      闪回区或归档日志监控(若是有使用到闪回区,归档主要是针对归档空间空间问题,如不足,如用hang住)
      数据库备份或恢复监控
      无效对象的监控与处理
      操做系统CPU/IO/Memory监控
      对于监控工具的选择Oracle OEM提供了完美的图形化界面以及设定阀值来实现自动预警。固然也能够本身编写shell脚原本定时完成。对于SQL server一样能够基于GUI来完成。比较好的工具你们能够借助于Toad,Spotlight,Myora等优秀工具得到包括sga,pga,top SQL,instance等等更为详细的信息。除了实时监控以外,按期巡检也是有必要的。这就比如机器或汽车,得进行按期的保养。这样子能够发现隐性的或未决的问题,以及如何改善当前数据库。
工具

4、保证数据库完整性
      不求有功,但求无过。这个对于DBA来讲是最起码的一点。不少时候咱们无心中不当心的rm,drop等等有时候会带来灾难性的后果。永远不要有机会给上司开国际玩笑,那就是你不当心的整坏了生产数据库,并且尚未备份,这就丢大了。所以DBA的细心,数据库的按期备份是相当重要的。尤为是对于那些数据库是企业核心命脉的企业,每一步操做都尽量思前想后。对于数据库的备份方式有多种多样,并且有诸多第三方备份方式。即使如此,每种数据库自带的备份方式是必需要掌握的。对于SQL server而言,自带的图形化备份设计基本上能够知足绝大多数需求。须要搞清数据库的恢复模式以及全备,增量等方式,固然掌握bcp命令也是颇有必要的。对于Oracle,datapump,冷备,热备,rman备份几种最好都所有掌握,多多益善。数据库的备份策略主要依赖于对数据丢失的容忍度来决定。也就是说合理的备份策略基于数据库恢复所须要的全部相关的东东。所以备份策略应具体情形具体分析。按期的监控数据库的备份以及作灾备测试等来确保数据库的备份与恢复是完整无误的。
oop

5、性能优化与调整
      业务运行缓慢,客户抱怨不断。这是DBA们常常头疼的问题。尽管总体性能并不彻底取决于数据库,但数据库仍然是相当重要的一环。并且性能的问题从整个业务需求分析,数据库架构设计的那一刻起直至数据库生命周期的终结。尤为是随着业务量的不断增长致使的性能问题日渐显现并表现的异常突出。正所以,对于一个优秀的DBA来说,仅仅从数据库层面来把控性能是远远不够的;对存储,操做系统,网络,业务的了解与掌握才能对性能调整作到有的放矢,应用自如。深圳有句展示特区精神的口号,时间就是金钱,效率就是生命。一样适用于在线交易数据库系统。下面仅仅从数据库层面来谈谈性能调整与优化涉及到的方面。
      操做系统内核参数优化与调整
      基于不一样的特性使用raid部署不一样类型文件
      分开存储数据和索引文件以及均衡I/O
      调整数据库以及实例级别初始化参数
      使用分区表处理海量数据以及滑动窗口归档
      消除行连接与行迁移
      使用索引、提示或物化视图调整SQL访问负载
      调整优化器统计信息
      经过调整PL/SQL以提供性能
      使用并行技术提升性能
布局

6、Troubleshooting
      天有不测风云,人有旦夕祸福。数据库运行的过程当中总不免出现这样或那样的问题。一是因为数据库软件及运行环境等产生的各类bug或隐性问题,二是人为的问题一般也不在少数。所以,如何快速定位并解决这些问题也是衡量一个DBA水平的重要指标。处理这些棘手的问题,须要DBA有大量的知识和经验的积累。尤为是对数据库理论以及数据库体系结构应该有较深入的认识,把握其本体,何愁不能应用自如呢?在这里只说明Troubleshooting是DBA常常面对的问题,并未描述如何Troubleshooting。下面列出几类较为较为常见的须要Troubleshooting的问题。
      告警日志中的异常处理
      监听器相关的异常处理
      数据库备份恢复期间的异常处理
      Oracle job运行异常的处理
      数据库突发的异常处理,如数据库hang,某个时间段性能低下                      
      集群管理中的异常处理                                                                                  

      DataGuard数据库日志传送,恢复等异常处理
      用户报告的异常处理
      数据库安全的异常处理

  上面主要从6个方面简要的描述了DBA的工做及其职责范围,固然还有更多的细小的问题在此再也不赘述。  总之DBA的工做也很繁琐,须要沉着冷静应对,三思然后行,尽量地从总体出发,从全局出发来考虑问题。

相关文章
相关标签/搜索