Oracle 深入学习 Part 1: Oracle Architectural Components(Oracle 架构组件)
Oracle 服务器(Oracle Server)
Oracle Server 是一个管理系统,提供一种开放、全面、集成的信息管理方式。它包含了 Oracle 实例(Oracle Instance) 和 Oracle 数据库(Oracle Database)。
1. Oracle 实例(Oracle Instance)
定义:Oracle 实例是访问 Oracle 数据库的方式,始终打开一个且仅一个数据库。
组成:由内存结构和后台进程结构组成。
实例的组成:
内存结构(Memory Structures)
SGA(System Global Area):一个实例中只有一个 SGA,所有进程共享此内存区域。它是动态的,大小由 SGA_MAX_SIZE
参数决定,包含数据库的数据和控制信息。
共享池(Shared Pool):缓存 SQL 语句和数据字典信息,影响性能,大小由 SHARED_POOL_SIZE
决定。包括:
库缓存(Library Cache):存储已解析的 SQL 语句,避免重复解析。
数据字典缓存(Data Dictionary Cache):存储数据库对象信息(如表、列、索引等)。
数据库缓冲区(Database Buffer Cache):缓存最近使用的数据块,所有的读写操作都经过这个缓存,大小由 DB_BLOCK_SIZE
决定。
重做日志缓冲区(Redo Log Buffer):记录事务更改,用于恢复。
大型池(Large Pool):存储并行查询、RMAN 恢复等操作的内存。
PGA(Program Global Area):每个后台进程有一个 PGA,是每个用户进程的私有内存区域,通常在服务器进程启动时分配。
后台进程(Background Processes)
用户进程:在数据库用户请求连接时启动。
服务器进程:连接到 Oracle 实例并启动会话。
后台进程:在 Oracle 实例启动时启动,包括以下关键进程:
强制性后台进程:
数据库写进程(DBWn – Database Writer):将数据库缓冲区中的修改写入数据文件。
日志写进程(LGWR – Log Writer):将重做日志缓冲区中的内容写入联机重做日志文件。
检查点进程(CKPT – Checkpoint):记录检查点信息,将检查点号写入数据文件头和控制文件。
系统监控进程(SMON – System Monitor):执行系统恢复任务,如清理未提交的事务。
进程监控进程(PMON – Process Monitor):负责恢复失败的用户进程,并清理锁。
可选后台进程:
归档进程(ARCn – Archive Process):将联机重做日志文件复制为归档日志文件(仅在归档模式下启用)。
恢复进程(RECO – Recoverer):负责分布式事务的故障恢复。
2. Oracle 数据库(Oracle Database)
数据文件(Datafiles):保存表中的所有数据,是数据库的核心部分,通常以 .dbf
为后缀。
控制文件(Control files):提供控制信息,常见后缀为 .ctl
或无后缀。
重做日志文件(Redo Log files):记录数据库事务的变化,用于数据库恢复,通常以 .log
为后缀。
参数文件(Parameter file):定义 Oracle 中基本参数和初始参数的值,通常以 .ora
为后缀。
归档日志(Archived Log files):联机重做日志文件的备份副本,用于备份和恢复操作,常见后缀为 .arc
,但也可能是 .log
,由归档日志的路径和命名格式决定。
密码文件(Password file):存储客户端连接数据库时的口令,通常为 orapw<实例名>
,无固定后缀。
这些文件的表现形式都是存储在磁盘中的物理文件。
补充内容
逻辑结构
规定数据库物理空间的使用方式,包含表空间、段、扩展区和块的层次结构。
层次结构:
表空间(Tablespace)
数据文件(Datafile)
段(Segment)
扩展区(Extent)
块(Block)
链接和会话(Connection & Session)
链接(Connect):客户端和后台服务器进程之间的 TCP 链接。
User process ↔ Server process
会话(Session):在链接建立后开始,链接断开后结束。
IPC & TCP/IP
IPC(Inter-Process Communication,进程间通信)
IPC 是计算机系统中多个进程之间交换数据的机制,包括共享内存,队列,信号量等几种形式。Oracle 数据库中,IPC常用于同一台服务器上,客户端与数据库实例之间的通信。
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/互联网协议)
TCP/IP 是网络通信的核心协议,支持客户端和数据库之间的远程通信,也是 Oracle Net 服务的基础协议。
TCP/IP 与 IPC 的比较
特性 | IPC | TCP/IP |
---|---|---|
适用场景 | 本地连接 | 远程连接 |
性能 | 高性能,无网络延迟 | 有网络延迟,性能较低 |
配置难度 | 简单,仅需配置本地监听 | 需要配置网络服务名和监听器 |
通信范围 | 同一主机 | 跨主机和跨网络 |
可靠性 | 依赖操作系统机制 | TCP 提供可靠传输,数据校验和确认 |
在 Oracle 中选择 IPC 或 TCP/IP
IPC 场景:客户端和数据库在同一服务器上,性能要求较高。
TCP/IP 场景:客户端和数据库位于不同主机上,系统需要支持分布式部署。
示意图
IPC 通信
+-------------------+ +-------------------+ | 用户进程 | | 服务器进程 | | (Client Process) | <-----> | (Server Process) | +-------------------+ +-------------------+ | | +--------共享内存(SGA)-------+
TCP/IP 通信
+-------------------+ 网络(TCP/IP) +-------------------+ | 客户端 | <--------------------> | 监听器 | | (Client Process) | | (Listener) | +-------------------+ +-------------------+ | +-------------------+ | 数据库实例 | | (DB Instance) | +-------------------+
处理 SQL 语句过程
连接到实例时:
用户进程
服务器进程
SQL 语句的类型决定使用的 Oracle 服务器组件:
查询语句返回行
DML 语句记录更改
提交确保事务恢复
一些 Oracle 服务器组件不参与 SQL 语句的处理。
作者:xuanloyer