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 语句的处理。