Oracle 简介与体系结构概述

Oracle 数据库发展历程、版本特性、体系结构概览

最后更新: 2026-04-15
页面目录

第一章:Oracle 简介与体系结构概述

文档信息
  • 适用版本:Oracle 12c / 18c / 19c / 21c
  • 阅读时间:约 30 分钟
  • 更新日期:2026-04

1.1 Oracle 数据库简介

1.1.1 发展历程

Oracle 数据库是全球领先的关系型数据库管理系统,由 Larry Ellison 于 1977 年创立。主要版本里程碑:

版本 发布时间 核心特性
Oracle 8i 1999 引入互联网功能、Java 支持
Oracle 9i 2001 RAC 集群、XML 支持
Oracle 10g 2003 网格计算、自动存储管理 ASM
Oracle 11g 2007 高级压缩、Active DataGuard
Oracle 12c 2013 云原生、多租户架构 CDB/PDB
Oracle 18c 2018 自治数据库、自动索引
Oracle 19c 2019 长期支持版本、混合分区表
Oracle 21c 2021 原生 JSON、自治数据库增强
Oracle 23c 2023 AI 向量搜索、JSON 关系型二元性

1.1.2 核心优势

┌─────────────────────────────────────────────────────────┐
│                    Oracle 核心优势                        │
├─────────────────────────────────────────────────────────┤
│  🏢 企业级稳定性    →  金融、电信核心系统首选              │
│  ⚡ 高性能处理      →  百万级 TPS、PB 级数据              │
│  🔄 高可用架构      →  RAC + DataGuard 双活方案          │
│  🔒 安全合规        →  透明加密、审计、数据脱敏            │
│  ☁️ 云原生支持      →  多云部署、自治数据库               │
└─────────────────────────────────────────────────────────┘

1.2 体系结构概览

1.2.1 整体架构图

┌─────────────────────────────────────────────────────────────┐
│                        用户进程 (User Process)                │
└──────────────────────┬──────────────────────────────────────┘
                       │ 连接请求
┌──────────────────────▼──────────────────────────────────────┐
│                    服务器进程 (Server Process)                │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │  PGA 区域   │  │  会话内存   │  │    排序/哈希区       │  │
│  └─────────────┘  └─────────────┘  └─────────────────────┘  │
└──────────────────────┬──────────────────────────────────────┘
┌──────────────────────▼──────────────────────────────────────┐
│              系统全局区 SGA (System Global Area)              │
│  ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
│  │  数据库缓冲区  │ │   共享池      │ │    重做日志缓冲区     │ │
│  │  Database    │ │  Shared Pool │ │   Redo Log Buffer    │ │
│  │  Buffer Cache│ │              │ │                      │ │
│  └──────────────┘ └──────────────┘ └──────────────────────┘ │
│  ┌──────────────┐ ┌──────────────┐ ┌──────────────────────┐ │
│  │  大池        │ │   Java 池    │ │    流池              │ │
│  │  Large Pool  │ │  Java Pool   │ │   Streams Pool       │ │
│  └──────────────┘ └──────────────┘ └──────────────────────┘ │
└──────────────────────┬──────────────────────────────────────┘
┌──────────────────────▼──────────────────────────────────────┐
│                   后台进程 (Background Processes)             │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐           │
│  │  DBWn   │ │  LGWR    │ │  CKPT   │ │  SMON   │           │
│  │ 数据写   │ │ 日志写   │ │ 检查点  │ │ 系统监控 │           │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘           │
│  ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐           │
│  │  PMON   │ │  ARCn    │ │  RECO   │ │  MMON   │           │
│  │ 进程监控 │ │ 归档进程 │ │ 恢复    │ │ 管理监控 │           │
│  └─────────┘ └─────────┘ └─────────┘ └─────────┘           │
└──────────────────────┬──────────────────────────────────────┘
┌──────────────────────▼──────────────────────────────────────┐
│                      物理存储结构                             │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │  数据文件    │  │  控制文件    │  │    重做日志文件      │  │
│  │  .dbf       │  │  .ctl       │  │    .log             │  │
│  └─────────────┘  └─────────────┘  └─────────────────────┘  │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────┐  │
│  │  归档日志    │  │  参数文件    │  │    密码文件          │  │
│  │  .arc       │  │  spfile     │  │    orapw             │  │
│  └─────────────┘  └─────────────┘  └─────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

1.2.2 内存结构

SGA(系统全局区)

组件 功能 关键参数
Database Buffer Cache 缓存数据块,减少磁盘 I/O db_cache_size
Shared Pool 缓存 SQL、PL/SQL、数据字典 shared_pool_size
Redo Log Buffer 缓存重做日志,保证事务持久性 log_buffer
Large Pool 大内存分配(RMAN、并行查询) large_pool_size
Java Pool Java 虚拟机内存 java_pool_size
Streams Pool 流复制内存 streams_pool_size

PGA(程序全局区)

-- 查看 PGA 使用情况
SELECT 
    name,
    value/1024/1024 as mb
FROM v$pgastat
WHERE name IN ('maximum PGA allocated', 'total PGA allocated');

1.3 多租户架构(CDB/PDB)

1.3.1 架构演进

Oracle 11g 及之前:              Oracle 12c+:
┌─────────────┐                ┌─────────────────────────────┐
│  数据库实例  │                │         CDB$ROOT            │
│  (单数据库)  │                │        (容器数据库根)        │
└─────────────┘                ├─────────────────────────────┤
                               │  ┌─────────┐  ┌─────────┐  │
                               │  │  PDB1   │  │  PDB2   │  │
                               │  │ (销售)  │  │ (库存)  │  │
                               │  └─────────┘  └─────────┘  │
                               │  ┌─────────┐  ┌─────────┐  │
                               │  │  PDB3   │  │  PDB$SEED│  │
                               │  │ (人事)  │  │ (种子)  │  │
                               │  └─────────┘  └─────────┘  │
                               └─────────────────────────────┘

1.3.2 CDB 与 PDB 对比

特性 CDB (Container DB) PDB (Pluggable DB)
后台进程 共享 共享
内存结构 共享 SGA 共享 SGA
数据字典 共享 + 本地 本地
独立管理
快速克隆 - 支持快照克隆
热插拔 - 支持拔插迁移

1.4 快速体验

1.4.1 连接数据库

# 使用 SQL*Plus 连接
sqlplus username/password@database

# 以 SYSDBA 身份连接
sqlplus / as sysdba

# 连接 PDB
sqlplus username/password@//hostname:1521/pdb_name

1.4.2 查看数据库状态

-- 查看数据库版本
SELECT * FROM v$version;

-- 查看数据库状态
SELECT name, open_mode, database_role FROM v$database;

-- 查看实例状态
SELECT instance_name, status, startup_time FROM v$instance;

-- 查看 PDB 列表
SHOW PDBS;

-- 切换 PDB
ALTER SESSION SET CONTAINER = pdb_name;

1.5 本章小结

核心要点
  1. 内存架构:SGA 共享内存 + PGA 私有内存
  2. 进程架构:用户进程 → 服务器进程 → 后台进程
  3. 存储架构:数据文件 + 控制文件 + 重做日志文件
  4. 多租户:CDB 作为容器,PDB 可插拔数据库

下一步:继续学习 Oracle 架构深度解析