1.7 备份/恢复概述
Oracle支持许多不同形式的备份和恢复。可在用户级别管理其中的一些备份和恢复,如导出和导入,而大多数备份和恢复严格以DBA为中心,如联机或脱机备份,以及使用操作系统命令或RMAN实用程序。
第11章和第12章将详细介绍如何配置和使用这些备份和恢复方法。
1.7.1 导出/导入
可使用Oracle的逻辑化Export和Import实用程序来备份和还原数据库对象。Export是逻辑备份,因为未记录表的底层存储特性,只记录表的元数据、用户权限和表数据。根据当前任务,以及是否拥有DBA权限,可导出一个数据库中的所有表、一个或多个用户的所有表,或者特定表集。相应的Import实用程序可酌情还原之前导出的对象。
使用Export和Import实用程序的一个优点是,在数据库中具有较高权限的用户能够管理自己的备份和恢复,特别是在开发环境中。在Oracle的各个版本中,一般都可以读取由Export命令生成的二进制文件,从而使从Oracle旧版本到新版本的少量表的传输非常简单。
Export和Import本质上是“时间点”备份,因此,如果数据是易变的,则Export和Import不是最健壮的备份和恢复解决方案。
之前的Oracle Database版本包含exp和imp命令,但这些在Oracle Database 12c中不再可用。从Oracle 10g开始,Oracle Data Pump(Oracle数据泵)替代了传统的导入和导出命令,将这些操作的性能提高到新的水平。导出到外部数据源最多可加快两倍,而导入操作最多可以加快45倍,因为Oracle Data Pump导入使用直接路径加载,这一点不同于传统的导入。此外,从源数据库的导出可同时导入目标数据库,而不需要中间的转储文件,从而节省时间和管理工作。使用带有expdb和impdb命令的DBMS_DATAPUMP程序包可以实现Oracle Data Pump,它包括大量其他可管理特性,如细粒度的对象选择。Oracle Data Pump也与Oracle 12c的所有新功能保持同步,如将整个可插入数据库(PDB)从一个容器数据库(CDB)移到另一个。第17章提供关于Oracle数据泵的更多信息。
1.7.2 脱机备份
建立数据库物理备份的一种方法是执行脱机备份(offline backup)。为执行脱机备份,需要关闭数据库,并且将所有与数据库相关的文件,包括数据文件、控制文件、SPFILE和密码文件等,复制到其他位置。一旦复制操作完成,就可以启动数据库实例。
脱机备份类似于导出备份,因为它们都是时间点备份,因此在需要最新的数据库恢复并且数据库不处于ARCHIVELOG模式时,这些备份的作用较小。脱机备份的另一个不足之处在于执行备份所需要的停机时间,任何需要24/7数据库访问的跨国公司通常不会经常进行脱机备份。
1.7.3 联机备份
如果数据库处于ARCHIVELOG模式,则可能进行数据库的联机备份(online backup)。可打开数据库,并且用户可以使用该数据库,即使当前正在进行备份。进行联机备份的过程非常简单,只要使用ALTER TABLESPACE USERS BEGIN BACKUP命令将表空间转入备份状态,使用操作系统命令备份表空间中的数据文件,然后使用ALTER TABLESPACE USERS END BACKUP命令将表空间转移出备份状态即可。
1.7.4 RMAN
备份工具“恢复管理器(Recovery Manager)”,更常见的叫法是RMAN,它从Oracle 8就开始出现了。RMAN提供了优于其他备份形式的许多优点。它可在完整的数据库备份之间只对改动的数据块进行增量式备份,同时数据库在整个备份期间保持联机。
RMAN通过以下两种方法跟踪备份:通过备份数据库的控制文件;通过存储在另一个数据库中的恢复目录。对于RMAN,使用目标数据库的控制文件比较简单,但对于健壮企业备份方法学,这并不是最佳解决方案。虽然恢复目录需要另一个数据库来存储目标数据库的元数据和所有备份的记录,但如果目标数据库中的所有控制文件由于灾难性故障而丢失,这时就值得采用恢复目录的方法。此外,恢复目录保留历史备份信息,如果将CONTROL_FILE_ RECORD_KEEP_TIME的值设置得太低,则可能在目标数据库的控制文件中重写这些备份信息。
第12章将详细讨论RMAN。