读书笔记: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启动后,会运行多个后台进程(如SMONPMON等),它们各司其职:

  • SMON:负责系统恢复和空间管理,像"数据库医生"。
  • PMON:监控用户进程,如果崩溃了,它会清理残局。
  • DBWn:把内存中的数据写回磁盘,避免内存爆满。

有趣的是,这些进程其实是同一个程序(oracle)的不同分身,只是启动时参数不同,就像同一个人换上不同制服执行不同任务。


连接数据库:两种工作模式

1. 专用服务器(独享VIP通道)

  • 特点:每个用户连接独占一个服务器进程,适合高负载操作。
  • 例子:你用SQL*Plus登录后,系统专门开一个进程为你服务。
  • 优点:响应快,资源独立。
  • 缺点:用户多时,进程数量爆炸,拖累系统。

2. 共享服务器(拼车模式)

  • 特点:多个用户共享少量服务器进程,通过"调度器"分配任务。
  • 工作流程
    1. 客户端连接调度器。
    2. 调度器把请求丢进SGA的"任务队列"。
    3. 空闲的共享服务器取任务执行,结果返回"响应队列"。
    4. 调度器把结果传回客户端。
  • 优点:支持更多用户,节省资源。
  • 缺点:复杂查询可能排队。

注意:共享服务器需要额外配置,但专用模式永远可用。


如何建立连接?TCP/IP的幕后故事

  1. 客户端发起请求
    提供用户名、密码、主机IP、端口(默认1521)和服务名(如ORCL)。

    • 简易连接:sqlplus scott/tiger@localhost:1521/ORCL
    • 配置文件:在tnsnames.ora中定义别名,如@ORCL
  2. 监听器接手

    • 监听器是服务器的"门卫",守在1521端口。
    • 如果是专用服务器,它会fork()一个新进程专门服务你(Linux)或创建线程(Windows)。
    • 如果是共享服务器,它会把你分配给某个调度器,后续由调度器协调共享进程。
  3. 连接完成

    • 专用模式:客户端直接与专属进程通信。
    • 共享模式:客户端通过调度器间接与共享进程交互。

总结

  • SGA是共享内存,缓存数据、SQL计划和日志。
  • 后台进程默默维护数据库健康,如SMONPMON
  • 连接方式
    • 专用服务器:独享资源,适合高性能场景。
    • 共享服务器:省资源,适合高并发但轻量操作。
  • 监听器是桥梁,决定如何分配连接资源。

接下来,我们会深入探讨数据库的文件组成(如数据文件、日志文件)和SGA的详细结构,揭开更多Oracle的核心秘密!

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

posted @ 2025-07-21 16:13  认真就输  阅读(11)  评论(0)    收藏  举报