数据库是主要是存放企业数据的仓库,数据对每个企业来说都是至关重要的,所以对于数据库的维护也显得格外的重要。
对于oracle的操作基本检查:
在drop一个object之前要看仔细,是否是当前user下的当前objects,是否是要开启数据库的flashback功能,防止误删除数据出现。看是否有相关job在运行。检查alert log、listener log、trace log是否有相关的报错信息。查看会话和进程的连接数。定期查看数据库中的数据文件是否offline。
数据库的监控:
v 数据库层面的监控:
监控oracle的表空间的使用情况,监控索引的情况,监控是否有增长较快的表。安装相关监控软件来监控数据库。
v 主机性能方面的监控:
定期做好CPU,memary,进程数(包括是否有可疑进程),磁盘容量的监控。按照oracle提供的oswatcher来监控相关内容。
关于数据备份方面:
做好数据的备份的可用性,查看数据库是否备份完全,定期做好数据恢复演练。
关于数据库性能方面:
主动避免数据库和查询相关的性能问题。
收集数据库的基线和维护这些基线:
v 做awr作为 baseline来进行使用,定期在系统使用阶段做一个awr报告和之前的baseline做比对是否存在oracle问题。(是否有什么等待事件存在,是否有消耗资源比较多的sql,是否有有比较大的负载,是否有什么比较大的硬解析,是否有什么索引走的不合理,是否命中率不太好的情况等等)。
v 周期性的做ASH来帮助我们分析性能问题。
v 周期性的找出一些消耗资源比较大的sql分析sql 的执行计划和统计信息,进而找出存在的sql 问题。
v 对统计信息,尽量收集到最新的。对于常用sql的中参考到的表需要小心。
v 使用raccheck对数据库做一个检查,虽然是针对rac的,但是单实例的数据库也可用。可以发现数据库上的配置是否有不合理的地方。
附录:
脚本:
提供两个脚本,一个是检查数据库的一般性问题,一个是检查数据库的性能问题。这两个脚本稍后会附在最后。
数据库维护检查记录表:
项目名称 | 监控内容 | 监控指标 | 监控状态 | 等级 |
DB状态 | 数据库是否正常启动 | | 正常 | critical |
Listenter是否启动 |
| 正常 | critical |
DB空间 | 表空间使用情况 | | 正常 | critical |
警告日志文件大小 | | 正常 | critical |
归档日志目录使用情况 | | 正常 | critical |
Dump文件目录使用 | | 正常 | critical |
DB性能 | 缓冲区命中率(Buffer Cache) | >95% | 正常 | High |
数据字典命中率(Dictionary Cache) | >95% | 正常 | High |
库缓存命中率(Library Cache) | >95% | 正常 | High |
内存排序百分比(Sort in Memory) | >95% | 正常 | High |
空闲的数据缓冲区比例 | 10-25% | 正常 | High |
检查重做日志命中率 | >95% | 正常 | High |
检查多版本Sql | | 正常 | High |
检查低效Sql | | 正常 | High |
检查长时间运行的Sql | | 正常 | High |
检查数据库的Statspack/AWR是否定期被执行 | | 正常 | High |
检查Statspack/AWR每小时产生的报告 | | 正常 | High |
DB资源 | 检查表空间IO比例 | | 正常 | Low |
检查文件系统IO比例 | | 正常 | Low |
检查临时表空间使用情况 | | 正常 | critical |
检查锁与等待 | | 正常 | critical |
Process | | 正常 | critical |
Session | | 正常 | critical |
检查活动会话 | | 正常 | High |
检查日志切换的频率 | >=(15-20)分钟 | 正常 | High |
DB对象 | 检查数据库里Invalid Objects | | 正常 | critical |
检查数据库里Disabled Indexes | | 正常 | critical |
检查数据库里Disabled Constraints | | 正常 | critical |
检查数据库里Disabled Triggers | | 正常 | critical |
DB备份 | 检查数据库全备份的情况 | | 正常 | High |
检查数据库累积备份的情况 | | | High |
检查数据库增量备份的情况 | | | High |
每周验证数据库的备份是否可恢复 | | 正常 | High |
DB错误 | 检查警告日志里是否有异常错误 | | 正常 | critical |
检查数据库的归档进程是否被挂起 | | 正常 | critical |
检查数据库里是否有坏块 | | 正常 | critical |
版本控制 | 定期跟踪Oracle的bugList升级数据库 | | 正常 | Low |
Sql server数据库部分
关于系统日志的检查:
使用事件查看器,查看系统日志,关注错误信息和排查错误;重点关注和sql server相关的日志信息、及时备份和清理过期的日志信息。
关于磁盘空间的检查:
定期检查数据文件所在的磁盘空间的使用情况;定期检查日志文件所在的磁盘空间的使用情况;定期检查备份数据所在磁盘空间的使用情况。是否有死锁的对象。
关于数据库的一般检查:
进程检查,确保无病毒进程影响服务的正常运行;账号安全管理,检查数据库账户、角色是否合理和更改,有效的降低风险;定时用profile抓取15分钟的sql放到table里面,优化耗时、耗IO、耗CPU等操作的sql语句;定期收缩数据库、更新统计信息、收缩数据库和重建组织索引。
关于数据库的一般监控:
监控系统的运行状况,及时发现问题,找到问题的原因,处理问题。其中对于数据库层面的监控极为重要。
监控当前用户及其进程的信息;监控目标占用空间的情况;监控sql server统计数字;表和索引等其他对象的增量情况。
关于数据库性能的监控:
监控数据库的性能主要通过如下的方面来去监控:
v Cpu方面是否存在瓶颈
v 内存方面是否存在瓶颈
v I/O方面是否存在瓶颈
v 是否有相关的锁等待阻塞的情况
关于数据库备份方面的监控:
备份数据库;检查备份事务日志;数据库的完全备份和差异备份计划是否正常执行;检查各种备份文件是否是有效的(包括完全备份文件、差异备份文件、日志备份文件);检查数据库是否有损坏的页。定期做好数据恢复演练。
附录:
数据库维护检查记录表:
项目名称 | 监控内容 | 监控指标 | 监控状态 | 等级 |
DB状态 | 数据库是否正常启动 | | 正常 | critical |
查看数据库启动的参数 |
| 正常 | Low |
查看数据库启动时间 |
| 正常 | Critical |
DB空间 | 数据文件磁盘空间使用情况 | | 正常 | critical |
日志文件磁盘空间使用情况 | | 正常 | critical |
备份数据磁盘空间使用情况 | | 正常 | critical |
DB性能 | Cpu方面是否有存在瓶颈 |
| 正常 | High |
内存方面是否存在瓶颈 |
| 正常 | High |
I/O方面是否存在瓶颈 |
| 正常 | High |
是否有和锁相关的阻塞 |
| 正常 | High |
是否有索引碎片存在 |
| 正常 | High |
DB基本检查 | 可疑进程的检查 | | 正常 | Low |
账号安全的检查 | | 正常 | Low |
权限和角色的检查 | | 正常 | critical |
DB基本监控 | 监控活动用户和进程的信息 |
| 正常 | critical |
监控sql server统计数字 |
| 正常 | critical |
监控表和索引的增量情况 |
| 正常 | critical |
监控磁盘读写情况 |
| 正常 | critical |
DB对象 | 检查数据库里Invalid Objects | | 正常 | critical |
检查数据库里Disabled Indexes | | 正常 | critical |
检查数据库里Disabled Constraints | | 正常 | critical |
检查数据库中死锁的对象 |
| 正常 | critical |
检查数据库里Disabled Triggers | | 正常 | critical |
DB备份 | 检查数据库全备份的情况 | | 正常 | High |
检查数据库累积备份的情况 | | | High |
检查数据库增量备份的情况 | | | High |
每周验证数据库的备份是否可恢复 | | 正常 | High |
DB错误 | 检查系统日志里是否有异常错误 | | 正常 | critical |
检查和sql server相关的日志信息 | | 正常 | critical |
运行库时的其他报错信息 | | 正常 | critical |