Oracle 数据库架构解析

Oracle 数据库由两个主要部分组成:实例和数据库。

1. 实例 (Instance): 实例是管理数据库的一组内存结构和后台进程。

  • PGA (程序全局区): 存储单个用户进程的数据和控制信息。
  • SGA (系统全局区): 由所有用户进程共享的内存区域。

    • Shared Pool: 存储 SQL 语句、执行计划等信息。
      • Library Cache: 存储解析后的 SQL 语句和 PL/SQL 代码。
      • Data Dictionary Cache: 存储数据库对象的信息。
    • Java Pool: 存储 Java 对象和代码。
    • Redo Log Buffer: 存储对数据库所做的更改信息。
    • Large Pool: 为大型操作(如备份和恢复)提供内存空间。
    • Database Buffer Cache: 存储从数据文件读取的数据块。
    • Streams Pool: 用于 Oracle Streams 功能。
  • 后台进程: 执行数据库管理任务,例如:

    • PMON (进程监控器)
    • DBWR (数据库写入器)
    • MMON (内存监控器)
    • LGWR (日志写入器)
    • MMAN (内存管理器)
    • CKPT (检查点)
    • RECO (恢复)
    • ARCn (归档进程)
    • SMON (系统监控器)

2. 数据库 (Database): 数据库是存储在磁盘上的物理文件集合,包含实际数据。

  • 数据文件: 存储数据库中的表、索引等对象。
  • 控制文件: 包含数据库的结构信息和状态信息。
  • 重做日志文件: 记录对数据库所做的所有更改,用于数据库恢复。
  • 参数文件: 定义数据库的配置参数。
  • 密码文件: 存储数据库用户的身份验证信息。
  • 归档日志文件: 重做日志文件的副本,用于长期存储和恢复。