Chinaunix首页 | 论坛 | 博客
  • 博客访问: 44667017
  • 博文数量: 384
  • 博客积分: 9990
  • 博客等级: 中将
  • 技术积分: 5644
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-05 17:44
文章分类

全部博文(384)

文章存档

2011年(1)

2008年(383)

分类: 服务器与存储

2008-06-06 08:05:01

Oracle 联机备份

 
在 Oracle 中,联机备份要求在 ARCHIVELOG 模式中执行对的操作。在一个在线商店中,数据库必须是 24x7 都处于打开状态的,所以,让用户进行脱机备份而不访问数据库是不可能的。在这种场景中,应该在 ARCHIVELOG 模式下运行数据库,在该模式中,事务将继续运行,同时,备份处理也在继续。

与脱机备份不一样,联机备份只要求备份数据文件和控制文件。脱机数据库的备份单位是整个数据库,而联机备份的备份单位是一些或全部表空间。

在 Oracle 中,联机备份的全部思想是,当用户执行事务时,将对数据库所做的所有更改(提交或未提交的)都存储到重做日志缓冲区中,随后由 LGWr 把它们写到联机重做中。重做日志是以循环的方式写入的;因此,在重写它们之前,需要通过启动 ARCH 进程来手动或自动对重做日志进行归档。当记录了所有事务并在以后通过多路复用进行归档时(使用参数 LOG_ARCHIVE_DUPLEX_DEST),如果需要进行媒介恢复,那么可以使用这些归档的重做日志进行恢复。

注意,使用联机备份本身无法保证您不丢失数据。像通过多路复用(放在不同的位置)控制文件使数据库免疫、使用联机重做日志和归档重做日志这样的步骤,都是避免单点故障所必需的。

在 Oracle 中,要从默认的脱机备份切换到具有自动归档的联机备份,您需要执行下面的操作:

  • 在 init.ora 中,用适当的值填写参数 LOG_ARCHIVE_START、LOG_ARCHIVE_DEST、LOG_ARCHIVE_FORMAT 和 LOG_ARCHIVE_DUPLEX_DEST 和 LOG_ARCHIVE_DEST_N。
  • 关闭和启动装入(Mount)。
  • 在 archivelog 模式下操作数据库。
  • 打开数据库。
  • 验证归档日志清单。
  • 归档所有日志。
  • 备份所有新创建的日志。

通过执行命令“Alter Tablespace ts_name Begin Backup”,将任何或所有联机表空间置于联机备份模式来启动联机备份。当发出这个命令时,处于联机备份模式的所有数据文件都将被发放检查点 SCN。换句话说,将把数据缓冲区的所有脏位刷新到数据文件。在初始检查点 SCN 后,就不会再发放新的检查点 SCN。对于没有处在联机备份模式的那些数据文件,随后的检查点将在它们的文件头中添加 SCN。当发出 “Alter Tablespace ts_name End Backup”时,在联机备份数据文件的的文件头中再次记录了检查点 SCN。Begin Backup 和 End backup 命令让 Oracle 知道要重做什么操作,及在前滚会在什么地方终止。

Oracle 建议在 Begin backupEnd backup命令之间耗用最少的时间。此外,应该在这段时间内尽量少进行用户活动,这是由于 Oracle 会在第一次更改块时记录下整个块的映像。对于联机备份数据文件,这将导致生成大量的重做日志。实际上,在执行 Begin backup后,接下来应该立刻执行系统复制,然后由 End backup 来快速结束操作。备份是严格按照顺序进行的,这意味着在备份了表空间 1 中的数据文件后,将继续备份表空间 2 中的数据文件。

对于联机备份,需要特别注意 SYSTEM 表空间和回滚段表空间。同时,还需要确保只要对数据库的模式进行了更改,就要对控制文件进行备份。备份脚本应该反映最新的模式。

DB2 UDB 联机备份

DB2 UDB 执行时间点恢复的机制类似于 Oracle。要了解 DB2 UDB 联机备份和恢复,就需要了解归档日志记录。有三种我们需要熟悉的日志定义:

  • 活动日志 —— 该日志包含没有提交或回滚的事务,或者已提交但尚未刷新到磁盘的事务。
  • 联机归档日志 —— 该日志包含已提交并且被记录到硬盘的事务的信息,和活动日志位于同一目录。
  • 脱机归档日志 —— 如果将联机归档日志从活动日志所在目录移动到其他目录或磁带中,就成为了脱机归档日志。

有许多与日志记录有关的参数:

  • LOGFILSIZ —— 每个日志文件的大小,默认值是 250,单位为 4KB。
  • LOGPRIMARY —— 主日志文件的个数(默认值是 3)。
  • LOGSECOND —— 主日志文件占用满时,可以分配的二级日志文件的个数。当把这个参数设为 -1 时(版本 8),可以使用无限数量的活动日志。
  • NEWLOGPATH —— 用来更改日志文件的存储位置。要想使该参数生效,需要重新激活数据库。
  • MIRRORLOGPATH —— 日志文件的镜像路径,以避免单点故障。
  • OVERFLOWLOGPATH —— 指定前滚期间可以在哪些目录搜索需要的日志,以允许前滚操作能访问多个目录中的日志。
  • USEREXIT——用于启动用户出口功能,进行日志的自动归档。
  • BLK_LOG_DSK_FUL——当 DB2 无法在活动日志路径中创建新日志文件时,防止生成磁盘已满错误。

为了使用联机备份,必须打开归档日志记录。通过将 LOGRETAIN 设为 ON,可以打开归档日志记录。

归档日志记录是一种不同于循环日志记录的日志记录机制,因为循环日志记录重写了提交的日志,而归档日志记录归档了提交的日志。

在归档日志记录中,不能重用已经变成归档日志的日志。要移动那些联机归档日志,您需要手动移动它们或者使用用户出口程序(user exit)来移动它们。 图 1举例说明了归档日志记录机制:



图中的 LOG (n+1)是活动日志,log (n) 和 log (n-i)(其中 i<=n)都是联机归档日志。这些归档日志既可以位于存储活动日志的路径中,也可以使用用户出口程序来指定将保存它们的目录或媒介。

默认情况下,活动和联机归档日志保存在 SQLOGDIR 目录中。NEWLOGPATH 数据库配置参数确定了将在哪里存储未来的活动归档日志。要想使 NEWLOGPATH 参数生效,需要停用数据库(目的是关闭所有活动日志文件)。然后,重新激活数据库将导致在新路径中创建新日志文件,原来的归档日志将留在原来的路径中。

当进行联机备份时,将记录所有的数据库事务。在完成联机备份之后,DB2 将强行关闭当前活动日志,并对其进行归档,如 图 2 所示:



要防止脱机归档日志的单点故障,比如媒介失败,则应该使用日志镜像。MIRRORLOGPATH 是用来指定镜像路径的配置参数,它允许 DB2 将相同日志文件的第二份副本写入不同目录中。您需要重新激活数据库,以使 MIRRORLOGPATH 配置参数变得有效。

如果将副本写入镜像日志路径时发生问题,那么 DB2 将在管理通知日志中写入消息,指出已经碰到错误。DB2 将继续把日志记录写入能工作的日志路径中。不需要同步日志路径。要确定哪个日志是活动的,哪些日志是归档的,请使用 DB2 命令 GET DB CFG 来查看“第一个活动日志文件”。该命令提供了目前活动的日志文件,因此被归档的日志将是那些比当前日志更早的日志。

此外,诸如数据库、表空间或增量的备份的每个备份操作都将包括恢复历史文件(RHF)的一个副本。您可以使用历史文件中提供的信息,将整个数据库或数据库的一部分恢复到某个时间点。每个数据库都会创建一个恢复历史文件,并且在下列情况下会自动对该文件进行更新:

  • 备份数据库或表空间。
  • 恢复数据库或表空间。
  • 前滚数据库或表空间。
  • 创建表空间。
  • 修改表空间。
  • 休止表空间。
  • 重命名表空间。
  • 删除表空间。
  • 加载表。
  • 删除表。
  • 重组表。


阅读(620) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~