Oracle 实例与数据库

Oracle 实例与数据库

适用版本:Oracle Database 10g / 11g / 12c / 19c / 23ai 文档版本:v1.0 / 2026-07


1. 概述

实例与数据库是 Oracle 核心概念[1]:

实例:内存 + 进程 数据库:物理文件

详细见:Oracle 体系结构概述


2. 实例

2.1 组成

- SGA(System Global Area)
- 后台进程
  - PMON / SMON / DBWn / LGWR / CKPT / ARCn
- 服务器进程

2.2 单实例 vs RAC

类型实例共享
单实例1
RACN数据库

3. 数据库

3.1 物理文件

- 数据文件
- 控制文件
- Redo Log
- 归档日志
- 参数文件
- 密码文件

3.2 逻辑结构

Database
└── Tablespace
    └── Segment
        └── Extent
            └── Block

4. 关系

4.1 一对一

- 单实例
- 一个实例 ↔ 一个数据库

4.2 一对多

- RAC
- 多实例 ↔ 一个数据库

4.3 多对一

- 同一实例多数据库(不推荐)
- 旧版

5. 数据库架构类型

5.1 单实例

- 最常见
- 一台服务器
- 简单

5.2 RAC

- 多实例共享
- 高可用
- 复杂

详细见:Oracle RAC 架构详解

5.3 Standby(Data Guard)

- 主备
- 灾备
- 同步/异步

详细见:Oracle Data Guard 架构


6. SGA

6.1 共享

- 所有服务器进程
- 后台进程
- 用户共享

6.2 组件

  • Buffer Cache
  • Shared Pool
  • Redo Log Buffer
  • Large Pool
  • Java Pool
  • Streams Pool
  • In-Memory Area

详细见:Oracle 内存管理 SGA/PGA


7. PGA

7.1 私有

- 每个服务器进程独立
- 不共享
- 自动管理

7.2 组件

  • Private SQL Area
  • SQL Work Area
  • Session Memory

8. 服务器进程

8.1 专用服务器

- 每连接一进程
- OLTP
- 简单

8.2 共享服务器

- 多连接共享
- Dispatcher
- 高并发

详细见:Oracle 网络架构


9. 数据库文件

9.1 数据文件

- 表空间
- 段
- 区
- 块

9.2 控制文件

- 元数据
- 数据库结构
- 多路复用

9.3 Redo Log

- 事务日志
- 恢复
- 多组多成员

详细见:Oracle 数据库物理结构


10. 参数文件

10.1 SPFILE

- 二进制
- 动态修改
- 推荐

10.2 PFILE

- 文本
- 静态
- 修改需重启

10.3 转换

CREATE PFILE='/tmp/init.ora' FROM SPFILE;
CREATE SPFILE FROM PFILE='/tmp/init.ora';

11. 密码文件

11.1 创建

orapwd file=$ORACLE_HOME/dbs/orapworcl password=****** entries=10

11.2 用途

- SYSDBA / SYSOPER 认证
- 远程管理

12. 数据字典

12.1 数据字典

- SYSTEM 表空间
- 元数据
- 只读

12.2 动态视图

- v$ 视图
- gv$ 视图(RAC)
- 动态性能

详细见:Oracle 数据字典与动态视图


13. 启动流程

13.1 NOMOUNT

- 读参数文件
- 启动实例
- SGA + 进程

13.2 MOUNT

- 读控制文件
- 关联数据库

13.3 OPEN

- 打开数据文件
- 打开 Redo Log
- 检查一致性

详细见:Oracle 数据库启动关闭流程详解


14. 查看

14.1 实例

SELECT instance_name, host_name, version, status, startup_time
FROM v$instance;

14.2 数据库

SELECT name, created, log_mode, open_mode, database_role
FROM v$database;

14.3 SGA

SELECT name, bytes/1024/1024 AS mb FROM v$sgainfo;

15. 实例恢复

15.1 流程

1. SMON 前滚(Redo)
2. 已提交 + 未提交
3. 打开数据库
4. SMON 回滚未提交(Undo)

15.2 MTTR

- 恢复时间
- fast_start_mttr_target

详细见:Oracle 检查点深度解析


16. 常见坑与排错

16.1 ORA-01078

- 参数文件问题
- 检查 SPFILE / PFILE

16.2 ORA-00205

- 控制文件问题
- 多路复用

16.3 实例 vs 数据库混淆

- 实例:内存 + 进程
- 数据库:文件
- RAC:多实例一数据库

17. 最佳实践

  1. 理解概念:基础
  2. SPFILE:现代
  3. 多路复用:控制文件 / Redo
  4. ASM:存储
  5. RAC 高可用:业务关键
  6. Data Guard 灾备:保护
  7. 监控实例状态:运维
  8. 文档化:架构
  9. 测试恢复:可行
  10. 定期检查:健康

18. 参考资料

[1] Oracle Database Concepts 19c, “Database and Instance” https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/