在开始之前,我只想提一下,我不是 DBA,我是一名程序员/开发人员,也恰好负责数据库。所以如果我说错了什么,我提前道歉。
我们最近经历了一场大规模的全市电力浪涌,导致我们的数据库服务器崩溃。我们在服务器上运行了多个数据库(RHEL6 - Oracle 11gr2)。我使用 rman 和命令“backup database plus archivelog delete input”备份所有数据,然后对一个特定模式进行 impdp 转储,以便我们可以在一夜之间将其导入到我们的测试环境中。在我们的服务器被毁后,我们唯一可以从硬盘恢复的是包含大量 bkp 文件的 backupset 文件夹。仅此而已。我没有控制文件或数据库的 DBID。但是我确实有一个 3 天前的数据转储
有什么方法可以将数据库恢复到新主机上吗?
问候
亚历克斯
就在这里。使用相同的文件结构将文件传输到新服务器(如果有的话)。接下来使用 dbname 和 control_file 参数创建一个 init.ora 文件。在 nomount 中使用该 init.ora 启动实例。
如果您碰巧在数据库的 $ORACLE_HOME/dbs/ 中有快照控制文件,请启动 rman:
没有控制文件,它有点棘手,但仍然可能。这里有一个很好的解释如何在没有任何现有控制文件的情况下恢复 rman 备份
提示:始终通过创建当前控制文件的副本来结束备份:
最好位于比 /tmp 更智能的位置。它不仅包含您的数据库布局,还包含您最近和最有价值的备份的管理。
我认为 o1_mf_ncsnf_TAG20130803T022352_8zrqqfc4_.bkp 包含您的控制文件。Format Of Backup Pieces Managed In FRA (Doc ID 566680.1)说,第三部分中的“c”表示控制文件。
从 o1_mf_ncsnf_TAG20130803T022352_8zrqqfc4_.bkp 恢复控制文件后(在您对 ik_zelf 的帖子的评论中,您说您已设法恢复它)您尝试执行恢复,这意味着交叉检查,并且由于备份文件位于不同的位置, RMAN 将它们标记为
EXPIRED
. 你有2个选择。RMAN> list backup
,重新创建路径,将备份文件移动到它们的旧位置,然后在 RMAN 中crosscheck backup all
(如果有几个不同的文件夹,这里有很多工作)RMAN> catalog start with '/new/backup/path'
并只是restore
/recover