【问题标题】:rman : how to only restore a tablespace (without recovering)?rman:如何只恢复一个表空间(不恢复)?
【发布时间】:2014-07-15 11:44:09
【问题描述】:

我有 2 个表空间,我想在它们处于一致状态时进行备份(比如说 T0)。当问题发生时 (T1​​),我希望能够将两个表空间恢复到它们在 T0 时的状态而不恢复在 T0 和 T1 之间发生的所有更改(我想全部忽略它们)。
到目前为止,我可以做的是备份和恢复表空间(备份后发生的更改,这不是我想要的)。
我正在使用 Oracle 11gR2 XE 和 RMAN。
我正在寻找与 Oracle 10 g 及更高版本兼容的解决方案。
感谢您的时间和帮助。

【问题讨论】:

  • T0是如何定义的?是特定的时间吗?还是重复操作之前的状态?还是数据库生命中的某个任意时刻?这是一项持续的要求还是一次性的?
  • T0 是我在启动操作之前备份数据库的时间,我不确定它是否会成功。更清楚地说,我有一个自动化过程,它将类图转换为 SQL 查询,然后执行这些生成的查询。这些查询应该在事务中执行:它们成功或被取消。问题是一些查询是在 oracle 中自动提交的 DDL 类型。我想备份我的表空间,然后启动查询,如果查询失败,我将不得不通过恢复备份来取消所有更改 (DDL)(恢复也应该是自动的)。

标签: sql oracle database-backups database-restore rman


【解决方案1】:

我认为最好的方法是可传输表空间 (http://www.oracle-base.com/articles/misc/transportable-tablespaces.php)。 在操作之前,您将在空数据库中传输表空间。 在您必须对新数据库进行完整备份之后。 如果在迁移过程中出现问题,您可以进行逆操作。

当然,在此之前测试一下这个解决方案!

【讨论】:

  • 我刚刚阅读了您发布的演示。这个解决方案不适合我的情况,因为它需要第二个数据库,这并不总是可能拥有,也没有时间配置它。
  • 创建一个空数据库非常容易。您可以在互联网上找到许多脚本,然后很容易做到。
  • 你是对的,但我想最小化所需的配置。在测试环境中这不是问题,但我正在考虑生产环境。
【解决方案2】:

TABLESPACE POINT IN TIME 恢复怎么样?它会满足您的需求吗?

PS:它有一些先决条件,例如在其他表空间中的表中没有 FK。 在 XE 版本中可能不允许这样做。

【讨论】:

  • XE 版本不支持它(如你所说),因此我无法使用它。
猜你喜欢
  • 2011-01-13
  • 2012-07-05
  • 2013-05-29
  • 2020-02-25
  • 2021-03-14
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多