春节长假结束了,打工人们陆续返回工作岗位了,做为DBA需要做哪些工作呢?
首先,经过春节长假,可能会有积压的告警和日志需要处理。所以第一步应该是检查监控系统的状态,确认是否有未处理的报警。例如,检查OEM或者第三方监控工具中的报警信息,看看是否有数据库宕机、表空间不足、性能问题等。同时,可能需要检查数据库的可用性,确认所有实例是否正常运行,监听器是否正常,避免假期期间有未处理的故障。
接下来,日志审查是关键。比如,查看Oracle的alert日志,是否有ORA-错误,或者其他的异常信息,比如归档日志满、内存问题等。同时,检查操作系统日志,是否有硬件或系统层面的问题,比如磁盘空间不足、内存交换过高等。
然后,性能检查。长假期间可能有批处理作业或者备份任务运行,需要检查AWR、ASH报告,分析是否存在性能瓶颈,比如高负载的SQL语句、锁争用、I/O问题等。同时,检查资源使用情况,比如CPU、内存、磁盘I/O是否正常,是否有突发的资源消耗。
备份和恢复的验证也是必须的。确认备份任务是否在假期期间成功执行,检查RMAN的日志,是否有备份失败的情况。同时,可能需要执行恢复测试,确保备份的有效性,特别是如果假期期间有重要的数据变更,确保可以恢复。
检查数据库对象的状态,比如无效的对象、分区表是否需要维护,索引是否碎片化,统计信息是否过期。可能需要重新编译无效对象,收集统计信息,重建索引等。
安全方面,审计日志的检查也是必要的,是否有未授权的访问尝试,或者异常登录行为。同时,检查用户和权限是否有不必要的变更,确保符合安全策略。
如果数据库在假期期间有变更,比如补丁应用、升级等,需要确认这些变更是否成功,是否有回滚计划,以及后续的验证工作。另外,查看维护任务,比如自动任务是否正常执行,比如统计信息收集、自动备份等。
容量管理方面,检查表空间使用情况,是否有即将达到阈值的表空间,是否需要扩展或清理。归档日志的管理也很重要,确认归档目录是否有足够的空间,避免日志满导致数据库挂起。
最后,制定后续的工作计划,包括未解决问题的处理,性能优化,备份策略的调整,以及可能的系统升级或迁移计划。同时,可能需要与团队沟通,了解假期期间是否有其他需要注意的事项。
一、系统状态检查与告警处理
1、监控系统检查
查看告警信息:
查看OEM、第三方监控工具(如Zabbix)中的未处理告警,确认是否有数据库宕机、表空间满、性能骤降等问题。
验证数据库可用性:
SELECT instance_name, status, database_status FROM v$instance;SELECT * FROM v$database;
检查监听器状态:
lsnrctl status
2、日志审查
Alert日志分析:
定位$ORACLE_BASE/diag/rdbms/<DB_NAME>/<INSTANCE>/trace/alert_<INSTANCE>.log,排查ORA-错误(如ORA-00257归档满、ORA-01555快照过旧等)。
操作系统日志:
检查/var/log/messages或dmesg,确认硬件/系统级异常(磁盘故障、内存不足)。
二、性能与健康检查
1、资源使用分析
实时性能:
使用top、vmstat、iostat查看CPU、内存、I/O负载。
AWR/ASH报告:
生成假期期间的报告,分析高负载SQL、锁争用(v$lock)、等待事件(v$session_wait)。
-- 生成AWR报告
@?/rdbms/admin/awrrpt.sql
2、关键指标检查
表空间使用率:
SELECT tablespace_name, used_percent FROM dba_tablespace_usage_metrics;
归档日志状态:
SELECT * FROM v$recovery_area_usage;
三、备份与恢复验证
1、备份完整性检查
查看RMAN日志:
查看RMAN日志($ORACLE_HOME/diag/rdbms/<DB>/<INSTANCE>/trace/),确认假期备份任务是否成功。
验证备份集:
RMAN> LIST BACKUP SUMMARY;
2、恢复测试
随机抽取备份集进行恢复演练(如恢复至测试库),确保备份有效性。
四、数据库对象维护
1、对象状态检查
无效对象修复:
SELECT owner, object_name, object_type FROM dba_objects WHERE status = 'INVALID';
@?/rdbms/admin/utlrp.sql -- 重新编译
索引碎片分析:
ANALYZE INDEX <index_name> VALIDATE STRUCTURE;
SELECT name, del_lf_rows/lf_rows AS frag_ratio FROM index_stats;
2、统计信息更新
对关键表手动收集统计信息:
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname=>'SCHEMA', tabname=>'TABLE');
五、安全审计
检查DBA_AUDIT_TRAIL,排查异常登录或高危操作:
SELECT username, action_name, timestamp FROM dba_audit_trail WHERE timestamp >= SYSDATE-7;
确认用户权限变更:
SELECT * FROM dba_role_privs WHERE grantee IN (<关键用户>);
六、变更与维护任务跟进
1、补丁与升级验证
检查 OPatch 记录,确认假期是否应用补丁:
opatch lsinventory
验证补丁后功能及性能影响。
2、自动任务检查
确认自动维护任务(如统计信息收集、备份)正常执行:
SELECT task_name, status FROM dba_autotask_task;
七、容量规划与优化
1、表空间扩展预判
根据历史增长趋势,提前扩展表空间或清理历史数据:
ALTER TABLESPACE <tablespace_name> ADD DATAFILE '<path>' SIZE 10G;
2、归档日志管理
清理过期归档(确保已备份):
RMAN> DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-7';
八、后续计划制定
1、问题跟踪
记录未解决问题并分配优先级(如性能瓶颈、硬件隐患)。
2、优化方案
根据AWR报告制定SQL调优计划(索引优化、SQL重写)。
3、备份策略调整
根据业务需求调整RMAN保留策略或压缩选项。