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 本章小结
核心要点
- 内存架构:SGA 共享内存 + PGA 私有内存
- 进程架构:用户进程 → 服务器进程 → 后台进程
- 存储架构:数据文件 + 控制文件 + 重做日志文件
- 多租户:CDB 作为容器,PDB 可插拔数据库
下一步:继续学习 Oracle 架构深度解析