当前位置: 首页 > news >正文

Oracle AWR管理与快照操作完整指南

1. AWR简介与开启方法

AWR(Automatic Workload Repository)是Oracle数据库的性能诊断工具,它能自动收集、处理和维护性能统计信息。AWR默认情况下是开启的,但我们可以通过以下方式确认和管理其状态。

检查AWR状态

-- 检查AWR快照设置
SELECT * FROM DBA_HIST_WR_CONTROL;-- 检查快照保留策略
SELECT * FROM DBA_HIST_SNAPSHOT ORDER BY SNAP_ID;

开启/关闭AWR

-- 修改AWR快照设置(开启)
BEGINDBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 11520,    -- 保留时间(分钟),8天interval  => 60        -- 快照间隔(分钟));
END;
/-- 关闭AWR快照(不推荐)
BEGINDBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(interval  => 0         -- 设置为0关闭自动快照);
END;
/

2. AWR快照管理

手动创建快照

-- 创建手动快照
EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();-- 创建快照并返回快照ID
DECLAREsnap_id NUMBER;
BEGINsnap_id := DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT();DBMS_OUTPUT.PUT_LINE('创建的快照ID: ' || snap_id);
END;
/

查看快照详情

-- 查看所有快照信息
SELECT snap_id, begin_interval_time, end_interval_time,startup_time
FROM sys.wrm$_snapshot 
ORDER BY snap_id;-- 查看最近24小时的快照
SELECT snap_id, begin_interval_time, end_interval_time
FROM sys.wrm$_snapshot 
WHERE begin_interval_time >= SYSDATE - 1
ORDER BY snap_id;

删除快照

-- 删除单个快照
EXEC DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 612, high_snap_id => 612);-- 删除快照范围(如示例中的612到700)
EXEC DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 612, high_snap_id => 700);-- 删除特定时间范围的快照
DECLAREmin_snap_id NUMBER;max_snap_id NUMBER;
BEGINSELECT MIN(snap_id), MAX(snap_id)INTO min_snap_id, max_snap_idFROM sys.wrm$_snapshotWHERE begin_interval_time BETWEEN TO_DATE('2024-01-01', 'YYYY-MM-DD') AND TO_DATE('2024-01-31', 'YYYY-MM-DD');DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => min_snap_id, high_snap_id => max_snap_id);
END;
/

3. 生成AWR报告的方法

方法一:使用awrrpt.sql脚本(最常用)

-- 在SQL*Plus中执行
@$ORACLE_HOME/rdbms/admin/awrrpt.sql-- 或者指定完整路径
@?/rdbms/admin/awrrpt.sql

执行步骤:

  1. 选择报告类型(HTML或TEXT)
  2. 输入快照天数或直接按回车查看所有可用快照
  3. 选择开始快照ID
  4. 选择结束快照ID
  5. 指定报告输出文件名

方法二:使用DBMS_WORKLOAD_REPOSITORY包

-- 生成HTML格式的AWR报告
SELECT OUTPUT
FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(l_dbid => (SELECT dbid FROM v$database),l_inst_num => (SELECT instance_number FROM v$instance),l_bid => 612,        -- 开始快照IDl_eid => 700         -- 结束快照ID
));-- 生成TEXT格式的AWR报告
SELECT OUTPUT
FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_TEXT(l_dbid => (SELECT dbid FROM v$database),l_inst_num => (SELECT instance_number FROM v$instance),l_bid => 612,l_eid => 700
));

方法三:生成指定时间段的AWR报告

-- 基于时间范围生成AWR报告
VARIABLE report_clob CLOB;BEGIN:report_clob := DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML((SELECT dbid FROM v$database),(SELECT instance_number FROM v$instance),NULL,  -- 使用时间范围而不是快照IDTO_DATE('2024-01-01 10:00:00', 'YYYY-MM-DD HH24:MI:SS'),TO_DATE('2024-01-01 11:00:00', 'YYYY-MM-DD HH24:MI:SS'));
END;
/-- 查看报告内容
SELECT :report_clob FROM DUAL;

方法四:保存AWR报告到文件

-- 使用SPOOL命令保存报告
SET PAGESIZE 0
SET LINESIZE 1000
SET LONG 1000000
SET LONGCHUNKSIZE 1000000SPOOL /tmp/awr_report_612_700.htmlSELECT OUTPUT
FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML((SELECT dbid FROM v$database),(SELECT instance_number FROM v$instance),612,700
));SPOOL OFF

4. 其他类型的AWR报告

生成比较AWR报告(AWR Diff Report)

-- 比较两个时间段的性能
@$ORACLE_HOME/rdbms/admin/awrddrpt.sql-- 或者使用包
SELECT OUTPUT
FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_DIFF_REPORT_HTML((SELECT dbid FROM v$database),(SELECT instance_number FROM v$instance),600, 610,  -- 第一个时间段700, 710   -- 第二个时间段
));

生成SQL报告

-- 针对特定SQL生成报告
@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql

生成Segment报告

-- 生成段级统计信息报告
@$ORACLE_HOME/rdbms/admin/awrrpt.sql

5. AWR配置最佳实践

推荐配置

-- 设置合理的AWR参数
BEGINDBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 40320,    -- 28天保留期interval  => 60,       -- 每小时快照topnsql   => 100       -- 保留TOP 100 SQL);
END;
/-- 对于高负载系统
BEGINDBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 20160,    -- 14天保留期interval  => 30,       -- 每30分钟快照topnsql   => 200);
END;
/

空间管理

-- 检查AWR空间使用情况
SELECT * FROM DBA_HIST_SNAPSHOT 
ORDER BY snap_id DESC;-- 估算AWR空间需求
SELECT * FROM DBA_HIST_SNAPSHOT 
WHERE begin_interval_time >= SYSDATE - 7;

6. 实用监控脚本

快照监控

-- 监控快照生成频率
SELECT TO_CHAR(begin_interval_time, 'YYYY-MM-DD HH24:MI') as snapshot_time,snap_id,(end_interval_time - begin_interval_time) * 24 * 60 as duration_minutes
FROM sys.wrm$_snapshot 
WHERE begin_interval_time >= SYSDATE - 1
ORDER BY snap_id DESC;-- 验证删除操作后的快照状态
SELECT snap_id, begin_interval_time, end_interval_time 
FROM sys.wrm$_snapshot 
ORDER BY snap_id;

查找可用快照

-- 查找特定时间段的快照
SELECT snap_id, begin_interval_time, end_interval_time
FROM dba_hist_snapshot
WHERE begin_interval_time BETWEEN SYSDATE - 7 AND SYSDATE
ORDER BY snap_id;

7. 注意事项

  1. 权限要求:操作AWR需要DBA角色或相应的系统权限
  2. 空间考虑:定期清理旧快照以避免SYSAUX表空间膨胀
  3. 性能影响:频繁的快照可能对系统性能产生轻微影响
  4. 业务时段:避免在业务高峰期进行大量快照删除操作
  5. 报告解读:AWR报告包含大量信息,需要熟悉关键指标如:
    • 负载配置文件(Load Profile)
    • 实例效率百分比(Instance Efficiency Percentages)
    • 等待事件(Top 5 Timed Events)
    • SQL统计信息(SQL Statistics)

通过合理配置和管理AWR快照,并熟练掌握AWR报告的生成方法,可以有效地监控和诊断数据库性能问题,同时控制存储空间的合理使用。

http://www.dtcms.com/a/570066.html

相关文章:

  • 济源专业做网站公司又拍云WordPress 插件
  • 蓝色风格网站网站案例上海
  • 如何在 MySQL Server 中配置 SSL 证书 ?
  • UGUI笔记——3D坐标转换成UGUI坐标
  • 2025 | 时序预测新范式:多智能体AI系统实现全流程自动化!
  • 营销型网站建设模板郴州网络科技有限公司
  • 网站服务器如何做热备价网络公司排名前十名有哪些
  • 视频转图片工具
  • 长春网站建设方案优化网络规划设计师教程第二版电子版
  • 怎样建商业网站wordpress升级机制
  • CANN算子开发实战:从动态Shape到测试验证的深度解析
  • re一下--day8--字符串(一)
  • 网站关键词在哪里修改网站建设80hoe
  • 企业数据服务新选择:“五度易链” SaaS/API/ 本地化部署方案适配全规模需求
  • 【JUnit实战3_27】第十六章:用 JUnit 测试 Spring 应用:通过实战案例深入理解 IoC 原理
  • 网站源码模板免费网站服务器2020
  • ftp怎么连接网站空间如何建立外贸网站
  • 不同防滑设计在复杂牙拔除中的效能评估
  • 基于springboot的精准扶贫管理系统开发与设计
  • 电子学会青少年软件编程(C/C++)5级等级考试真题试卷(2025年9月)
  • linux系统rsync文件传输
  • 服务器建站用哪个系统好新闻稿件
  • 基于51单片机的宠物喂食器的设计与实现(论文+源码)
  • 建设网站入不入无形资产云南建设厅网站监理员培训
  • 佛山企业网站建设制作网页案例
  • Maven基础(二)
  • Java大厂面试真题:Spring Boot+微服务+AI智能客服三轮技术拷问实录(四)
  • 神领物流v2.0-day3-运费微服务笔记(个人记录、含练习答案、仅供参考)
  • 网站建设服务费计入会计科目做电影网站需要多大空间
  • 电机东莞网站建设营销策划公司有哪些职位