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

    物联沃分享整理
    物联沃-IOTWORD物联网 » Oracle 深入学习 Part 1: Oracle Architectural Components(Oracle 架构组件)

    发表回复