读书笔记:Oracle数据库的"心脏":SGA与后台进程
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。
本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。
Oracle数据库的"心脏":SGA与后台进程
如果把Oracle数据库比作一个人,那么SGA(系统全局区)就是它的大脑,负责存储所有关键信息,而后台进程则是维持生命运转的器官。它们一起协作,确保数据库高效稳定地运行。
SGA:数据库的"共享内存"
SGA是Oracle实例的核心内存区域,主要功能包括:
- 缓存数据:像电脑内存一样,临时存储频繁访问的数据,减少磁盘读取。
- 存储SQL计划:记住SQL语句的执行方案,下次直接调用,避免重复解析。
- 管理事务日志:临时记录数据修改(重做日志),确保故障时能恢复。
不同系统的实现方式:
- Linux/Unix:通过共享内存技术(
shmget/shmat),多个进程直接访问同一块内存。 - Windows:因为线程共享内存,直接用
malloc分配即可。
后台进程:数据库的"隐形守护者"
Oracle启动后,会运行多个后台进程(如SMON、PMON等),它们各司其职:
- SMON:负责系统恢复和空间管理,像"数据库医生"。
- PMON:监控用户进程,如果崩溃了,它会清理残局。
- DBWn:把内存中的数据写回磁盘,避免内存爆满。
有趣的是,这些进程其实是同一个程序(oracle)的不同分身,只是启动时参数不同,就像同一个人换上不同制服执行不同任务。
连接数据库:两种工作模式
1. 专用服务器(独享VIP通道)
- 特点:每个用户连接独占一个服务器进程,适合高负载操作。
- 例子:你用SQL*Plus登录后,系统专门开一个进程为你服务。
- 优点:响应快,资源独立。
- 缺点:用户多时,进程数量爆炸,拖累系统。
2. 共享服务器(拼车模式)
- 特点:多个用户共享少量服务器进程,通过"调度器"分配任务。
- 工作流程:
- 客户端连接调度器。
- 调度器把请求丢进SGA的"任务队列"。
- 空闲的共享服务器取任务执行,结果返回"响应队列"。
- 调度器把结果传回客户端。
- 优点:支持更多用户,节省资源。
- 缺点:复杂查询可能排队。
注意:共享服务器需要额外配置,但专用模式永远可用。
如何建立连接?TCP/IP的幕后故事
-
客户端发起请求
提供用户名、密码、主机IP、端口(默认1521)和服务名(如ORCL)。- 简易连接:
sqlplus scott/tiger@localhost:1521/ORCL - 配置文件:在
tnsnames.ora中定义别名,如@ORCL。
- 简易连接:
-
监听器接手
- 监听器是服务器的"门卫",守在1521端口。
- 如果是专用服务器,它会
fork()一个新进程专门服务你(Linux)或创建线程(Windows)。 - 如果是共享服务器,它会把你分配给某个调度器,后续由调度器协调共享进程。
-
连接完成
- 专用模式:客户端直接与专属进程通信。
- 共享模式:客户端通过调度器间接与共享进程交互。
总结
- SGA是共享内存,缓存数据、SQL计划和日志。
- 后台进程默默维护数据库健康,如
SMON、PMON。 - 连接方式:
- 专用服务器:独享资源,适合高性能场景。
- 共享服务器:省资源,适合高并发但轻量操作。
- 监听器是桥梁,决定如何分配连接资源。
接下来,我们会深入探讨数据库的文件组成(如数据文件、日志文件)和SGA的详细结构,揭开更多Oracle的核心秘密!
------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

浙公网安备 33010602011771号