通过操作系统 PID、v$session、dba_scheduler_running_jobs、dbms_xplan 等手段,定位 Oracle CPU 高的根因,并给出 SQL 和索引优化思路。
一次达梦 SQL 优化实战:SQL 最终只返回 15 行,但因缺少 SO_ID、SO_DET_NO 联合索引,在 SHOP_SALE_ORDER_DETAIL 宽表上产生大量 BLKUP2 回表。通过新增联合索引和收集统计信息,逻辑读从 40046153 页降到 46 页。
一篇 Oracle oratop 实战指南:用类 top 的方式实时观察数据库负载,快速判断问题来自 CPU、I/O、锁等待、提交、RAC GC,还是具体会话和 SQL_ID。
一次 Oracle SQL 优化实战:AWR 定位 SQL_ID f6asas4cp2n53,SQL Monitor 显示执行约 27 秒且 User I/O 等待明显,SQL Tuning Advisor 建议 SQL Profile 和复合索引,最终创建 UI_SALES_INVOICES(IOTYPE,CSTID) 索引后性能降至约 5 秒。
一次 Oracle Redo 风暴处理实战:生产库磁盘使用率超过 90%,日志切换从每小时十几次飙升到数百次,AWR 显示 log file switch checkpoint incomplete 占 DB time 约 41%,最终定位 SQL_ID 0vq0s6rm8fawn 每小时执行 376 万次,约 1000+ 次/秒 UPDATE。
一次 Oracle SQL 优化实战:EBS 请求执行 10 多分钟,原 SQL_ID 为 gcppkx5y05x3k。通过分析执行计划发现多个标量子查询重复扫描 MTL_LOT_NUMBERS 和 CUX_OE_MTL_RESERVATIONS 等大表,最终将重复标量子查询改写为 LEFT JOIN,并补充 VAT_HEADER_ID、PROPERTY_TYPE 等索引,执行时间从 573s 降到 98s。