科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道Oracle 10g R2新特性之备份和可用性特性

Oracle 10g R2新特性之备份和可用性特性

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  Oracle 的自身备份   到现在为止,许多开发人员已经认识到 RMAN 的潜力以及它作为数据库备份工具的实用性。 您可能还记得 RMAN 可以将数据直接备份到磁盘和磁带。 当涉及磁带解决方案时。

作者:中国IT实验室 来源:中国IT实验室 2007年10月1日

关键字: ORACLE

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共3页)

  通过 RESETLOGS 实现闪回数据库/查询

  Oracle 数据库 10g 引入了闪回数据库,它通过撤消存储在闪回日志中的更改回滚整个数据库。 但请考虑以下情形:

  1. 数据库活动正常。 记录已更新。
  2. 数据库因重做日志文件中存在的物理损坏而崩溃。
  3. 使用备份控制文件从备份恢复了数据库。
  4. 使用 RESETLOGS 选项打开了数据库。
  5. 数据库活动恢复。 以正常方式更新记录。 开发人员喊到“帮帮忙”! 他更新了错误的记录集。 他请求闪回该数据库。

  当使用 RESETLOGS 选项打开数据库时,该数据库从编号为 1 的 SCN 开始。因此,新配置文件不知道过去更新的 SCN 编号。 由于闪回数据库依赖 SCN 编号,因此该特性能否在该情形下起作用?

  在 Oracle 数据库 10g 第 2 版中,它将起作用,这是因为该数据库将它的前一个副本存储在控制文件中,并对频繁地使用它。 这种情况下将查询前一个副本,并使用它将数据库闪回到不同的时间,即使在同时重置了 SCN 编号的情况下也是如此。

  我们来看一个示例: 首先,检查帐号 3 的帐户持有者。

SQL> select first_name, last_name 
  2  from accounts 
  3  where acc_no = 3; 

FIRST_NAME                     LAST_NAME 
------------------------------ ----------- 
Alan                           Smith 


  现在更新名称:

SQL> update accounts 
  2  set first_name = 'John' 
  3  where acc_no = 3; 


  现在,毁坏数据库,从备份恢复,然后在 RESETLOGS 选项中打开已恢复的数据库。

  假设一段时间过后,大厅角落里传来了一个气急败坏的声音“靠”,然后就有人请您将数据库闪回到先前的某个时间点,而这个时间点恰好位于 RESETLOGS 操作之前。

  这时只需发出以下命令即可。

SQL> flashback database to before resetlogs; 


  该命令恰好把数据库闪回到 RESETLOGS 之前的 SCN。 执行该命令后,再次检查该表。

SQL> select first_name, last_name 
  2  from accounts 
  3  where acc_no = 3; 

FIRST_NAME                     LAST_NAME 
------------------------------ ----------- 
Alan                           Smith 


  您可以看到,RESETLOGS 操作没有影响闪回操作。

  该特性使闪回数据库非常强大和有用。 它的行为对闪回查询也适用。
  闪回数据库中的恢复点

  还记得 SQL 中保存点的概念吗? 在一个事务中,您可以创建保存点,进行某些修改,创建另一个保存点,等等。 如果这些更改不是您想要的,则您所要做的就是将它们回滚到某个具体的保存点。

  现在,我们将介绍 Oracle 数据库 10g 中引入的一个新功能 ― 闪回数据库。通过它您可以将数据库倒回到前一个时间点。 在这种情况下拥有一个与保存点类似的功能(即能够倒回到一个有名称的点,而不仅仅是一个时间点)岂不是很好?

  在 Oracle 数据库 10g 第 2 版中,您可以使用一个名为恢复点的新功能来实现该操作。以下是它的工作方式。 假设有一个长期运行的处理(涉及多个必须按顺序运行的批处理程序)。以下是事件序列:

  1. 创建恢复点 rp1
  2. 运行批处理作业 1
  3. 创建恢复点 rp2
  4. 运行批处理作业 2

等等。 批处理作业 2 在执行过程中失败,您需要将数据库恢复到一致的状态。 您不必将它一直恢复到运行的开始阶段。 由于恢复点 rp2 是在批处理作业执行之前创建的,因此只需将数据库闪回到该恢复点。

  使用以下代码创建一个恢复点

create restore point before_monthend_200503; 


  现在根据当前的数据库时间和 SCN 创建了恢复点 BEFORE_MONTHEND_200503。 如果要确保可以将数据库闪回到某个特定恢复点,可以通过按如下所示创建有保证的恢复点来指定 guarantee:

create restore point before_monthend_200503 
guarantee flashback database; 


  可以通过从动态性能视图 V$RESTORE_POINT 中执行 SELECT 来确认该恢复点是否存在:

SQL> select * from v$restore_point; 

       SCN DATABASE_INCARNATION# GUA STORAGE_SIZE 
---------- --------------------- --- ------------ 
TIME 
--------------------------------------------------- 
NAME 
--------------------------------------------------- 

   1429811                     1 YES      8192000 
27-MAR-05 05.18.39.000000000 PM 
BEFORE_MONTHEND_200503 


  稍后当您要将数据库闪回到该恢复点时,您只需发出:

flashback database to restore point before_monthend_200503; 


  如果检查警报日志,它将显示一个类似如下的行:

Media Recovery Applied UNTIL CHANGE 1429814 


  恢复点(尤其是有保证的恢复点)在许多与数据库相关的任务中非常有用。 QA 数据库就是一个典型示例。在该数据库中,您可能要建立一个恢复点、运行某些测试并闪回到恢复点,从而使数据库看起来好象什么也没发生一样。 然后,您可以执行另一轮测试,并再次将它恢复到恢复点。

  研究快速恢复区

  您可能已经配置了快速恢复区来备份不同类型的文件。 但您怎么知道其中有哪些可用的备份类型呢?

  一个新视图 V$FLASH_RECOVERY_AREA_USAGE 显示了快速恢复区中可用的备份类型。

SQL> select * from V$FLASH_RECOVERY_AREA_USAGE; 

        FILE_TYPE    PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES 
        ------------ ------------------ ------------------------- --------------- 
        CONTROLFILE                   0                         0               0 
        ONLINELOG                     0                         0               0 
        ARCHIVELOG                  .02                       .02               1 
        BACKUPPIECE               68.98                      1.02              10 
        IMAGECOPY                     0                         0               0 
        FLASHBACKLOG                .95                         0               3 


  使用该视图,您可以立即看到快速恢复区中的可用文件类型。 但它只显示百分比,因此您如何确定实际值? 只需查询视图 $RECOVERY_FILE_DEST 即可。

SQL> select * from V$RECOVERY_FILE_DEST; 

NAME 
---------------------------------------------------------- 
SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES 
----------- ---------- ----------------- --------------- 
/home/oracle 
 2147483648 1502122496          22201856              14 


  该查询显示恢复区的总大小为 16384000。闪回日志占用 SPACE_LIMIT 列的 0.95%(上一个查询中所示),因此您可以计算所占用空间的实际大小。 它还显示了从快速恢复区中不同类型的备份中可以回收的空间大小。 例如,您可以因为备份可能已过期而回收 1.02% 的已占用空间。 使用该视图,您可以针对快速恢复区使用率和大小进行智能化的预测。

  Oracle Enterprise Manager 通过向 Recovery Settings 页(显示快速恢复区域中的文件细分)中添加一个饼图来利用新的 V$RECOVERY_FILE_DEST 视图:


  DBA 工作(尤其是生产支持 DBA 的工作)的独特方面之一就是成功、可靠以及高效地进行备份和恢复的能力。 在 Oracle 数据库 10g 第 2 版中,该领域中的增强使 DBA 的工作变得更加容易和可靠。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章