·49491 字·233 分钟
一次达梦 DM8 内存与排序空间故障实战:表面是 -20011 缓冲区不足和 -544 排序空间不足,实际排查发现主机和 BUFFER 并未耗尽,真正值得关注的是报表过程中的大排序、动态 SQL、DBMS_OUTPUT、字面量拼接、重复执行和无必要去重。
从执行计划三元组、access/filter、CSCN2、SSEK2、BLKUP2 等基础开始,结合 EXPLAIN、AUTOTRACE 和 ET,用多组 DM8 实测案例分析扫描、回表、聚合、连接、排序和集合运算。
一次 Oracle 11g RAC 故障复盘:表面是连接数耗尽,实际根因是高并发 UPDATE 触发行级 Trigger,Trigger 双重循环中的 DELETE 对近 300 万行表反复全表扫描,拖长事务持锁时间,最终放大 TX 行锁并耗尽 Session。
dmtop 是一个面向达梦 DM8 的轻量实时性能诊断工具,用一个终端界面串联操作系统指标、数据库负载、Linux TID、数据库 SID、当前 SQL、执行计划和锁阻塞链,帮助 DBA 更快完成故障现场定位。
一次 Oracle SQL 执行计划异常故障复盘:多个 w3wp.exe 会话集中执行 SQL_ID 4ja6bgs1su89c,child 21 选择低选择性 DEALID 索引,导致约 29.7 亿逻辑读、CPU 接近 100%、latch free 与 cache buffers chains 竞争。最终通过固定好计划、清理坏游标、创建复合索引并收集统计信息恢复稳定。
通过操作系统 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。