用于备份和恢复的数据结构
Oracle 和 DB2 UDB 都有一组组成备份和恢复机制的组件。您在 图 1和 图 2 中看到的体系结构图对提供 Oracle 和 DB2 的备份和恢复的主要组件进行了概述。
图 1. Oracle 体系结构
Oracle 的内存结构
缓冲区缓存 —— 为存储从物理数据文件读取的数据块而分配的内存。
共享池 —— 为存储解析的 SQL 语句、PL/SQL 过程的数据字典信息而分配的内存。
日志缓冲区 —— 为存储更改数据的前后映像而分配的内存。里面记录的数据项是连续的。
大型池 —— 分配给 RMAN 用于备份和恢复的内存。
Oracle 后台进程
数据库读写器(DBWr)—— 异步地将缓冲区的脏数据写到物理数据文件中。
日志读写器(LGWr)—— 从日志缓冲区写入项目,以便重做日志文件。
检查点(CKPt)—— 将数据文件头和控制文件头与当前重做日志和检查点数同步。
归档器(ARCH)—— 自动化重做日志的复制。如果没有打开归档器,那么需要对重做日志进行手动归档。
Oracle 数据库结构
数据文件 —— 存储数据的物理文件。
控制文件 —— 包含数据库物理结构和状态的文件,比如包含绝对路径的数据文件和日志文件的名称、文件的大小、块大小、数据文件的联机或脱机状态等。它还包含日志文件的名称和路径、文件大小和块大小。
重做日志 —— 包含更改数据的前后映像的文件。对于恢复,重做日志是必需的。
参数文件 —— 存储实例启动的参数的文件。您可以有多种启动实例的方式。Oracle 首先搜索 spfile_SID.ora 是否存在。如果该文件不存在,Oracle 接着会搜索 Spfile.ora 参数文件。如果 spfile_SID.ora 和 spfile.ora 都不存在,Oracle 将使用 init_SID.ora 参数文件。
归档日志 —— 联机重做日志的物理副本。在联机恢复中,归档日志是必需的。
接下来我们将看到 DB2 UDB 体系结构和结构。
图 2. DB2 UDB 体系结构
DB2 UDB 内存结构
包缓存 —— 为存储静态和动态 SQL 语句而分配的内存。
缓冲池 —— 在将数据刷新到磁盘之前,为存储数据而分配的内存。
日志缓冲区 —— 在将所有对数据库的更改刷新到磁盘上的日志之前,用来存储这些更改的内存。
图 3. DB2 UDB 数据库结构
驱动器/目录 —— 在 CREATE DATABASE 命令中指定的驱动器或目录。
DB2 实例名称 —— DB2 实例所有者的名称。
NODE0000 —— 数据库的分区数。0 表示非分区的数据库。
SQL00001 —— 从 1 开始的数据库 ID。
SQLOGDIR —— 数据库的默认日志目录。
SQLT0000.0 —— 目录表空间 SYSCATSPACE。
SQLT0001.0 —— 临时表空间 TEMPSPACE1。
SQLT0002.0 —— 用户表空间 USERSPACE1。
备份和恢复选择
对于 Oracle 和 DB2 UDB 数据库,有两种备份和恢复模式:脱机和联机。可以用任何一种模式来进行完全和不完全恢复。
脱机备份要求所有应用程序断开与数据库的连接,联机备份允许在备份的过程中继续执行事务。在选定备份模式的恢复方面,存在隐含关系,因为备份模式决定了恢复模式。
顾名思义,完全恢复能够完全地恢复所有提交的事务,而不完全恢复在恢复事务时会丢失一些数据。Oracle 和 DB2 UDB 都能让您恢复到当前时间,而且没有数据丢失,或者恢复到当前时间以前的时间,但要丢失一些数据。
通常,恢复的目标是用选定的恢复模式在业务需求与操作需求之间达成某种妥协。例如,如果数据库不是任务关键型和 24X7 型的,那么停机上一段时间和丢失一些数据可能是可以接受的,对于媒介错误,重新键入数据也可能是一种可以接受的方法。采用什么样的恢复取决于可用的备份和 可用的日志,可能有时候除了执行不完全恢复以外别无选择。
有两种类型的 DB2 日志记录,每种日志记录方法支持特定的恢复选项。这两种类型的日志记录是 循环和 归档日志记录。当选择使用循环日志记录(默认情况下选择这种日志记录)时,惟一的选择是执行脱机备份和版本恢复。如果您选择使用归档日志记录,并执行联机 备份和前滚恢复,那么您可以恢复到数据丢失最少的那个时间点,或者恢复到结束日志的时候。