外观
Oracle 监控数据存储
监控数据类型
性能相关数据
AWR 数据
描述:
- 自动工作负载仓库(AWR)数据
- 包含系统级别和SQL级别的性能统计信息
- 存储在 SYSAUX 表空间中
数据内容:
- 系统负载信息
- SQL 执行统计
- 等待事件数据
- 资源使用情况
- 段级别统计
ASH 数据
描述:
- 活动会话历史(ASH)数据
- 捕获活动会话的详细信息
- 存储在内存和 SYSAUX 表空间中
数据内容:
- 活动会话的等待事件
- SQL 执行计划信息
- 会话级别的资源使用
- 绑定变量值
Statspack 数据
描述:
- 轻量级性能统计数据
- 类似 AWR 但存储在用户表中
- 适合没有 AWR 许可的环境
数据内容:
- 系统性能统计
- SQL 执行信息
- 等待事件数据
- 资源使用情况
告警相关数据
告警日志数据
描述:
- 数据库告警日志信息
- 存储在文件系统中
- 包含数据库启动、关闭、错误等信息
数据内容:
- 数据库错误信息
- 警告信息
- 管理操作记录
- 安全相关事件
跟踪文件数据
描述:
- 会话和进程的跟踪信息
- 存储在文件系统中
- 包含详细的诊断信息
数据内容:
- SQL 执行跟踪
- 进程崩溃信息
- 详细的错误诊断
- 性能分析数据
监控数据存储配置
AWR 数据存储配置
快照设置
sql
-- 查看当前 AWR 快照设置
SELECT * FROM dba_hist_wr_control;
-- 修改 AWR 快照间隔和保留时间(示例:每小时采集,保留7天)
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention => 7*24*60, -- 保留时间(分钟)
interval => 60, -- 采集间隔(分钟)
topnsql => 100 -- 每个快照收集的 Top SQL 数量
);基线设置
sql
-- 创建 AWR 基线
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_BASELINE(
start_snap_id => 100,
end_snap_id => 110,
baseline_name => 'NORMAL_WORKLOAD',
description => '正常工作负载基线'
);
-- 查看现有基线
SELECT * FROM dba_hist_baseline;ASH 数据存储配置
内存设置
sql
-- 查看 ASH 内存配置
SELECT * FROM v$ash_info;
-- 修改 ASH 内存大小(示例:100MB)
ALTER SYSTEM SET ash_size=100M SCOPE=SPFILE;数据持久化
sql
-- 查看 ASH 数据持久化设置
SELECT * FROM dba_hist_ash_snapshot;
-- ASH 数据会自动持久化为 AWR 数据的一部分
-- 可以通过调整 AWR 快照设置来控制 ASH 数据的保留告警日志存储配置
日志文件位置
sql
-- 查看告警日志文件位置
SELECT value FROM v$parameter WHERE name = 'background_dump_dest';
-- 查看告警日志内容
SELECT * FROM v$diag_info WHERE name = 'Diag Alert';日志轮换设置
- 配置方法:
- 使用 log_archive_dest 参数设置归档日志目标
- 配置 log_archive_max_processes 参数控制归档进程数
- 设置合理的归档日志保留策略
监控数据存储策略
存储介质选择
本地存储
优点:
- 访问速度快
- 配置简单
- 成本较低
缺点:
- 存储容量有限
- 存在单点故障风险
- 不适合长期存储
网络存储
优点:
- 存储容量大
- 易于扩展
- 支持共享访问
缺点:
- 访问速度相对较慢
- 网络依赖
- 配置复杂度较高
云存储
优点:
- 弹性扩展能力
- 按需付费模式
- 高可用性
- 适合长期归档
缺点:
- 网络依赖
- 数据传输速度受限
- 长期存储成本可能较高
分层存储策略
热数据存储
描述:
- 近期的监控数据
- 访问频率高
- 需要快速访问
存储介质:
- 本地 SSD
- 高性能存储
温数据存储
描述:
- 中期的监控数据
- 访问频率中等
- 保留时间较长
存储介质:
- 网络存储
- 大容量 HDD
冷数据存储
描述:
- 长期的监控数据
- 访问频率低
- 用于历史分析和合规性
存储介质:
- 云存储
- 磁带存储
监控数据管理
数据收集管理
收集频率设置
建议频率:
- 核心性能数据:5-15分钟
- 详细性能数据:30-60分钟
- 告警数据:实时
- 趋势数据:1-24小时
调整策略:
- 根据系统负载调整收集频率
- 业务高峰期可适当增加收集频率
- 非业务高峰期可减少收集频率
收集级别设置
详细级别:
- 基础级别:收集核心指标
- 标准级别:收集详细指标
- 诊断级别:收集完整的诊断数据
使用场景:
- 正常运行:基础级别
- 性能分析:标准级别
- 故障诊断:诊断级别
数据保留管理
AWR 数据保留
sql
-- 查看 AWR 数据保留设置
SELECT * FROM dba_hist_wr_control;
-- 修改 AWR 数据保留时间(示例:保留30天)
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention => 30*24*60 -- 保留时间(分钟)
);告警日志保留
保留策略:
- 生产环境:3-6个月
- 测试环境:1-3个月
- 开发环境:1个月以内
管理方法:
- 配置日志轮换
- 实施日志压缩
- 使用日志管理工具
跟踪文件保留
保留策略:
- 正常情况下:7-14天
- 故障诊断期间:直到问题解决
- 重要事件:按需保留
管理方法:
- 自动清理过期文件
- 对重要文件进行归档
- 限制跟踪文件大小
监控数据清理
AWR 数据清理
sql
-- 手动清理 AWR 数据(示例:删除10天前的快照)
EXEC DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(
low_snap_id => 1,
high_snap_id => 100,
dbid => NULL
);
-- 清理指定范围的 AWR 数据
EXEC DBMS_WORKLOAD_REPOSITORY.PURGE(
begin_snap => 1,
end_snap => 100,
dbid => NULL
);告警日志清理
自动清理:
- 配置日志轮换机制
- 使用 logrotate 工具(Linux)
- 配置 Windows 事件日志属性
手动清理:
- 压缩归档旧日志
- 删除过期日志文件
- 确保清理不影响正在写入的日志
跟踪文件清理
sql
-- 查找并删除过期的跟踪文件
-- 在 Linux/Unix 系统
find /path/to/trace -name "*.trc" -mtime +7 -delete
find /path/to/trace -name "*.trm" -mtime +7 -delete
-- 在 Windows 系统
-- 使用 PowerShell 脚本清理过期文件SYSAUX 表空间管理
- 监控 SYSAUX 表空间使用:
sql
-- 查看 SYSAUX 表空间使用情况
SELECT * FROM v$sysaux_occupants ORDER BY space_usage_kbytes DESC;
-- 查看 SYSAUX 表空间大小和使用情况
SELECT tablespace_name, sum(bytes)/1024/1024 MB, sum(maxbytes)/1024/1024 MAX_MB
FROM dba_data_files WHERE tablespace_name = 'SYSAUX' GROUP BY tablespace_name;
SELECT tablespace_name, used_percent
FROM dba_tablespace_usage_metrics WHERE tablespace_name = 'SYSAUX';- 清理 SYSAUX 表空间:
sql
-- 清理 AWR 数据
EXEC DBMS_WORKLOAD_REPOSITORY.PURGE(
begin_snap => 1,
end_snap => (SELECT MAX(snap_id) FROM dba_hist_snapshot),
dbid => (SELECT dbid FROM v$database)
);
-- 清理 ASH 数据
EXEC DBMS_WORKLOAD_REPOSITORY.PURGE_ASH(
oldest_timestamp => SYSDATE - 7
);版本差异考虑
Oracle 11g 监控数据存储特点
AWR 数据:
- 存储在 SYSAUX 表空间中
- 默认保留时间为 7 天
- 默认快照间隔为 1 小时
ASH 数据:
- 内存中保留约 1 小时
- 持久化到 AWR 中
Oracle 12c 监控数据存储特点
增强的 AWR:
- 支持多租户架构
- 可在 CDB 和 PDB 级别收集数据
- 增强了 AWR 基线功能
统一审计数据:
- 存储在统一审计表中
- 提供更全面的审计信息
Oracle 19c 监控数据存储特点
自动索引数据:
- 存储自动索引相关的监控数据
- 帮助优化索引使用
机器学习相关数据:
- 存储性能分析和预测数据
- 支持智能性能调优
生产环境最佳实践
监控数据存储配置
SYSAUX 表空间配置:
- 为 SYSAUX 表空间预留足够空间
- 启用自动扩展
- 监控空间使用情况
告警日志配置:
- 配置合理的日志轮换策略
- 启用日志归档
- 监控日志文件大小
跟踪文件配置:
- 限制单个跟踪文件大小
- 配置跟踪文件自动清理
- 对重要跟踪文件进行归档
监控数据管理策略
定期清理:
- 制定监控数据清理计划
- 定期清理过期数据
- 确保清理操作不影响系统性能
数据备份:
- 备份重要的监控数据
- 确保备份数据可恢复
- 测试备份恢复流程
性能优化:
- 优化监控数据收集频率
- 合理设置数据保留时间
- 避免监控数据过度增长
监控与告警
存储监控:
- 监控监控数据存储的使用情况
- 设置存储容量告警阈值
- 预测存储容量需求
性能告警:
- 监控监控数据收集对系统性能的影响
- 设置合理的性能告警阈值
- 及时调整监控策略
常见问题(FAQ)
Q1: 如何管理 AWR 数据的存储和保留?
A1: 管理 AWR 数据的存储和保留的方法:
- 使用 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS 调整快照间隔和保留时间
- 定期使用 DBMS_WORKLOAD_REPOSITORY.PURGE 清理过期数据
- 监控 SYSAUX 表空间使用情况,确保有足够空间
- 对于重要的性能数据,创建 AWR 基线进行长期保留
Q2: 如何处理 SYSAUX 表空间增长过快的问题?
A2: 处理 SYSAUX 表空间增长过快的问题:
- 检查占用 SYSAUX 表空间的主要对象
- 调整 AWR 数据保留时间和快照间隔
- 清理过期的 AWR 和 ASH 数据
- 考虑使用分区表来管理大型监控表
- 必要时扩展 SYSAUX 表空间
Q3: 如何设置合理的监控数据收集频率?
A3: 设置合理的监控数据收集频率的建议:
- 核心性能指标:5-15分钟
- 详细性能数据:30-60分钟
- 趋势数据:1-24小时
- 告警数据:实时
同时,根据系统负载和业务需求进行调整:
- 业务高峰期可适当增加收集频率
- 非业务高峰期可减少收集频率
- 对于性能问题排查,可临时提高收集频率
Q4: 如何选择合适的监控数据存储介质?
A4: 选择合适的监控数据存储介质的建议:
- 热数据(近期数据):使用本地 SSD 或高性能存储
- 温数据(中期数据):使用网络存储或大容量 HDD
- 冷数据(长期数据):使用云存储或磁带存储
同时考虑以下因素:
- 数据访问频率
- 存储容量需求
- 预算限制
- 数据保留期限
- 灾难恢复需求
Q5: 如何确保监控数据的安全性?
A5: 确保监控数据安全性的措施:
- 对监控数据实施访问控制
- 加密敏感的监控数据
- 定期备份监控数据
- 实施监控数据的审计
- 限制监控数据的访问权限
Q6: 如何优化监控数据对系统性能的影响?
A6: 优化监控数据对系统性能影响的方法:
- 合理设置监控数据收集频率
- 避免在业务高峰期执行密集的监控数据收集
- 使用轻量级监控工具和方法
- 对监控数据收集过程进行性能调优
- 考虑使用专用的监控服务器
Q7: 如何制定监控数据的长期归档策略?
A7: 制定监控数据长期归档策略的建议:
- 建立分层存储架构(热、温、冷数据)
- 对冷数据实施压缩和归档
- 考虑使用云存储进行长期归档
- 制定数据归档和检索流程
- 定期检查归档数据的完整性和可访问性
