我们的备份出了问题。我做了什么
关闭数据库
恢复备份
重启数据库
之后我收到了这个错误
ORA-01122: Datenbank-Datei 2 bringt Fehler bei Verifizierungspruefung
ORA-01110: Datendatei 2: 'D:\ORACLE\ORA92ABO\ABO\UNDOTBS01.DBF'
ORA-01207: Datei neuer als Kontrolldatei - alte Kontrolldatei
控制文件位于 C:\oracle ... 而数据库文件位于 d:\oracle\ora92abo...
我的猜测是,备份程序在备份 d:\oracle 文件和 c:\controlfile 之间重新启动数据库。因此,在两次备份之间存在数据库运行的时间。
我觉得那很糟糕。
我在 Google 上搜索到 UNDOTBS01.DBF 与克隆有关,但我们目前不使用/不需要。
编辑:备份方法的详细信息
步骤 1:通过关机
spool d:\oracle\01shutdon.log
connect / AS SYSDBA
shutdown immediate
exit
步骤2:数据传输
使用 syncback 将数据库文件夹备份到 NAS 使用 xcopy 将控制文件备份到 NAS
步骤3:重启
spool d:\oracle\02startup.log
connect / AS SYSDBA
startup
exit
答案1
好的,这就是要做的事情。显然,在这里代入您自己的值。
- 从磁盘中删除 UNDOTBS DBF。您仍然有备份,所以没问题。
- sqlplus / 作为 sysdba
- 启动
- 它会抱怨缺少 DBF,不用担心
- 改变系统设置undo_management = 手动范围=spfile;
- 关机并重新启动
- 修改数据库数据文件'D:\ORACLE\ORA92ABO\ABO\UNDOTBS01.DBF' 脱机删除;
- 改变数据库打开;
- 删除表空间undotbs;
- 重新创建 UNDO 表空间。做需要它。
- 关机并重新启动
你真的真的需要读一些远程管理文档...
答案2
首先 - 当你进行恢复时,你是否也恢复了控制文件?我知道这很明显,但无论如何还是要检查一下。
在 Oracle 中,有一种东西叫做 SCN,即系统控制编号。每次执行 COMMIT 时,SCN 都会增加 1。数据库的 SCN 保存在每个 DBF 的标题和控制文件中。此错误意味着您的 UNDO 表空间(克隆???不,它与回滚 - 撤消 - 事务有关)数据文件的 SCN 高于控制文件。也就是说,控制文件比 DBF 更旧。
您究竟是如何进行备份的?是用 RMAN 吗?还是在数据库运行时复制 DBF……?好消息是,如果您有一个好的备份,那么就不需要担心其中正在进行的事务。
您可以通过以下两种方法之一来解决这个问题。首先,您可以继续尝试启动它 - 每次启动尝试都会将 SCN 增加 1,因此最终控制文件将通过 DBF。这可能需要一段时间。或者您可以尝试重新创建控制文件。找到另一个可以运行的 Oracle,然后执行ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS 'c:\temp\mycontrolfile.ctl'
;使用 DB 名称和 DBF 的新位置编辑该文件,启动并运行该脚本,它将生成一个新的控制文件。然后您应该能够OPEN RESETLOGS
。
然而,如果您的备份不好,您就无能为力了。