3.3 监控数据管理
监控数据管理:
— 查看监控数据保留时间
SELECT * FROM dba_hist_wr_control;– 调整监控数据保留时间
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention => 7*24*60, — 7天
interval => 60 — 60分钟
);– 手动清理监控数据
EXEC DBMS_SQLTUNE.PURGE_SQL_MONITOR(
sql_id => ‘sql_id_value’
);
SELECT * FROM dba_hist_wr_control;– 调整监控数据保留时间
EXEC DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
retention => 7*24*60, — 7天
interval => 60 — 60分钟
);– 手动清理监控数据
EXEC DBMS_SQLTUNE.PURGE_SQL_MONITOR(
sql_id => ‘sql_id_value’
);
Part04-生产案例与实战讲解
4.1 Oracle数据库实时SQL监控案例
以下是一个实时SQL监控的实际案例:
— 创建测试表
CREATE TABLE fgsales (
sale_id NUMBER PRIMARY KEY,
sale_date DATE,
amount NUMBER,
region VARCHAR2(50)
);– 插入测试数据
INSERT INTO fgsales VALUES (1, SYSDATE – 30, 1000, ‘North’);INSERT INTO fgsales VALUES (2, SYSDATE – 20, 2000, ‘South’);INSERT INTO fgsales VALUES (3, SYSDATE – 10, 1500, ‘East’);INSERT INTO fgsales VALUES (4, SYSDATE, 3000, ‘West’);COMMIT;– 执行需要监控的SQL语句
SELECT /*+ MONITOR */ region, SUM(amount) AS total_sales
FROM fgsales
GROUP BY region;– 查看SQL ID
SELECT sql_id, sql_text FROM v$sql
WHERE sql_text LIKE ‘%region, SUM(amount)%’ AND rownum = 1;– 查看实时SQL监控信息
SELECT * FROM v$sql_monitor
WHERE sql_id = ‘sql_id_value’;
CREATE TABLE fgsales (
sale_id NUMBER PRIMARY KEY,
sale_date DATE,
amount NUMBER,
region VARCHAR2(50)
);– 插入测试数据
INSERT INTO fgsales VALUES (1, SYSDATE – 30, 1000, ‘North’);INSERT INTO fgsales VALUES (2, SYSDATE – 20, 2000, ‘South’);INSERT INTO fgsales VALUES (3, SYSDATE – 10, 1500, ‘East’);INSERT INTO fgsales VALUES (4, SYSDATE, 3000, ‘West’);COMMIT;– 执行需要监控的SQL语句
SELECT /*+ MONITOR */ region, SUM(amount) AS total_sales
FROM fgsales
GROUP BY region;– 查看SQL ID
SELECT sql_id, sql_text FROM v$sql
WHERE sql_text LIKE ‘%region, SUM(amount)%’ AND rownum = 1;– 查看实时SQL监控信息
SELECT * FROM v$sql_monitor
WHERE sql_id = ‘sql_id_value’;
SQL> SELECT /*+ MONITOR */ region, SUM(amount) AS total_sales
2 FROM fgsales
3 GROUP BY region;REGION TOTAL_SALES
——- ———–
North 1000
South 2000
East 1500
West 3000
2 FROM fgsales
3 GROUP BY region;REGION TOTAL_SALES
——- ———–
North 1000
South 2000
East 1500
West 3000
SQL> SELECT sql_id, sql_text FROM v$sql
2 WHERE sql_text LIKE ‘%region, SUM(amount)%’ AND rownum = 1;SQL_ID SQL_TEXT
————- ————————————————–
pqr678 SELECT /*+ MONITOR */ region, SUM(amount) AS total_sales FROM fgsales GROUP BY region
SQL> SELECT sql_id, status, elapsed_time, cpu_time, buffer_gets
2 FROM v$sql_monitor
3 WHERE sql_id = ‘pqr678’;SQL_ID STATUS ELAPSED_TIME CPU_TIME BUFFER_GETS
————- ——— ———— ——– ————
pqr678 DONE 12345 6789 15
4.2 性能问题诊断实战
使用实时SQL监控诊断性能问题:
— 查看长时间运行的SQL语句
SELECT sql_id, status, elapsed_time, cpu_time, buffer_gets
FROM v$sql_monitor
WHERE status = ‘EXECUTING’
ORDER BY elapsed_time DESC;– 查看详细的监控报告
SELECT * FROM table(DBMS_SQLTUNE.REPORT_SQL_MONITOR(
sql_id => ‘sql_id_value’,
type => ‘HTML’,
report_level => ‘ALL’
));– 分析执行计划和资源使用
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(
sql_id => ‘sql_id_value’,
format => ‘ALLSTATS LAST’
));
SELECT sql_id, status, elapsed_time, cpu_time, buffer_gets
FROM v$sql_monitor
WHERE status = ‘EXECUTING’
ORDER BY elapsed_time DESC;– 查看详细的监控报告
SELECT * FROM table(DBMS_SQLTUNE.REPORT_SQL_MONITOR(
sql_id => ‘sql_id_value’,
type => ‘HTML’,
report_level => ‘ALL’
));– 分析执行计划和资源使用
SELECT * FROM table(DBMS_XPLAN.DISPLAY_CURSOR(
sql_id => ‘sql_id_value’,
format => ‘ALLSTATS LAST’
));
4.3 故障排除
实时SQL监控故障排除:
— 检查实时SQL监控是否启用
SELECT * FROM v$parameter WHERE name = ‘control_management_pack_access’;– 查看监控数据是否存在
SELECT COUNT(*) FROM v$sql_monitor;– 手动启用监控
ALTER SESSION SET statistics_level = ‘ALL’;– 检查监控数据收集情况
SELECT * FROM v$sql_monitor_statname;
SELECT * FROM v$parameter WHERE name = ‘control_management_pack_access’;– 查看监控数据是否存在
SELECT COUNT(*) FROM v$sql_monitor;– 手动启用监控
ALTER SESSION SET statistics_level = ‘ALL’;– 检查监控数据收集情况
SELECT * FROM v$sql_monitor_statname;
Part05-风哥经验总结与分享
5.1 实时SQL监控最佳实践
- 在生产环境中启用实时SQL监控
- 设置合理的监控阈值
- 定期查看监控报告
- 结合其他性能监控工具使用
- 建立性能问题的快速响应机制
5.2 常见问题与解决方案
- 监控数据不足:检查监控设置,确保相关参数已正确配置
- 监控数据过多:调整监控阈值,减少监控范围
- 性能影响过大:适当调整监控级别,平衡监控需求和系统性能
- 监控报告不完整:确保SQL语句执行时间足够长,触发监控机制
5.3 性能调优建议
- 使用实时SQL监控发现性能瓶颈
- 分析监控数据,识别问题SQL语句
- 优化问题SQL语句的执行计划
- 监控优化效果,持续改进
- 建立性能基线,跟踪性能变化
风哥提示:学习交流加群风哥QQ113257174
生产环境建议:请根据实际情况调整配置和参数,确保生产环境的安全性和稳定性。
风哥提示:更多学习教程公众号风哥教程itpux_com
更多视频教程www.fgedu.net.cn
学习交流加群风哥微信: itpux-com
from oracle:www.itpux.com
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
