了解Database Replay Capture内部原理
这篇讲的是 Oracle 11g 中 Database Replay 特性的工作负载捕获机制,作者从实际演示出发,剖析了其内部原理。它揭示了捕获并非被动记录,而是由服务进程主动完成:进程在 PGA(特别是 WCR Capture PGA)中累积会话的登录、登出及 SQL 执行信息,待历史记录达到一定数量后,再主动将数据写入到磁盘上的 WCR 文件中。这个过程中,进程会经历“WCR: capture file IO write”等待事件。 文章也量化了捕获带来的开销:磁盘上生成的是不可直读的二进制文件,在大并发 OLTP 场景下,10 分钟捕获可能占用约 1GB 空间;性能损耗约为 4.5%,且每个会话会额外消耗约 64KB 内存。对于 RAC 集群,共享目录是必须的。 此外,文中还梳理了相关的性能视图与等待事件,例如从 `v$event_name` 中查询所有 WCR 相关事件,以及查看 `v$latch` 中新增的 WCR 闩锁。这些细节展示了该功能在数据库内核中留下的足迹,为深入理解和监控这一特性提供了实用线索。