Oracle 杨廷琨 Oracle 内部机制揭秘
Oracle 杨廷琨 Oracle 内部机制揭秘
来源:杨廷琨 (AskTOM 中文 / 啖汤) 适用版本:Oracle Database 全版本 文档版本:v1.0 / 2026-07-22
1. 概述
杨廷琨擅长 Oracle 内部机制讲解[1]。
详细见:Oracle 数据块结构深度。
2. 数据块结构
2.1 块头
- 块类型
- 事务槽(ITL)
- SCN
- 块地址
2.2 行目录
- 行位置
- 行长度
- 行状态
2.3 行数据
- 列值
- 行头
- 列长度
2.4 空闲空间
- 块尾
- 未用空间
3. ITL(Interested Transaction List)
3.1 作用
- 事务信息
- 块级锁
- 一致性读
3.2 结构
- 事务 ID
- Undo 地址
- SCN
- Flag
3.3 INITRANS/MAXTRANS
CREATE TABLE emp (...) INITRANS 2 MAXTRANS 255;
3.4 杨廷琨分析
- INITRANS 太小 → 等待
- 高并发调整
- 监控
4. SCN 机制
4.1 类型
- 系统 SCN
- 提交 SCN
- 块 SCN
- 查询 SCN
4.2 一致性读
- 查询 SCN
- 块 SCN 比较
- Undo 回滚
4.3 杨廷琨强调
- SCN 是一致性基础
- MVCC 核心
- 理解
详细见:Oracle SCN 机制详解。
5. Undo 机制
5.1 作用
- 回滚
- 一致性读
- 闪回
5.2 Undo Segment
- 事务绑定
- 自动管理(AUM)
- UNDO_RETENTION
5.3 ORA-01555
- Undo 被覆盖
- 长查询
- 增加 Undo
详细见:Oracle Undo 深度解析。
6. Latch
6.1 作用
- 内存结构保护
- 短期锁
- 串行化
6.2 类型
- cache buffers chains
- library cache
- shared pool
- redo copy
6.3 杨廷琨分析
- Latch 争用 = 性能问题
- 原因分析
- 优化
详细见:Oracle Latch 与 Mutex 深度解析。
7. Mutex
7.1 作用
- 替代部分 Latch
- 更轻量
- 11g+
7.2 优势
- 内存小
- 速度快
- 减少 Latch
7.3 杨廷琨对比
- Latch vs Mutex
- 适用场景
- 性能
8. Buffer Cache
8.1 LRU
- 最近最少使用
- 替换算法
- 冷热分离
8.2 LRUW
- 脏块链
- DBWn 写
8.3 多缓冲池
ALTER SYSTEM SET db_cache_size=1G;
ALTER SYSTEM SET db_keep_cache_size=200M;
ALTER SYSTEM SET db_recycle_cache_size=200M;
详细见:Oracle Buffer Cache 工作原理详解。
9. 共享池
9.1 Library Cache
- SQL/PLSQL
- 执行计划
- 游标
9.2 Data Dictionary Cache
- 数据字典
- 解析需要
9.3 Result Cache
- 11g+
- 结果缓存
- 性能
10. Redo Buffer
10.1 作用
- Redo 缓存
- LGWR 写
- COMMIT
10.2 大小
SHOW PARAMETER log_buffer
10.3 杨廷琨分析
- 太小:等待
- 太大:浪费
- 平衡
11. 后台进程
11.1 关键进程
- PMON:进程监控
- SMON:系统监控
- DBWn:写数据
- LGWR:写 Redo
- CKPT:检查点
- ARCn:归档
11.2 协同
- LGWR 先于 DBWn
- CKPT 触发 DBWn
- ARCn 跟随 LGWR
详细见:Oracle 后台进程 SMON PMON DBWn LGWR CKPT ARCn 详解。
12. 杨廷琨学习方法
12.1 转储
-- 数据块转储
ALTER SYSTEM DUMP DATAFILE 5 BLOCK 100;
-- 控制文件转储
ALTER SESSION SET EVENTS 'immediate trace name controlf level 8';
12.2 视图
- v$waitstat
- v$sysstat
- v$latch
- v$lock
12.3 实验
- 测试环境
- 复现
- 验证
13. 内部机制应用
13.1 性能诊断
- 等待事件
- 内部视图
- 根因
13.2 故障诊断
- 转储
- trace
- 分析
13.3 优化
- 参数调整
- 结构调整
- 验证
14. 最佳实践
- 原理:理解
- 转储:学习
- 视图:监控
- 实验:验证
- 案例:学习
- 等待:分析
- 参数:合理
- 监控:内部
- 文档:记录
- 持续:学习
15. 参考资料
[1] 杨廷琨, “Oracle 内部机制”, https://www.modb.co/u/yangtingkun [2] Oracle Database Concepts 19c [3] Jonathan Lewis, “Oracle Core”