DBA的职责

系统建设中:

  • 数据库的设计
  • 数据库的建模
  • 数据安全(备份方案、容灾方案)
  • 数据库性能(系统性能)

运维当中:

  • 保证数据的安全(备份方案、容灾方案)

  • 数据库的可用性

  • 日常故障处理

  • 性能分析处理

  • 数据库升级(打补丁)、改造

DBA的日常工作

通用户数据库的监控:

  • 表空间(磁盘、ASM)容量的监控

    流行的做法:整个存储的机柜交给ASM管理,将表空间建立到ASM上,将数据文件设置为自动扩展,最后只需要监控ASM的使用率。

ASM扩展比较方便,而且扩展之后可以自动将数据按照新扩展的空间进行重新均衡分布。

  • 告警日志文件(alert_sid.ora)

    写一个自动分析alert文件的程序,做到alert错误实时告警

定制监控指标:

  • 某个表空间的数据增长率
  • 某个对象(表、索引)的数据增长率
  • 阻塞(v$lock)
  • CPU
  • IO
  • 内存(SGA + PGA)
  • 会话数

常用SQL

查看执行计划:

  • 方式1:使用 set autotrace
    1. set autotrace;
    2. select * from T;
  • 方式2:使用 explain plan
    1. explain plan for select * from T;
    2. select * from T(dbms_xplan.display);

跟踪SQL语句:

  • 方式1:使用trace文件
    1. -- 方式1:对后续sql进行trace,输出到trace文件中
    2. alter session set sql_trace=true;
  • 方式2:使用10046跟踪事件
    1. -- 使用10046跟踪事件,如果设置level12,不仅可以输出绑定变量,还可以输出一些等待事件等信息
    2. alter session set events '10046 trace name context forever ,level n';
    3. -- 停止10046事件跟踪
    4. alter session set events '10046 trace name context off';