Oracle数据库月巡检报告


一、 前言
数据库巡检是DBA的重要工作之一,精准的检查分析可避免很多数据库故障以及带来的性能问题,从而提高数据库的安全稳定性;所以,DBA工作需从日常检查开始,到位准确的检查往往是一天工作成功的一半,只要把日常检查工作做好了,才能加深对数据库内在情况的认知,才能使我们的工作更主动,更有效率。

二、 检查内容
(一) 数据库状态与日志检查
数据库日志是描述数据库行为状态的一种跟踪,是日常检查的重点关注部分,当集群系统或数据库系统在运行期间发生错误或意外事件,会触发警告日志,这样对于我们诊断数据库起到重要作用,以下本月度的数据库状态与日志检查情况。

1. 数据库状态与日志
各数据库EM状态截图:(略)
Oracle日志信息截图:(略)

分析示例:本月Oracle各数据库运行状态正常;数据库日志方面,没有出现异常报错或ORA-等错误信息。

2. DG同步状态检查

分析示例:数据库高可用方面,dataguard同步状态正常,DG高可用自动故障转移功能正常开启。

(二) Linux系统资源检查
Oracle 11g目前运行在CENTOS 6.5操作系统平台,从Oracle本身的特性和业务使用情况出发, Oracle服务器平时的检查极为重要,需要定期关注服务器如下资源的使用情况:

  1. 磁盘空间使用情况

分析示例: linux服务器磁盘空间可用资源充足,无特别异常增长情况。

  1. 性能资源使用情况
  1. CPU,IO,内存使用情况:

分析示例:本月度数据库服务器资源消耗较低,CPU负载普遍在1左右,磁盘IO没有出现阻塞现象,内存使用率正常,没有出现大量溢出现象。图中是本月TOPSQL中比较明显的一个,鉴于该SQL的state等字段更新比较频繁,并且表的总记录数不高,暂不创建索引优化,待观察。

(三) 数据库备份检查
数据库备份是保证数据完整,安全修复的重要措施,在平时的数据库备份中,我们要时刻关注备份任务是否执行成功,并且检查有无备份报错信息,从而保证数据能进行可靠的恢复和还原。

分析示例:逻辑备份任务正常,每天保留前一天的最新expdp备份,另外RMAN备份策略方面,rman备份周日进行全备,周一至周六进行增量备份,目前任务已成功执行。

(四) 数据库表空间,归档空间使用情况
ORACLE数据库表空间,日志等占用率会随着业务的增长而增长,这需要密切关注,尤其是表空间的使用情况,当业务运行积累到一定程度,数据库需要确定有足够的可用表空间供数据存储。

分析示例:数据库各表空间使用情况正常,业务表空间使用率81%,目前已新增表空间数据文件,并且数据文件已设置了自动增长,另外快速恢复区的使用率较低,闪回区,归档区有充足的可用空间。

(五) Goldengate同步状态检查
目前OGG异地数据库容灾部署在主库与远程的灾备服务器上,为了保证数据库异地容灾的安全稳定,需定期对OGG同步状态进行检查。

分析示例:目前源端与目标端OGG同步状态正常,没有出现延时现象。

(六) ORACLE其他检查
ORACLE数据库其他检查还包括一些扩展功能,如审计,数据库作业,收集统计信息等固定维护任务计划等。经检查,目前数据库库没有配置以上固定维护计划任务,如有进一步调整需求,会增加相应的检查项。

三、 附录

  1. 查看快速恢复区
select * from v$recovery_area_usage;
  1. 查看表空间使用情况
SELECT d.status "Status",
 d.tablespace_name "Name",
 d.contents "Type",
 d.extent_management "Extent Management",
 to_char(nvl(a.bytes / 1024 / 1024, 0), '99999999.999') "Total Size (M)",
 to_char(nvl(a.bytes - nvl(f.bytes, 0), 0) / 1024 / 1024,
 '99999999.999') "Used (M)",
 to_char(nvl(nvl(f.bytes, 0), 0) / 1024 / 1024, '99999999.999') "Free (M)",
to_char(nvl((a.bytes - nvl(f.bytes, 0)) / a.bytes * 100, 0),
 '990.00') "Used %"
 FROM sys.dba_tablespaces d,
(SELECT tablespace_name, SUM(bytes) bytes
  FROM dba_data_files
   GROUP BY tablespace_name) a,
 (SELECT tablespace_name, SUM(bytes) bytes
    FROM dba_free_space
     GROUP BY tablespace_name) f
      WHERE d.tablespace_name = a.tablespace_name(+)
 AND d.tablespace_name = f.tablespace_name(+)
  AND NOT
 (d.extent_management LIKE 'LOCAL' AND d.contents LIKE 'TEMPORARY') order by 8;