li
  当前位置:主页 > 备份恢复 > 文章内容
li
恢复之利用RESETLOGS之前的备份进行恢复(二)
来源: http://yangtingkun.itpub.net/  作者: yangtingkun    时间:2008-01-26   阅读:14  
本文章共4285字,分3页,当前第1页,快速翻页:
 

一般情况下,是无法利用RESETLOGS操作之前的备份进行数据库的恢复的。但是在特定条件下利用RESETLOGS之前的备份进行恢复是可行的。

本文讨论如何利用RESETLOGS操作前的数据库备份进行数据库的恢复。


利用RESETLOGS操作之前的数据库备份的前提是:数据库的备份处于一致性状态,且在以RESETLOGS方式打开数据库之前没有进一步的恢复操作或数据文件的修改。而且,恢复时必须存在RESETLOGS操作之后的控制文件。

先看下面这个简单的例子:假设服务器调整硬件,在调整之前,对数据库的数据文件进行冷备份。

SQL> CONN /@TEST AS SYSDBA
已连接。
SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> HOST COPY F:ORACLEORADATATEST*.DBF F:ORACLEBACKUPTEST20060310

SQL> HOST COPY F:ORACLEORADATATEST*.CTL F:ORACLEBACKUPTEST20060310

由于硬件故障导致数据库的所有联机日志丢失,数据库需要使用RESETLOGS方式打开。下面模仿丢失所有文件,利用刚才备份的数据以RESETLOGS方式打开数据库。

SQL> HOST DEL F:ORACLEORADATATEST*

SQL> HOST COPY F:ORACLEBACKUPTEST20060310* F:ORACLEORADATATEST

SQL> STARTUP MOUNT
ORACLE 例程已经启动。

Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> RECOVER DATABASE UNTIL CANCEL
完成介质恢复。
SQL> ALTER DATABASE OPEN RESETLOGS;

数据库已更改。

由于数据库是正常关闭,因此RECOVER DATABASE UNTIL CANCEL不会进行任何实际的恢复操作,因此,这个备份可以在RESETLOGS操作后用来恢复。

SQL> SELECT COUNT(*) FROM YANGTK.TEST_BACKUP;

COUNT(*)
----------
6290

SQL> DELETE YANGTK.TEST_BACKUP WHERE ROWNUM < 6000;

已删除5999行。

SQL> COMMIT;

提交完成。

SQL> SHUTDOWN IMMEDIATE
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> HOST COPY F:ORACLEBACKUPTEST20060310*.DBF F:ORACLEORADATATEST

SQL> STARTUP MOUNT
ORACLE 例程已经启动。

Total System Global Area 76619308 bytes
Fixed Size 454188 bytes

www.ixdba.net


Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> RECOVER DATABASE
完成介质恢复。
SQL> ALTER DATABASE OPEN;

数据库已更改。

SQL> SELECT COUNT(*) FROM YANGTK.TEST_BACKUP;

COUNT(*)
----------
291

虽然这种方法可以用来恢复数据库,但是限制条件还是相对比较多的。在执行完RESETLOGS操作后,还是应该马上进行数据库的全备。

如果数据库是OPEN RESETLOGS前不是处于正常关闭状态下,可以利用RECOVER DATABASE操作,将数据库恢复到一致性状态,然后SHUTDOWN数据库,备份数据库后再以RESETLOGS方式打开,这样得到的备份也可以用于RESETLOGS方式之后的恢复。

SQL> CONN /@TEST AS SYSDBA
已连接。
SQL> SELECT 'ALTER TABLESPACE ' || TABLESPACE_NAME || ' BEGIN BACKUP;'
2 FROM DBA_TABLESPACES WHERE CONTENTS != 'TEMPORARY';

'ALTERTABLESPACE'||TABLESPACE_NAME||'BEGINBACKUP;'
-------------------------------------------------------------
ALTER TABLESPACE SYSTEM BEGIN BACKUP;
ALTER TABLESPACE UNDOTBS1 BEGIN BACKUP;
ALTER TABLESPACE INDX BEGIN BACKUP;
ALTER TABLESPACE TOOLS BEGIN BACKUP;
ALTER TABLESPACE USERS BEGIN BACKUP;
ALTER TABLESPACE YANGTK BEGIN BACKUP;

已选择6行。

SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP;



阅读更多内容1 · 2 · 3 · 下一页>>


  上一篇: 恢复之利用RESETLOGS之前的备份进...   下一篇: 恢复之数据字典和控制文件不一致...
li
 §相关评论  
 热点文章

·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 编辑推荐
·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 相关篇章
·恢复之利用RESETLOGS之前的备份进...
·恢复之不可恢复操作后的恢复(二...
·恢复之利用RESETLOGS之前的备份进...
·恢复之利用RESETLOGS之前的备份进...
·恢复之使用非当前控制文件恢复只...
·恢复之恢复操作的中断
·恢复之不可恢复操作后的恢复(一...
·恢复之不可恢复操作后的恢复(三...
·恢复之使用非当前控制文件恢复只...
·恢复过程中的ORA-1113错误
·恢复之数据字典和控制文件不一致...
·恢复之非归档模式恢复到其他位置
·恢复之数据字典和控制文件不一致...
·恢复之非归档模式下的恢复
·恢复之基于改变的不完整恢复
·恢复之基于取消的不完整恢复
·恢复之非归档模式下数据库非正常...
·恢复之数据库打开时的完全恢复
·恢复之基于时间的不完整恢复
·恢复之利用备份在所有控制文件丢...
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接