Tag Archives: RMAN

Oracle 11g 新特性: RMAN 压缩备份

oracle11g_logo.gif

这是我的 Oracle 11g 系列的文章之一.

用压缩的方式备份,这其实是一个 Oracle 早就应该有的功能。在 10g 中,终于看到 Oracle 实现了这个特性。而 11g 中,又提供了新的可选压缩方式:

RMAN> show all;
......
CONFIGURE COMPRESSION ALGORITHM 'BZIP2'; # default

默认的压缩是 BZIP2。另外一种支持的压缩方式是 ZLIB。相比前者, ZLIB 压缩率不高,不过处理速度快。

做了一个简单的测试,无论是用BZIP2 方式还是 ZLIB 方式, 备份当前的控制文件,压缩与未压缩比率接近为 1:10.
对于海量数据的备份,节省的空间将是惊人的。

要注意的是,COMPATIBLE 初始化参数必须设置 11.0 或者更高。

EOF

RMAN Tuning checklist (Quick & Dirty version)

RMAN 调整 Checklist:

  • 合适的Large_Pool_Size .需要给 RMAN 的 Large_Pool_Size 计算公式(9i):
    LARGE_POOL_SIZE = number_of_allocated_channels *
    (16MB+( 4 * size_of_tape_buffer))
  • 如果直接备份到磁带上,增加BLKSIZE到合适大小;尝试使用
    BACKUP_TAPE_IO_SLAVES 初始化参数
  • 若系统不支持异步 I/O(asynchronous I/O) ,需要备份到磁盘上考虑使用 DBWR_IO_SLAVES 初始化参数模拟异步 I/O 。系统支持异步 I/O,则可忽略此步骤。要小心涉及到异步 I/O 的 Bug。
  • 考虑使用RMAN的 multiplexing 特性。
  • 通过动态视图 V$BACKUP_ASYNC_IO 调查有关备份异步 IO 性能的问题。激活DBWR_IO_SLAVES参数后相关信息也会在该视图有所体现。

继续阅读

RMAN 备份,未使用catalog,控制文件丢失的解决办法

情况描述

客户报告数据库故障,新来的系统管理员误操作。删掉了一些文件。具体情况是:删掉了所有重要数据文件、所有控制文件。数据库原来是归档模式,用 RMAN (Recovery Manager) 备份数据,而 RMAN 使用控制文件。
幸运的是,最后一次 RMAN full 备份是包括了控制文件在内。系统没有设定自动备份控制文件。现在状况是数据库无法启动。

不用说,客户的备份方案不够完善,但是这时候再去说这些话责备用户有事后诸葛亮之嫌,”用户是上帝,不要去得罪他”。还有,客户有Full备份(虽然不是自动备份控制文件,这样无法用常规的恢复步骤来进行恢复)。这对我们来说是个绝对的好消息。

下面我们通过一次模拟操作来演示这个问题的解决办法。

背景知识

在Oracle 816 以后的版本中,Oracle 提供了一个包: DBMS_BACKUP_RESTORE.DBMS_BACKUP_RESTORE 包是由 dbmsbkrs.sql 和 prvtbkrs.plb 这两个脚本创建的. catproc.sql 脚本运行后会调用这两个包.所以是每个数据库都有的. 这个包是 Oracle 服务器和操作系统之间 IO 操作的接口. 由恢复管理器直接调用。这两个脚本的功能是内建到 Oracle 的一些库文件中的.

由此可见,我们可以在数据库 nomount 情况下调用这些 package ,来达到我们的恢复目的。在dbmsbkrs.sql 和 prvtbkrs.plb 这两个脚本中有详细的说明文档,出于篇幅问题,就不一一加以翻译了,但在下面会直接引用一些原文说明。

继续阅读