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