深度解析Oracle架构:Oracle数据库核心组件功能全览
- 一、开篇引言:为什么DBA必须懂组件?
- 二、全景架构流程图:一条SQL的奇幻之旅
- 三、五大核心组件深度拆解
- 1. 实例:数据库的“大脑”与“左手”
- 2. SGA:共享内存的“五大池”
- 3. PGA:进程私有的“计算车间”
- 4. 后台进程:无声的守护者
- 5. 物理与逻辑存储结构:数据的“肉体”与“灵魂”
- 四、总结
🌺The Begin🌺点点关注,收藏不迷路🌺 ⬇ ⬇ 底部 ⬇ ⬇ |
一、开篇引言:为什么DBA必须懂组件?
在Oracle数据库的运维与开发中,遇到性能问题或宕机故障时,新手往往只看到“数据库挂了”这个表象,而高手则会立刻拆解定位:是实例崩溃了?是数据文件损坏了?还是共享池挤满了硬解析?
Oracle数据库的精髓在于其物理结构与逻辑结构的高度解耦。本文将通过一张流程图和五个核心组件的拆解,带你建立完整的Oracle架构观。
二、全景架构流程图:一条SQL的奇幻之旅
在详解组件前,先通过一个流程图,直观感受当一个用户查询SELECT * FROM EMP WHERE ID=1时,各组件是如何协同工作的:
三、五大核心组件深度拆解
1. 实例:数据库的“大脑”与“左手”
功能描述:
实例是一组用于访问数据库的后台进程和内存结构的集合。它不等同于数据库,数据库是物理文件的集合,实例则是负责操作这些文件的生命体。一个实例只能挂载一个数据库(RAC除外)。
核心构成拆解:
- SGA(系统全局区):大脑皮层,所有用户共享的内存区域。
- 后台进程:左手,负责异步执行I/O操作,监控与恢复。
2. SGA:共享内存的“五大池”
功能描述:
SGA 是实例启动时分配的一组共享内存结构。其大小由SGA_MAX_SIZE和SGA_TARGET控制(ASMM自动管理)。它是Oracle性能的核心战场,90%的内存调优都在这里。
必须掌握的5大池子:
| 序号 | 中文名 | 英文缩写 | 核心功能描述 | 调优关键点 |
|---|---|---|---|---|
| 1 | 数据库缓冲区缓存 | Database Buffer Cache | 存储从数据文件读出的数据块副本。修改过的叫脏块。 | Buffer Cache Hit Ratio |
| 2 | 共享池 | Shared Pool | 分为库缓存和字典缓存。存储解析过的SQL和执行计划。 | 减少硬解析,绑定变量 |
| 3 | 重做日志缓冲区 | Redo Log Buffer | 记录数据块的所有变更向量,循环写入,极小但极快。 | 关注redo log space requests |
| 4 | 大池 | Large Pool | 专供RMAN备份、共享服务器UGA、并行查询使用。 | 避免抢占共享池空间 |
| 5 | Java池/流池 | Java/Streams Pool | 运行数据库内Java代码或Streams捕获进程时使用。 | 特定功能场景下配置 |
3. PGA:进程私有的“计算车间”
功能描述:
Process Global Area,非共享内存,专属于每个服务器进程。如果PGA不够用,排序会在临时表空间的磁盘上进行,性能将呈指数级下降。
PGA 的两大核心使命:
- 排序区:存放
ORDER BY、GROUP BY、DISTINCT产生的临时数据。 - 哈希区:存放哈希连接生成的哈希表。
- 位图合并区:合并位图索引扫描结果。
- 会话信息:绑定变量和游标状态。
4. 后台进程:无声的守护者
功能描述:
后台进程剥离了用户进程的I/O等待,实现了异步操作。它们是多进程Oracle体系的核心。
| 序号 | 进程缩写 | 核心职能 | 打个比方 |
|---|---|---|---|
| 1 | DBWn | 将Buffer Cache中的脏块写入数据文件 | 保洁阿姨,负责将脏碗筷放入碗柜 |
| 2 | LGWR | 将Redo Log Buffer写入联机重做日志 | 史官,先记录“做了什么”再做事 |
| 3 | CKPT | 触发检查点,通知DBWn写脏块,更新控制文件和数据文件头 | 现场督察,让数据文件跟上日志进度 |
| 4 | SMON | 实例崩溃恢复、回收临时段、合并空闲空间 | 系统保洁与急救队 |
| 5 | PMON | 清理失败用户的进程,释放锁和资源 | 单个用户的善后管家 |
| 6 | ARCn | 归档模式下,将联机日志复制到归档日志 | 档案管理员,保障数据可回溯 |
5. 物理与逻辑存储结构:数据的“肉体”与“灵魂”
功能描述:
组件不仅是内存和进程,最终的落盘结构——物理文件和逻辑文件,也是核心组件。
- 物理结构(肉体):
- 数据文件:存放实际数据。
- 控制文件:存放数据库的物理结构快照。
- 联机重做日志:存放重做记录,用于恢复。
- 逻辑结构(灵魂):
- 表空间:逻辑上最大的容器,指向一个或多个数据文件。
- 段:表、索引等对象所占的空间。
- 区:段分配的连续块集合。
- 块:Oracle I/O的最小单位,数据仓储的最底层。
四、总结
理解Oracle,就是理解实例与数据库的分离。SGA(共享内存)解决并发访问的速度问题,PGA(私有内存)解决进程计算的独立性问题,后台进程解决I/O的异步问题,而物理存储解决数据的持久化问题。这四者构成了Oracle坚不可摧的根基。
你在日常调优中,Buffer Cache命中率和Shared Pool硬解析率,哪一个是你遇到最头疼的问题?欢迎评论区留言。
🌺The End🌺点点关注,收藏不迷路🌺 ⬆ ⬆ 顶部 ⬆ ⬆ |