本文档风哥主要介绍Oracle EMCC SQL监控相关知识,包括SQL监控的概念、组件、查看、分析、调优等内容,由风哥教程参考Oracle官方文档EMCC内容编写,适合DBA人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 EMCC SQL监控概念
Oracle EMCC SQL监控是Enterprise Manager Cloud Control提供的SQL性能监控和分析功能,通过图形化界面可以实时监控SQL执行状态,分析SQL性能问题,提供SQL调优建议。学习交流加群风哥微信: itpux-com
- 实时SQL监控
- SQL执行计划分析
- SQL性能统计
- SQL调优建议
- SQL历史记录
1.2 EMCC SQL监控组件
EMCC SQL监控的主要组件:
- SQL监控列表:正在执行的SQL列表
- SQL详情:SQL执行详情
- 执行计划:SQL执行计划
- SQL调优顾问:SQL调优建议
- SQL历史:SQL执行历史
1.3 EMCC SQL监控功能
EMCC SQL监控的主要功能:
- 实时监控:监控正在执行的SQL
- 性能分析:分析SQL性能问题
- 计划分析:分析执行计划
- 调优建议:提供调优建议
- 历史对比:对比历史执行情况
Part02-生产环境规划与建议
2.1 EMCC SQL监控规划
EMCC SQL监控规划要点:
– 关键SQL:实时监控
– 慢SQL:重点分析
– 高频SQL:定期优化
# SQL监控阈值
– 执行时间 > 5秒:监控
– 执行时间 > 30秒:告警
– 执行时间 > 60秒:严重
# SQL调优策略
– 定期分析TOP SQL
– 及时优化慢SQL
– 建立SQL审核机制
2.2 EMCC SQL监控设计原则
EMCC SQL监控设计原则:
- 重点监控:重点监控关键SQL
- 及时分析:及时分析性能问题
- 持续优化:持续优化SQL性能
- 文档记录:记录优化过程
- 审核机制:建立SQL审核机制
2.3 EMCC SQL监控策略
EMCC SQL监控策略:
- 主动监控:主动监控SQL执行
- 被动分析:问题出现后分析
- 混合策略:主动监控+被动分析
Part03-生产环境项目实施方案
3.1 EMCC查看SQL监控
3.1.1 EMCC查看SQL监控列表
https://emcc.fgedu.net.cn:7803/em
# 查看SQL监控列表步骤:
1. 登录EMCC控制台
2. 选择目标数据库:fgedudb
3. 点击”性能” -> “SQL监控”
4. 查看正在执行的SQL:
– SQL ID
– SQL文本
– 执行时间
– 状态
– 用户
# SQL监控列表显示:
SQL Monitor – fgedudb
=====================
SQL ID Status Duration User SQL Text
————– ———- ——– —— ——————–
abc123def EXECUTING 45s FGEDU SELECT * FROM orders…
xyz789uvw EXECUTING 30s FGEDU UPDATE inventory SET…
ghi456rst COMPLETED 15s SYSTEM INSERT INTO logs…
# 使用EMCLI查看SQL监控
$ emcli get_sql_monitor -target=”fgedudb”
SQL Monitor Report
==================
Active SQL: 5
Long Running SQL: 2
Completed SQL: 100
3.1.2 EMCC查看SQL详情
1. 登录EMCC控制台
2. 选择目标数据库:fgedudb
3. 点击”性能” -> “SQL监控”
4. 点击SQL ID查看详情
5. 查看SQL执行信息:
– SQL文本
– 执行计划
– 执行统计
– 等待事件
# SQL详情页面显示:
SQL Details – abc123def
=======================
SQL Text: SELECT * FROM orders WHERE order_date > :b1
Status: EXECUTING
Duration: 45s
CPU Time: 30s
Wait Time: 15s
IO Requests: 5000
Buffer Gets: 100000
Disk Reads: 50000
# 使用EMCLI查看SQL详情
$ emcli get_sql_details \
-target=”fgedudb” \
-sql_id=”abc123def”
SQL Details Report
==================
SQL ID: abc123def
Plan Hash Value: 1234567890
Executions: 1
Elapsed Time: 45s
CPU Time: 30s
Buffer Gets: 100000
Disk Reads: 50000
3.2 EMCC分析SQL性能
3.2.1 EMCC分析执行计划
1. 登录EMCC控制台
2. 选择目标数据库:fgedudb
3. 点击”性能” -> “SQL监控”
4. 点击SQL ID查看详情
5. 点击”执行计划”选项卡
6. 查看执行计划:
– 操作类型
– 对象名称
– 基数
– 成本
– 时间
# 执行计划显示:
Execution Plan – abc123def
==========================
ID Operation Object Rows Cost Time
— ———————- ———- —— —— ——
0 SELECT STATEMENT 1000 10s
1 TABLE ACCESS FULL ORDERS 10000 1000 10s
# 使用EMCLI查看执行计划
$ emcli get_sql_plan \
-target=”fgedudb” \
-sql_id=”abc123def”
Execution Plan
==============
Plan Hash Value: 1234567890
Operation: TABLE ACCESS FULL
Object: ORDERS
Cost: 1000
Cardinality: 10000
3.3 EMCC调优SQL
3.3.1 EMCC使用SQL调优顾问
1. 登录EMCC控制台
2. 选择目标数据库:fgedudb
3. 点击”性能” -> “SQL监控”
4. 点击SQL ID查看详情
5. 点击”运行SQL调优顾问”
6. 等待分析完成
7. 查看调优建议
# SQL调优顾问建议显示:
SQL Tuning Advisor – abc123def
==============================
Recommendation 1: Create Index
Benefit: 90% improvement
SQL: CREATE INDEX idx_orders_date ON orders(order_date);
Recommendation 2: Gather Statistics
Benefit: 10% improvement
SQL: EXEC DBMS_STATS.GATHER_TABLE_STATS(‘FGEDU’, ‘ORDERS’);
# 使用EMCLI运行SQL调优顾问
$ emcli run_sql_tuning_advisor \
-target=”fgedudb” \
-sql_id=”abc123def”
SQL Tuning Advisor Report
=========================
Task Name: STA_abc123def
Status: Completed
Findings: 2
Recommendations: 2
# 应用调优建议
SQL> CREATE INDEX idx_orders_date ON orders(order_date);
Index created.
SQL> EXEC DBMS_STATS.GATHER_TABLE_STATS(‘FGEDU’, ‘ORDERS’);
PL/SQL procedure successfully completed.
Part04-生产案例与实战讲解
4.1 EMCC SQL监控常见问题
4.1.1 EMCC SQL执行慢
# 分析步骤:
# 1. 查看SQL监控
$ emcli get_sql_monitor -target=”fgedudb”
Active SQL: 5
Long Running SQL: 2
# 2. 查看慢SQL详情
$ emcli get_sql_details \
-target=”fgedudb” \
-sql_id=”abc123def”
SQL ID: abc123def
Elapsed Time: 120s
Wait Event: db file sequential read
# 3. 分析执行计划
$ emcli get_sql_plan \
-target=”fgedudb” \
-sql_id=”abc123def”
Operation: TABLE ACCESS FULL
Object: ORDERS
Cost: 10000
# 4. 运行SQL调优顾问
$ emcli run_sql_tuning_advisor \
-target=”fgedudb” \
-sql_id=”abc123def”
Recommendation: Create Index
SQL: CREATE INDEX idx_orders_date ON orders(order_date);
# 5. 应用调优建议
SQL> CREATE INDEX idx_orders_date ON orders(order_date);
Index created.
# 6. 验证优化效果
SQL> SELECT * FROM orders WHERE order_date > SYSDATE – 30;
1000 rows selected.
Elapsed: 00:00:02.50
4.2 EMCC SQL监控故障排除
# 分析步骤:
# 1. 查看SQL历史
$ emcli get_sql_history \
-target=”fgedudb” \
-sql_id=”abc123def”
SQL History
===========
Date Plan Hash Elapsed Time
———- ———– ————
2026-04-05 1234567890 120s
2026-04-04 9876543210 5s
2026-04-03 9876543210 4s
# 2. 对比执行计划
SQL> SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(‘abc123def’, 0));
PLAN_TABLE_OUTPUT
—————————————————————-
| Id | Operation | Name | Rows | Cost |
————————————————–
| 0 | SELECT STATEMENT | | | 10000|
| 1 | TABLE ACCESS FULL |ORDERS | 10000| 10000|
# 3. 分析原因
SQL> SELECT plan_hash_value, timestamp
FROM dba_hist_sql_plan
WHERE sql_id = ‘abc123def’
ORDER BY timestamp DESC;
PLAN_HASH_VALUE TIMESTAMP
————— ——————-
1234567890 2026-04-05 10:00:00
9876543210 2026-04-04 10:00:00
# 4. 解决方案
# 使用SQL计划基线固定执行计划
SQL> DECLARE
l_plans PLS_INTEGER;
BEGIN
l_plans := DBMS_SPM.LOAD_PLANS_FROM_CURSOR_CACHE(
sql_id => ‘abc123def’,
plan_hash_value => 9876543210
);
END;
/
PL/SQL procedure successfully completed.
4.3 EMCC SQL监控优化方案
EMCC SQL监控优化方案:
- 定期分析:定期分析TOP SQL
- 及时优化:及时优化慢SQL
- 计划固定:固定好的执行计划
- 统计信息:保持统计信息最新
- 审核机制:建立SQL审核机制
Part05-风哥经验总结与分享
5.1 EMCC SQL监控管理最佳实践
EMCC SQL监控管理最佳实践:
- 定期分析:定期分析TOP SQL
- 及时优化:及时优化慢SQL
- 计划固定:固定好的执行计划
- 统计信息:保持统计信息最新
- 审核机制:建立SQL审核机制
- 文档记录:记录优化过程
5.2 EMCC SQL监控检查清单
– [ ] SQL监控已配置
– [ ] SQL告警已设置
– [ ] TOP SQL已分析
– [ ] 慢SQL已优化
– [ ] 执行计划已固定
– [ ] 统计信息已更新
– [ ] 文档已记录
– [ ] 审核机制已建立
# SQL监控问题处理流程
1. 发现SQL问题
2. 收集SQL相关信息
3. 分析SQL问题原因
4. 制定处理方案
5. 执行处理方案
6. 验证问题解决
7. 总结经验,优化预防措施
5.3 EMCC SQL监控管理工具推荐
EMCC SQL监控管理常用工具:
- EMCC控制台:图形化管理界面
- EMCLI:命令行管理工具
- SQL监控:实时SQL监控
- SQL调优顾问:SQL调优建议
- SQL计划管理:执行计划管理
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
