首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >恢复RMAN备份

恢复RMAN备份
EN

Database Administration用户
提问于 2022-03-11 07:53:10
回答 2查看 702关注 0票数 0

早上好,阅读Oracle的文档,我发现了一种在备份数据库时感到舒服的方法,但是我找不到关于恢复数据库的令人满意的信息。在下面的代码中,我将展示如何进行备份,假设数据库已激活了Win2016服务器以及Oracle12c和oracle_sid正确设置的Archivelog和Controlfile自动备份:

代码语言:javascript
复制
    C:\> sqlplus owner/password@database as sysdba
    SQL> shutdown immediate;
    SQL> startup mount;
    SQL> exit;
    C:\> rman target owner/password@database
    RMAN> backup archivelog all format "E:\Backup\%d_ALogs_%e_%p.Dmp" delete input;
    RMAN> backup database format "E:\Backup\%d_%f_%p.Dmp";
    RMAN> alter database open;

此时,我将控制文件的备份复制到同一个目录中,并压缩.7z中的所有文件,然后将其移动到不同的服务器中。让我们假设我希望将该数据库移动到另一台服务器中,或者由于失败或系统更新(例如,为了赢得2019年)而需要格式化相同的服务器,并且我需要恢复它。安装Oracle 12c之后(为了简单起见,我将安装相同的版本,但我可能需要/需要安装第19版本;让我们再次面对这个问题),我创建了一个新数据库,其名称与旧数据库的名称相同,所有者的密码相同,我为系统和sysdba分配了与旧数据库相同的密码和相同的配置参数。一切都一样,只是操作系统和Oracle刚刚安装,我需要恢复数据库。据我所知,我不需要Archivelogs备份,因为在备份期间,我将它们全部刷新并永久存储在数据库中,对吗?我也不需要Control文件,因为数据库是由Oracle创建的,对吗?现在,我提取我在E:\ .Dmp中创建的最后一个文件,关闭数据库作为我以前的代码,在RMAN中,我给出:

代码语言:javascript
复制
    RMAN> restore database <with what parameters?>;
    RMAN> recover database;
    RMAN> alter database open;

我找到了不同的方法来指定参数,但据我所理解,最正确的方法是:

代码语言:javascript
复制
    RMAN> restore database format "E:\Backup\filename.Dmp";

它能起作用吗?

非常感谢您的提前,请原谅我这么详细,但我需要/想要尽可能准确。

EN

回答 2

Database Administration用户

发布于 2022-03-13 02:41:30

一切都是一样的

不对。每个数据库都有一个唯一的数据库id (dbid)。

我不需要Archivelogs备份,因为在备份期间,我将它们全部刷新并永久存储在数据库中

基本上是正确的,因为您已经关闭了数据库。但是,Oracle不使用术语“刷新Archivelogs”。它将重做日志缓冲区刷新为重做日志文件,然后(当重做日志文件已满或Oracle被请求时)将重做日志文件存档到存档。

我也不需要控制文件

不对。原始DB和新创建的DB具有不同的dbid

你不需要预先创建数据库。实际上,如果您从需要DB开始,则可能无法继续。

完整的DB备份应该有多个文件。应该有一个“控制文件自动备份”,它是一个小(数十MB)文件,默认情况下以c_开头。

还原数据库的命令应该是

  1. 设置环境变量ORACLE_SID
  2. 还原spfile (如果不需要从备份恢复spfilepfile ) RMAN>启动RMAN>还原spfile,从“关机immedate RMAN>启动名称
  3. controlfile和数据库RMAN>还原控制文件从“<路径到控制文件自动备份”;RMAN>关机immedate RMAN>启动挂载RMAN>还原数据库;RMAN>恢复数据库;
票数 1
EN

Database Administration用户

发布于 2022-03-11 15:08:05

可能不会。从rman备份还原数据库时,实际上是从零开始构建该数据库。在新服务器上“预先创建”的数据库没有任何意义。您需要还原备份,首先还原它的spfile,然后还原它自己的控制文件。另外,由于您关闭了备份的数据库,所以您有一个“一致的”备份,因此档案集不起作用。另外,我不会将您的rman备份命名为“..dmp”,因为这是exp或expdp创建的文件的默认扩展名。其他查看这些文件的人会假设它们是导出转储,而不是rman备份。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/308600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档