我在从旧备份中恢复一些数据时遇到了一些麻烦。
原来的机器丢失了,我的任务是恢复数据。这不是一台关键机器,但一些数据仍然有用。
- 原始服务器上的 Oracle:11.2.0.2
- 目标服务器上的 Oracle:11.2.0.4
服务器是redhat- 5.6 原版。6.x 目的地。
在安装了 oracle 的新机器上,我做了:
export ORACLE_SID=oldsid
rman TARGET /
在 rman 中,我将 sid 设置为旧数据库:
SET DBID 3348161342;
然后从备份中恢复 controlfile 和 spfile。重要提示:这些文件比备份更新。
RESTORE CONTROLFILE from '/mount/restorepoint/3348161342_41qtltn4_1_1_20160111.bck
restore spfile from '/mount/restorepoint/sp_OLDDB-3348161342_42qtltn6_1_1_20160111.bck';
挂载数据库:
ALTER DATABASE MOUNT;
并指定备份文件的位置:
catalog start with '/mount/restorepoint/rmanfiles';
因为在原始数据库上也有 TDE。
- 创建了一个存放钱包的目录
- 创建了带有钱包位置指示的 sqlnet.ora 文件
修改后的系统:
alter system set encryption wallet open identified by "thetdepassword";
然后再次在 rman 中:
alter database mount;
RESTORE DATABSE;
到目前为止,一切都很好。但是当我进入 OPEN 数据库时:
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
好吧,我的坏。然后我使用:alter database open RESETLOGS; 我有错误:
ORA-01152: file 4 was not restored from a sufficiently old backup
ORA-01110: data file 4: '/ltm/data/oracle/dati/olddb/users01.dbf'
我错过了什么?
在原始备份脚本中的选项必须是:
BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE
我怎样才能再次读取该数据?
我来自 sqlserver 和 postgresql 世界,所以可能我错过了一些东西......
让我们看看 oerr 实用程序提供的信息。
根据您的帖子,您尚未恢复数据库。您可以尝试以下命令来恢复您的数据库。
由于您是 Oracle 新手,您可能会发现以下链接对于将旧备份恢复到新主机很有用。
在新主机上恢复数据库
您必须恢复数据库。我假设您恢复了您的在线备份(或不一致的离线备份,但我们将忽略这种可能性)。下一步是恢复数据库。所以在你的rman会话中执行一个
或一个
其中 '....' 是一个时间点(或 SCN 或类似的东西)。如果使用时间点,它必须在数据文件备份的结束时间之后。否则数据文件将保持不一致。
恢复过程会将增量 1 级备份(如果存在)和存档日志应用到您的数据库。
恢复数据库后,您可能会遇到下一个问题,因为您将 11.2.0.2 数据库恢复到 11.2.0.4 环境。因此,您必须将还原与升级到 11.2.0.4 结合起来。
升级到 11.2.0.4 的详细说明可以在 11.2.0.4 软件包中找到。这是我在 Google 上搜索到的一篇简短的 Blob 文章 ( rkorclappsdbastuff )。从这里我们看到,您必须在 11.2.0.2 数据库上执行一些预升级步骤(步骤 2 到 5),因此您必须跳过它们:您无法运行预升级脚本 utlu112i.sql 并实施其建议,您也不能升级前计算字典统计信息,不能运行 utlrp.sql 编译无效对象。您必须将恢复的 spfile 调整为 11.2.0.4:创建一个 pfile,更改/添加/删除参数,如有必要,从 spfile 重新创建一个 spfile。您不需要数据库来执行
create pfile
andcreate spfile
。现在您可以打开数据库,但您必须在升级模式下打开它,因为它是一个 11.2.0.2 数据库,必须升级到 11.2.0.4 并且您使用重置日志打开它,因为它是一个没有日志文件的恢复数据库。所以正确的命令(参见Oracle SQL Language Reference)是
现在您可以继续执行其余步骤。
如果您有多个控制文件备份,请尝试使用最旧的备份。本质上,该消息告诉您控制文件比备份的其余部分更新。例如,如果您备份控制文件,然后备份数据库,然后备份控制文件。使用控制文件的第二个备份进行还原将导致您遇到的错误。使用控制文件的旧备份或第一个备份进行恢复应该可以工作。