Home  >  Article  >  Database  >  Oracle 10g 闪回数据库中的恢复点

Oracle 10g 闪回数据库中的恢复点

WBOY
WBOYOriginal
2016-06-07 16:59:08986browse

现在,我们将介绍 Oracle 数据库 10g 中引入的一个新功能 mdash; 闪回数据库。通过它您可以将数据库倒回到前一个时间点。在

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

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

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

以下是事件序列:

创建恢复点 rp1
运行批处理作业 1
创建恢复点 rp2
运行批处理作业 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 数据库就是一个典型示例。在该数据库中,您可能要建立一个恢复点、运行某些测试并闪回到恢复点,从而使数据库看起来好象什么也没发生一样。然后,您可以执行另一轮测试,并再次将它恢复到恢复点。

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn