0

这个问题几乎就像 oracle rman simple backup

但是那里没有可接受的答案,这个问题大约是11g。所以我会问:

我想在 oracle shema 上做一些表初始化 DDL 测试,并且我想在运行之间将数据库恢复到之前的测试状态。我在 RMAN 中执行以下操作:

shutdown immediate;
startup mount
backup database;
sql 'alter database open';

正如我所见,它工作正常,列表备份显示备份。

然后我做了一些修改(添加了一些用户,添加了一些表,添加了数据),然后我尝试恢复备份:

shutdown immediate;
startup mount
restore database;
recover database;
sql 'alter database open resetlogs';

预期结果:应将数据库恢复到进行初始备份时的确切状态。

实际结果:我在测试 DDL 中创建的所有新表和用户继续存在。我通过关闭连接、重新启动会话,甚至从表中进行选择来验证这一点!即使在还原之后,这些表仍然存在!

这有什么关系?在 MSSQL 和 Postgres 中,备份意味着您保存数据库的状态,恢复它意味着您回到备份的状态。但在 Oracle 11g 的 RMAN 中,它“声称”恢复成功,但证据清楚地表明并非如此。

如何让 oracle 将数据库的状态完全保存,然后进行更改,当我恢复时,我希望数据库与备份时的状态完全相同

这在甲骨文中可能吗?

4

1 回答 1

0

是的,这是可能的 - 您有多种选择:

  1. 创建数据库的冷备份(数据文件、控制文件、在线重做日志),然后在必要时恢复它们
  2. 执行所谓的“时间点恢复”(假设您的数据库处于归档日志模式)。使用 RMAN 进行数据库备份,注意“时间”或“SCN”或“归档日志序列”,一段时间后您可以恢复数据库并恢复到之前记录的时间/SCN/LOG SEQUENCE
  3. Oracle 专门为此目的设计的,我在您的情况下推荐它“闪回数据库”(浏览 Oracle 文档以了解这是什么)。

如果可能,Oracle 总是“尝试”将您的数据库恢复/恢复到最后提交的事务,这就是您得到上述结果的原因,但如果您想恢复到特定时间/SCN/SEQUENCE,只需告诉 Oracle这个 :)

于 2015-12-09T09:04:52.067 回答