2.3 Oracle
表格 3 Oracle 版本史
版本 | 发布日期 | 事件 |
---|---|---|
Oracle 2 | 1979 | |
Oracle 3 | 1983 | 增加关键特性:可移植性 |
Oracle 4 | 1984 | 增加重要特性:读一致性 |
Oracle 5 | 1985 | 稳定版本 |
Oracle 5.1 | 1985 | 支持分布式查询。 |
Oracle 6 | 1988 | 引入行级锁、联机热备份功能。 |
Oracle 7 | 1992.6 | 增加了许多新的性能特性:分布式事务处理功能、增强的管理功能、用于应用程序开发的新工具以及安全性方法。 |
Oracle 8 | 1997.6 | 支持面向对象的开发及新的多媒体应用。 |
Oracle 8i | 1998.9 | 这一版本中添加了大量为支持 Internet 而设计的特性同时这一版本为数据库用户提供了全方位的 Java 支持 |
Oracle 9i | 2001.6 | 增加 Real Application Clusters(RAC)。 |
Oracle 10g | 2003.9 | 这一版的最大的特性就是加入了网格计算的功能。 |
Oracle 11g | 2007.7.11 | 根据用户的需求实现了信息生命周期管(Information sLifecycle Management) 等多项创新。 |
Oracle 12c | 2013.6.23 | |
... |
Oracle 数据库服务器包括一个数据库和至少一个数据库实例(通常简称为实例),由于实例和数据库紧密地连接在一起,所以有时使用 Oracle 数据库来引用实例和数据库,严格意义上说,Oracle 数据库具有以下含义:
数据库实例 Database Instance:实例是数据库启动时初始化的一组进程和内存结构。实例由称为系统全局区(System Global Area)的共享内存区和后台进程组成,实例可以独立于数据库文件存在。
数据库 Database:数据库则指的是用户存储数据的一些物理文件。这些文件可以独立于数据库实例存在。
Oracle Architect 包括
Process Architecture 进程架构,进程包括服务器、客户端和后台进程。
Memory Architecture 内存架构,SGA+PGA;也可分为 Physical Storage Structures + Logical Storage Structures
2.3.1 Oracle 内存和进程架构
图 4 Oracle 内存结构和进程结构
内存结构
Oracle DB 创建并使用内存结构来满足多种需要,例如,使用内存来存储正在运行的程序代码、在各用户之间共享的数据以及所连接的每个用户的专用数据区域。一个实例有两个关联的基本内存结构:
- 系统全局区(System Global Area, SGA):一组共享的内存结构(称为 SGA 组件),其中包含一个 Oracle DB 实例的数据和控制信息。SGA 由所有服务器进程和后台进程共享,SGA 中存储的数据有高速缓存的数据块和共享 SQL 区域等;
- 程序全局区(Program Global Area, PGA):包含某个服务器进程或后台进程的数据及控制信息的内存区域。PGA 是 Oracle DB 在服务器进程或后台进程启动时创建的非共享内存。服务器进程对 PGA 的访问是独占式的,每个服务器进程和后台进程都具有自己的 PGA。
SGA(系统全局区)说明
SGA 中必须包含的内存结构有数据库缓冲区、日志缓冲区和共享池;可选的内存结构有大池、Java 池和流池。
- 共享池 Shared Pool~用于库缓存、数据字典缓存和 PLSQL 区缓存。
- 大池 Large Pool :大池是个可选的内存区域,前面我们提到专有服务器连接和共享服务器连接,如果数据库采用了共享服务器连接模式,则要使用到大池;RMAN(Oracle 的高级备份恢复工具) 备份数据也需要大池。
- Java 池:用作实例化 Java 对象所需的堆空间。
- 流池 Streams Pool:从重做日志中提取变更记录的进程 和 应用变更记录的进程会用到流池。
备注:除了日志缓冲区是固定的,不能动态调整也不能进行自动管理外,其他内存区域都可以进行动态调整,也可以进行自动管理。
进程结构
Oracle 进程由用户进程、后台进程和服务器进程组成。
- SMON(System Monitor): 安装和打开数据库,实例恢复也是由此进程完成的。
- PMON(Process Monitor): 进程监视器,主要监视服务器进程。
- CKPT(Checkpoint Process): CKPT 负责发起检查点信号
- MMON(Manageability Monitor): 数据库的自我监视和自我调整的支持进程。
- ARCn(Archiver): 归档进程,可选。
2.3.2 Oracle 存储架构
针对 Oracle 存储结构将分别从物理存储结构和逻辑存储结构两个维度来进行阐述。
物理结构是系统管理员能看到的,逻辑结构则是用户所能感知到的。
图 5 Oracle 存储结构整体
逻辑结构
逻辑存储结构能够使 Oracle 数据库对磁盘空间使用进行细粒度的控制,包括:
- 数据块(Data Blocks):从最细的层面来讲,Oracle 数据库的数据存储在数据块中,一个数据块与磁盘中特定字节数的物理空间相对应。每个表空间的数据块大小是在创建表空间时指定的,数据库以 Oracle 数据块为单位使用和分配空闲数据库空间;
- 区(Extends):区是特定数量的相邻 Oracle 数据块(通过一次分配获得),用于存储特定类型的信息。一个区中的 Oracle 数据块在逻辑上是相邻的,但在物理上可以分布在磁盘上的不同位置(RAID 条带化和文件系统实施会导致此现象);
- 段(Segments):段是为某个逻辑结构分配的一组区,例如:数据段、索引段、还原段以及临时段;
- 表空间(Tablespaces):一个数据库分为多个逻辑存储单元,这些单元称为“表空间”,用于将相关逻辑结构或数据文件归到一组。表空间从逻辑上是多个段的结合,在物理上是多个数据文件的集合,相当于在段和数据文件的对应中加入了一个中间层来解决这种多对多的关系。
图 6 Oracle 物理存储结构
构成 Oracle DB 的文件可划分为以下类别:
- 数据文件:包含数据库的用户或应用程序数据,以及元数据和数据字典;
- 控制文件:包含与数据库本身相关的数据,即物理数据库结构信息。这些文件对数据库至关重要,没有这些文件,就无法打开数据文件来访问数据库中的数据,控制文件还可以包含与备份相关的元数据;
- 在线重做日志文件:用于恢复数据库实例,如果数据库服务器崩溃,但未丢失任何数据文件,则实例可使用这些文件中的信息恢复数据库。
2.3.3 Oracle 各版本整体架构细节
图 7 ORACEL 9i 架构图
图 8 ORACEL 10g 架构图
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论