1、引言
  Oracle数据库的备份方法很多,无论使用那种备份方法,备份的目的都是为了在出现故障后能够以尽可能小的时间和代价恢复系统。比如使用export实用程序导出数据库对象、使用Oracle备份数据库、使用Oracle对称复制、使用Oracle并行服务器、使用Oracle冷备份、使用Oracle热备份等各种备份方法都有其优缺点、适用的场合和相应的软硬件要求。本文主要用export实用程序导出数据库对象、Oracle冷备份、Oracle热备份这三种基本的备份方法进行详细的探讨,分析各自的优缺点和适用的场合,并给出自动执行这些备份方案的脚本文件。
  2、三种备份方案的比较
  冷备份
  冷备份是Oracle简单的一种备份;执行冷备份前必须关闭数据库;然后使用操作系统实用工具或者第三方工具备份所有相关的数据库文件。
  优点:能简单快速地备份。能简单快速地恢复。执行简单。
  缺点:必须关闭数据库,不能进行点恢复。
  热备份
  热备份是当数据库正在运行时进行数据备份的过程。执行热备份的前提是:数据库运行在可归档日志模式。适用于24X7不间断运行的关键应用系统。
  优点:备份时数据库可以是打开的。热备份可以用来进行点恢复。初始化参数文件、归档日志在数据库正常运行时是关闭的,可用操作系统命令拷贝。
  缺点:执行过程复杂。由于数据库不间断运行,测试比较困难。不能用操作系统实用工具拷贝打开的文件。必须使用Oracle提供的ocopy工具来拷贝打开的文件。热备份可能造成CPU、I/O过载,应在数据库不太忙时进行。
  Export导出数据库对象
  冷备份和热备份都备份物理数据库文件,因而被称为物理备份。而export备份的是数据库对象,因此被称为逻辑备份。
  优点:能执行对象或者行恢复。备份和恢复速度更快。能够跨操作系统平台迁移数据库。数据库可一直运行。
  缺点:export并不是冷备份和热备份的替代工具。冷、热备份可保护介质失效。export备份可保护用户或应用错误。
  3、冷备份方案的实施
  3.1 冷备份数据库的步骤
  (1)关闭数据库;
  (2)备份所有相关的数据库文件:初始化参数文件、控制文件(可用select name from v$controlfile;列出所有
  控制文件)、数据文件(可用select name from v$datafile;列出所有数据文件)、Redo日志(可用select member from v$logfile;列出所有redo日志文件)、归档的Redo日志(可用select sequence#,first_time from v$loghist;列出所有归档redo日志文件的顺序号和产生时间)。
  3.2 冷备份数据库的脚本文件coldbackup.bat
  4、热备份方案的实施
  4.1 热备份数据库的前提条件:数据库运行在归档模式
  Oracle数据库的redo日志记录在数据库上进行的所有活动。LGWR后台进程以一种循环方式写这些日志文件,从第一个redo日志到下一个,直到该组的后一个,然后由从第一个日志写起。
  在非归档模式下,当循环写到后一个日志文件后,重写第一个日志。因此,非归档模式下的数据库恢复办法是使用冷备份。
  在归档模式下,当redo日志满时,一个ARCH后台进程读取全部redo日志,然后将其写到归档日志。因此,可以使用热备份和点恢复。在归档日志模式下,如果归档日志目的空间已满,数据库活动将暂时停止,只有释放一些空间后,数据库才能继续运行。通常,background_dump_destination将产生一个跟踪文件来显示归档方面的问题。
  Oracle数据库安装默认运行在非归档模式,通过以下步骤可以从非归档模式转换为归档模式:
  (1)编辑参数文件init.ora,设置以下参数
  # 设置数据库自动归档
  log_archive_start = true
  # 设置归档日志文件的目录,该目录必须事先已建立,并有大量可利用的空间
  log_archive_dest_1="location=%oracle_base% oradata\%oracle_sid%archive"
  # 设置归档日志文件名的格式。%s表示顺序号,%t表示线程号。
  log_archive_format = "%oracle_sid%%T%S.ARC"
  (2)在sqlplus上运行以下命令
sqlplus>;connect sys/qazwsx as sysdba
sqlplus>;shutdown immediate;
sqlplus>;startup mount exclusive;
sqlplus>;alter database archivelog;
sqlplus>;alter database open;
sqlplus>;shutdown immediate;
  (3)执行数据库冷备份
  当数据库运行在归档模式下,数据库恢复过程要求使用冷备份时,归档日志是必需的。
  (4)正常启动数据库,并确认数据库运行在归档模式
sqlplus >; startup;
sqlplus >; select * from v$database; 其log_mode会显示数据库是否归档模式
sqlplus >; archive log list; 也会显示数据库是否归档模式