Oracle DBA 每天、每周、每月应该做的工作
㈠ 每天的工作
① 检查 alert.log
② 环境确认
● 数据库实例是否正常工作
▼ ps –ef|grep ora_
▼ select status from v$instance
● 监听器是否正常工作
▼ lsnrctl status
● 表空间是否出故障
▼ select tablespace_name,status from dba_tablespace;
● 控制文件、日志文件是否正常
▼ v$controlfile
▼ v$log、v$logfile
③ 性能监测
● 按业务峰值情况,对数据库性能数据进行定时采集
● 检查数据库的主要性能指标
● 检查最消耗资源的SQL语句变化情况
● 检查是否有足够的资源、主要注意以下:
▼ 所有表空间的剩余空间情况
▼ 识别出一些异常的增长
▼ 检查CPU、内存、网络、存储等是否异常
④ 定时任务的检查
每天检查晚间定时执行脚本
● 备份脚本日志
● 统计信息采集脚本日志
● 定时数据抽取/转换/装载脚本
● 日志文件整理脚本
⑤ 坚持每天看Oracle 官方文档一个小时 -_-#
㈡ 每周的工作
① 空间使用分析
● 监测数据量总体增长情况
● 按表空间分析使用率增长情况
● 表空间碎片整理
=>alter tablespace <tablespace_name> coalesce;
● 各segment的数据碎片、chained row/migrate row等问题
根据具体情况制定相应的策略,同时也及时发现潜在的问题
② 索引碎片分析
● 监测索引的碎片情况,根据情况制定索引的重建频率以提高索引使用效率
=> analyze index <index_name> invalidate structure
=> select name,del_lf_rows_len,lf_rows_len,(del_lf_rows_len/lf_rows_len)*100 from index_stats
索引碎片率(%) = (被删除的索引长度/索引总长)*100
=> alter index <索引名> rebuild
=> alter index <索引名> coalesce
● 监测索引的使用情况,根据使用情况,删除未使用的索引,并添加能提高查询和处理性能的索引
=> alter index <索引名> monitoring usage
=> alter index <索引名> nomonitoring usage
=> select index_name,used from v$object_usage
③ 数据整理工作
● 清理和备份一周所产生的Alert日志、跟踪文件、dump文件
● 清理和备份过期的数据库性能数据,以保证数据库性能监控的连续性和有效性
㈢ 每月的工作
● 全面分析一次STATSPACK报告/AWR
● 数据库主要性能指标
● 数据库主要等待事件
● 最消耗内存资源的SQL语句
● 最消耗I/O资源的SQL语句
● 恢复演练以保证备份的有效性
..........
..........
..........
By David Lin
2013-06-14
Knowing youself is the height of wisdom