外观
Oracle 告警触发条件
系统级告警
CPU 告警
监控指标
- CPU 使用率:服务器整体 CPU 使用率
- 用户 CPU 使用率:用户进程占用的 CPU 使用率
- 系统 CPU 使用率:系统进程占用的 CPU 使用率
- I/O 等待 CPU 使用率:I/O 等待占用的 CPU 使用率
触发条件
- 紧急告警:CPU 使用率持续超过 90% 达 5 分钟
- 严重告警:CPU 使用率持续超过 80% 达 10 分钟
- 警告:CPU 使用率持续超过 70% 达 15 分钟
告警处理
- 检查是否有异常进程占用大量 CPU
- 分析数据库会话,识别消耗 CPU 的 SQL
- 考虑增加 CPU 资源或优化 SQL 语句
- 调整数据库参数,如并行度设置
内存告警
监控指标
- 物理内存使用率:服务器物理内存使用情况
- SGA 使用率:Oracle SGA 内存使用情况
- PGA 使用率:Oracle PGA 内存使用情况
- 交换空间使用率:服务器交换空间使用情况
触发条件
- 紧急告警:物理内存使用率超过 95% 或交换空间使用率超过 90%
- 严重告警:物理内存使用率超过 90% 或交换空间使用率超过 80%
- 警告:物理内存使用率超过 85% 或交换空间使用率超过 70%
告警处理
- 检查内存使用情况,识别内存泄漏
- 调整 SGA 和 PGA 大小
- 考虑增加物理内存
- 优化内存使用,如减少排序操作
磁盘告警
监控指标
- 磁盘使用率:磁盘空间使用情况
- I/O 等待时间:磁盘 I/O 响应时间
- 磁盘读写速率:磁盘 I/O 吞吐量
- 磁盘 I/O 使用率:磁盘 I/O 通道使用率
触发条件
- 紧急告警:磁盘使用率超过 95% 或 I/O 等待时间超过 50ms
- 严重告警:磁盘使用率超过 90% 或 I/O 等待时间超过 30ms
- 警告:磁盘使用率超过 85% 或 I/O 等待时间超过 20ms
告警处理
- 清理磁盘空间,删除无用文件
- 检查是否有大量 I/O 操作的 SQL
- 考虑使用 RAID 或增加存储带宽
- 优化 SQL 语句,减少 I/O 操作
网络告警
监控指标
- 网络延迟:网络响应时间
- 网络吞吐量:网络数据传输速率
- 网络丢包率:网络数据包丢失率
- 网络连接数:网络连接数量
触发条件
- 紧急告警:网络延迟超过 100ms 或丢包率超过 5%
- 严重告警:网络延迟超过 50ms 或丢包率超过 2%
- 警告:网络延迟超过 30ms 或丢包率超过 1%
告警处理
- 检查网络设备状态
- 分析网络流量,识别异常流量
- 考虑增加网络带宽
- 优化应用程序,减少网络传输数据量
数据库级告警
实例状态告警
监控指标
- 实例状态:数据库实例是否正常运行
- 实例启动时间:实例运行时间
- 实例重启次数:实例重启频率
- 实例错误日志:实例错误信息
触发条件
- 紧急告警:实例状态异常或实例崩溃
- 严重告警:实例重启或实例错误日志中有严重错误
- 警告:实例性能下降或实例错误日志中有警告信息
告警处理
- 检查实例状态和错误日志
- 分析实例重启原因
- 处理实例错误
- 确保实例高可用性
连接数告警
监控指标
- 当前连接数:当前活跃的数据库连接数
- 最大连接数:数据库允许的最大连接数
- 连接增长率:连接数增长速度
- 空闲连接数:长时间空闲的连接数
触发条件
- 紧急告警:连接数超过最大连接数的 95%
- 严重告警:连接数超过最大连接数的 85%
- 警告:连接数超过最大连接数的 75%
告警处理
- 检查是否有异常连接
- 清理空闲连接
- 调整最大连接数设置
- 考虑使用连接池
- 优化应用程序连接管理
表空间告警
监控指标
- 表空间使用率:各表空间的空间使用情况
- 表空间增长速率:表空间增长速度
- 数据文件状态:数据文件是否在线且可用
- 表空间碎片:表空间碎片程度
触发条件
- 紧急告警:表空间使用率超过 95% 或数据文件离线
- 严重告警:表空间使用率超过 90%
- 警告:表空间使用率超过 80%
告警处理
- 为表空间添加数据文件或扩展现有数据文件
- 清理表空间中的无用数据
- 处理离线数据文件
- 整理表空间碎片
重做日志告警
监控指标
- 重做日志切换频率:重做日志切换次数
- 重做日志大小:重做日志文件大小
- 重做日志归档状态:归档是否正常
- 重做日志等待:重做日志相关的等待事件
触发条件
- 紧急告警:重做日志切换频率超过每分钟 10 次或归档失败
- 严重告警:重做日志切换频率超过每分钟 5 次
- 警告:重做日志切换频率超过每分钟 3 次
告警处理
- 增加重做日志组和大小
- 检查归档目录空间
- 优化提交频率
- 处理归档失败问题
临时表空间告警
监控指标
- 临时表空间使用率:临时表空间使用情况
- 临时表空间增长速率:临时表空间增长速度
- 临时段使用:临时段的使用情况
- 排序操作:排序操作的数量和大小
触发条件
- 紧急告警:临时表空间使用率超过 95%
- 严重告警:临时表空间使用率超过 90%
- 警告:临时表空间使用率超过 85%
告警处理
- 增加临时表空间大小
- 优化排序操作,减少临时空间使用
- 使用临时表空间组
- 识别消耗大量临时空间的 SQL
撤销表空间告警
监控指标
- 撤销表空间使用率:撤销表空间使用情况
- 撤销保留时间:撤销数据的保留时间
- 长时间运行的事务:运行时间较长的事务
- 撤销空间争用:撤销空间相关的等待事件
触发条件
- 紧急告警:撤销表空间使用率超过 95%
- 严重告警:撤销表空间使用率超过 90%
- 警告:撤销表空间使用率超过 85%
告警处理
- 增加撤销表空间大小
- 调整撤销保留时间
- 识别和处理长时间运行的事务
- 优化事务处理,减少撤销空间使用
SQL 性能告警
慢 SQL 告警
监控指标
- SQL 执行时间:SQL 语句的执行时间
- SQL 执行次数:SQL 语句的执行频率
- SQL 资源消耗:SQL 语句消耗的 CPU、I/O 等资源
- SQL 执行计划:SQL 语句的执行计划变化
触发条件
- 紧急告警:SQL 执行时间超过 60 秒
- 严重告警:SQL 执行时间超过 30 秒
- 警告:SQL 执行时间超过 10 秒
告警处理
- 分析 SQL 执行计划
- 优化 SQL 语句,如添加索引
- 调整数据库参数
- 考虑使用 SQL 计划管理
硬解析告警
监控指标
- 硬解析次数:SQL 硬解析的数量
- 硬解析率:硬解析占总解析的比例
- 共享池使用率:共享池内存使用情况
- SQL 语句长度:SQL 语句的长度
触发条件
- 紧急告警:硬解析率超过 20%
- 严重告警:硬解析率超过 15%
- 警告:硬解析率超过 10%
告警处理
- 使用绑定变量
- 调整共享池大小
- 优化应用程序,减少 SQL 语句长度
- 考虑使用游标共享
死锁告警
监控指标
- 死锁次数:数据库死锁的发生次数
- 阻塞会话:被阻塞的会话数量
- 阻塞时间:会话被阻塞的时间
- 死锁原因:死锁产生的原因
触发条件
- 紧急告警:发生死锁或阻塞时间超过 60 秒
- 严重告警:阻塞时间超过 30 秒
- 警告:阻塞时间超过 10 秒
告警处理
- 分析死锁原因和阻塞会话
- 处理死锁,如终止阻塞会话
- 优化应用程序,减少死锁发生
- 调整事务隔离级别
存储告警
ASM 告警
监控指标
- ASM 磁盘组使用率:ASM 磁盘组空间使用情况
- ASM 磁盘状态:ASM 磁盘是否正常
- ASM 磁盘 I/O:ASM 磁盘 I/O 性能
- ASM 重平衡:ASM 重平衡状态
触发条件
- 紧急告警:ASM 磁盘组使用率超过 95% 或磁盘故障
- 严重告警:ASM 磁盘组使用率超过 90%
- 警告:ASM 磁盘组使用率超过 85%
告警处理
- 为 ASM 磁盘组添加磁盘
- 处理故障磁盘
- 监控 ASM 重平衡过程
- 优化 ASM 配置
数据文件告警
监控指标
- 数据文件大小:数据文件的大小
- 数据文件增长速率:数据文件增长速度
- 数据文件 I/O:数据文件的 I/O 性能
- 数据文件状态:数据文件是否在线且可用
触发条件
- 紧急告警:数据文件达到最大大小或状态异常
- 严重告警:数据文件大小超过最大大小的 90%
- 警告:数据文件大小超过最大大小的 80%
告警处理
- 扩展数据文件或添加新的数据文件
- 处理数据文件状态异常
- 优化数据文件 I/O 性能
- 考虑使用分区表分散数据
安全告警
权限告警
监控指标
- 权限变更:数据库权限的变更情况
- 角色变更:数据库角色的变更情况
- 用户登录:用户登录情况,特别是特权用户
- 权限使用:敏感权限的使用情况
触发条件
- 紧急告警:特权用户权限变更或未授权的权限使用
- 严重告警:普通用户权限变更
- 警告:角色变更或异常的权限使用模式
告警处理
- 审查权限变更原因
- 验证权限变更的合法性
- 记录权限变更审计日志
- 实施最小权限原则
登录告警
监控指标
- 登录失败次数:用户登录失败的次数
- 异常登录:异常时间或位置的登录
- 特权用户登录:特权用户的登录情况
- 并发登录数:同一用户的并发登录数量
触发条件
- 紧急告警:登录失败次数超过阈值或特权用户异常登录
- 严重告警:异常时间或位置的登录
- 警告:并发登录数超过正常范围
告警处理
- 检查登录失败原因
- 验证异常登录的合法性
- 考虑锁定可疑账户
- 实施登录限制和审计
审计告警
监控指标
- 审计日志大小:审计日志的大小和增长速度
- 审计事件:重要的审计事件
- 审计策略:审计策略的变更
- 审计数据完整性:审计数据的完整性
触发条件
- 紧急告警:审计日志满或审计数据不完整
- 严重告警:审计策略变更或重要审计事件
- 警告:审计日志增长过快
告警处理
- 归档或清理审计日志
- 审查重要审计事件
- 验证审计策略变更的合法性
- 确保审计数据的完整性和安全性
备份恢复告警
备份告警
监控指标
- 备份状态:备份是否成功完成
- 备份时间:备份执行时间
- 备份大小:备份集的大小
- 备份频率:备份执行频率
触发条件
- 紧急告警:备份失败或备份未执行
- 严重告警:备份时间过长或备份不完整
- 警告:备份频率不符合要求
告警处理
- 检查备份失败原因
- 重新执行失败的备份
- 优化备份策略和配置
- 确保备份的完整性和可用性
恢复告警
监控指标
- 恢复状态:恢复操作是否成功完成
- 恢复时间:恢复操作执行时间
- 恢复点目标:恢复是否达到预期的恢复点目标
- 归档日志:归档日志的可用性和完整性
触发条件
- 紧急告警:恢复失败或恢复未达到恢复点目标
- 严重告警:恢复时间过长
- 警告:归档日志不完整或不可用
告警处理
- 检查恢复失败原因
- 处理归档日志问题
- 优化恢复策略和配置
- 测试恢复过程,确保可恢复性
应用级告警
业务指标告警
监控指标
- 响应时间:应用程序响应时间
- 事务成功率:业务事务的成功比例
- 吞吐量:系统处理的事务数量
- 业务错误率:业务逻辑错误的比例
触发条件
- 紧急告警:响应时间超过阈值的 200% 或事务成功率低于 90%
- 严重告警:响应时间超过阈值的 150% 或事务成功率低于 95%
- 警告:响应时间超过阈值的 120% 或事务成功率低于 98%
告警处理
- 分析应用程序响应时间瓶颈
- 检查业务错误原因
- 优化应用程序和数据库
- 确保系统能够处理预期的吞吐量
批处理告警
监控指标
- 批处理执行时间:批处理作业的执行时间
- 批处理成功率:批处理作业的成功比例
- 批处理资源消耗:批处理作业消耗的资源
- 批处理依赖:批处理作业的依赖关系
触发条件
- 紧急告警:批处理失败或执行时间超过预期的 200%
- 严重告警:批处理执行时间超过预期的 150%
- 警告:批处理执行时间超过预期的 120%
告警处理
- 检查批处理失败原因
- 优化批处理作业,减少执行时间
- 调整批处理资源分配
- 监控批处理依赖关系,确保顺序执行
告警管理最佳实践
告警配置
告警分级
- 紧急:需要立即处理的严重问题,如实例崩溃
- 严重:需要在 4 小时内处理的问题,如性能严重下降
- 警告:需要在 24 小时内处理的问题,如资源使用接近阈值
告警阈值设置
- 根据系统特点和业务需求设置合适的阈值
- 考虑使用动态阈值,根据系统负载自动调整
- 定期审查和调整告警阈值
- 为不同的环境设置不同的阈值(如生产环境和测试环境)
告警通知
- 通知方式:邮件、短信、企业微信、钉钉、电话等
- 通知级别:根据告警级别选择合适的通知方式
- 通知频率:避免过多的重复通知
- 通知升级:如果告警未及时处理,自动升级通知
告警处理流程
告警接收
- 确保告警能够及时送达相关人员
- 建立告警接收确认机制
- 记录告警接收时间和接收人
告警分析
- 分析告警原因和影响范围
- 确定告警的优先级和处理顺序
- 收集相关信息,如日志、性能数据等
告警处理
- 根据告警类型和严重程度采取相应的处理措施
- 记录处理过程和结果
- 验证处理效果,确保问题解决
告警关闭
- 确认问题已解决后关闭告警
- 记录告警关闭时间和关闭人
- 分析告警处理的经验教训
告警优化
告警减少
- 优化系统,减少不必要的告警
- 合并相关的告警,避免告警风暴
- 调整告警阈值,减少误报
- 实施告警抑制,如维护期间暂时抑制非关键告警
告警自动化
- 实现常见告警的自动处理
- 使用自动化工具监控和处理告警
- 建立告警处理的自动化工作流
- 利用机器学习识别告警模式,预测潜在问题
告警分析
- 定期分析告警数据,识别系统趋势
- 找出频繁发生的告警,分析根本原因
- 评估告警处理的效率和效果
- 根据分析结果优化告警配置和处理流程
版本差异考虑
Oracle 11g
- 告警功能:支持基本的告警功能,如 Enterprise Manager 的告警
- 监控工具:使用 Statspack 和基本的 AWR 报告
- 最佳实践:设置关键系统和数据库指标的告警,使用脚本监控
Oracle 12c
- 告警功能:增强了告警功能,支持多租户环境的告警
- 监控工具:增强了 AWR 和 ASH 功能
- 最佳实践:为每个 PDB 设置独立的告警,使用统一的告警管理策略
Oracle 19c
- 告警功能:进一步增强了告警功能,支持自动性能诊断
- 监控工具:增强了自动性能监控功能
- 最佳实践:利用自动性能诊断功能,设置智能告警
Oracle 21c
- 告警功能:引入了更多智能化的告警功能
- 监控工具:支持机器学习辅助的性能监控
- 最佳实践:利用智能化告警功能,减少人工干预,提高告警准确性
常见问题(FAQ)
Q1: 如何设置合理的告警阈值?
A1: 设置合理告警阈值的方法:
- 基准测试:在系统正常运行时收集性能数据,建立基准值
- 业务需求:根据业务对性能的要求设置阈值
- 系统特点:考虑系统的硬件配置和负载特点
- 经验调整:根据实际运行经验,逐步调整阈值
- 动态阈值:考虑使用动态阈值,根据系统负载自动调整
Q2: 如何避免告警风暴?
A2: 避免告警风暴的方法:
- 告警分级:对告警进行分级,优先处理严重的告警
- 告警聚合:将相关的告警聚合为一个,减少重复告警
- 告警抑制:在维护期间暂时抑制非关键告警
- 告警过滤:过滤掉已知的、不影响系统运行的告警
- 自动处理:对常见的告警实现自动处理
Q3: 如何处理大量的告警?
A3: 处理大量告警的方法:
- 优先级排序:根据告警的严重程度和影响范围排序
- 批量处理:对相似的告警进行批量处理
- 团队协作:合理分配告警处理任务给团队成员
- 自动化处理:利用自动化工具处理常见告警
- 根本原因分析:分析告警的根本原因,从源头解决问题
Q4: 如何确保告警的及时性和可靠性?
A4: 确保告警及时性和可靠性的方法:
- 多渠道通知:使用多种通知方式,如邮件、短信、企业微信等
- 通知确认:建立告警接收确认机制
- 通知升级:如果告警未及时处理,自动升级通知
- 告警测试:定期测试告警系统,确保其正常工作
- 冗余配置:配置多个告警服务器,确保高可用性
Q5: 如何利用告警数据进行系统优化?
A5: 利用告警数据进行系统优化的方法:
- 趋势分析:分析告警的时间分布和频率,识别系统趋势
- 关联分析:分析不同告警之间的关联关系,找出根本原因
- 性能瓶颈识别:通过告警数据识别系统性能瓶颈
- 容量规划:根据告警数据预测资源需求,进行容量规划
- 优化建议:基于告警数据,提出系统优化建议
Q6: 如何设置备份恢复相关的告警?
A6: 设置备份恢复相关告警的方法:
- 备份状态:监控备份是否成功完成,设置备份失败告警
- 备份时间:监控备份执行时间,设置执行时间过长告警
- 备份频率:监控备份执行频率,设置未按时执行告警
- 恢复测试:定期测试恢复过程,设置恢复测试失败告警
- 归档日志:监控归档日志的可用性和完整性,设置异常告警
Q7: 如何处理性能相关的告警?
A7: 处理性能相关告警的方法:
- 性能分析:使用 AWR、ASH 等工具分析性能问题
- SQL 优化:识别和优化消耗资源的 SQL 语句
- 参数调整:根据性能数据调整数据库参数
- 资源分配:合理分配系统资源,如 CPU、内存、I/O
- 架构优化:根据性能需求优化系统架构
Q8: 如何实现告警的自动化处理?
A8: 实现告警自动化处理的方法:
- 脚本自动化:编写脚本处理常见的告警
- 工具集成:使用监控工具的自动化功能
- 工作流:建立告警处理的自动化工作流
- 机器学习:利用机器学习识别告警模式,自动处理常见问题
- API 集成:通过 API 集成不同的系统,实现自动响应
Q9: 如何设置安全相关的告警?
A9: 设置安全相关告警的方法:
- 权限变更:监控数据库权限的变更,设置异常变更告警
- 登录监控:监控用户登录情况,设置异常登录告警
- 敏感操作:监控敏感操作,如数据删除、修改等
- 审计日志:监控审计日志,设置异常审计事件告警
- 安全策略:监控安全策略的变更,设置策略变更告警
Q10: 如何建立有效的告警管理体系?
A10: 建立有效告警管理体系的方法:
- 明确责任:明确告警处理的责任人及职责
- 流程规范:建立标准化的告警处理流程
- 工具支持:选择合适的监控和告警工具
- 培训教育:对相关人员进行告警处理培训
- 持续改进:定期评估和改进告警管理体系
- 文档完善:完善告警管理的相关文档
Q11: 如何处理误报和漏报?
A11: 处理误报和漏报的方法:
- 误报处理:
- 分析误报原因,调整告警阈值
- 优化告警规则,减少误报
- 实施告警验证机制,过滤误报
- 漏报处理:
- 分析漏报原因,增加必要的告警
- 优化告警配置,确保覆盖所有关键指标
- 定期审查告警体系,发现和弥补漏洞
Q12: 如何利用告警数据进行预测性分析?
A12: 利用告警数据进行预测性分析的方法:
- 数据收集:收集足够的历史告警数据
- 模式识别:识别告警的模式和趋势
- 相关性分析:分析不同指标之间的相关性
- 预测模型:建立预测模型,预测潜在问题
- 预警机制:基于预测结果,建立预警机制
- 持续优化:根据实际情况调整预测模型
