你是怎么做恢复的?它提示的ARCHIVE LOG是否存在在E盘的目录内?

解决方案 »

  1.   

    4.2归档模式下丢失或损坏一个数据文件 
    4.2.1 OS备份方案 
    在归档方式下损坏或丢失一个数据文件,如果存在相应的备份与该备份以来的归档日志,恢复还是比较简单的,可以作到尽量少的Down机时间,并能作到数据库的完全恢复。 
    1、连接数据库,创建测试表并插入记录 
    SQL*Plus: Release 8.1.6.0.0 - Production on Tue May 6 13:46:32 2003 
    (c) Copyright 1999 Oracle Corporation. All rights reserved. 
    SQL> connect internal/password as sysdba; 
    Connected. 
    SQL> create table test(a int) tablespace users; 
    Table created 
    SQL> insert into test values(1); 
    1 row inserted 
    SQL> commit; 
    Commit complete 2、备份数据库 
    SQL> @hotbak.sql 或在DOS下 svrmgrl @hotbak.sql 3、继续在测试表中插入记录 
    SQL> insert into test values(2); 
    1 row inserted 
    SQL> commit; 
    Commit complete 
    SQL> select * from test; 

    --------------------------------------- 


    SQL> alter system switch logfile; 
    System altered. 
    SQL> alter system switch logfile; 
    System altered. 4、关闭数据库,模拟丢失数据文件 
    SQL> shutdown immediate; 
    Database closed. 
    Database dismounted. 
    ORACLE instance shut down 
    C:\>del D:\ORACLE\ORADATA\TEST\USERS01.DBF 
    模拟媒体毁坏 5、启动数据库错误,脱机该数据文件 
    SQL> startup 
    ORACLE instance started. Total System Global Area 102020364 bytes 
    Fixed Size 70924 bytes 
    Variable Size 85487616 bytes 
    Database Buffers 16384000 bytes 
    Redo Buffers 77824 bytes 
    Database mounted. 
    ORA-01157: cannot identify/lock data file 3 - see DBWR trace file 
    ORA-01110: data file 3: 'D:\ORACLE\ORADATA\TEST\USERS01.DBF' 
    还可以查看报警文件(见上一个恢复案例)或动态视图v$recover_file 
    如SQL> select * from v$recover_file; FILE# ONLINE ERROR CHANGE# TIME 
    ---------- ------- ------------------ ---------- ----------- 
    3 ONLINE 1013500 2003-05-07 脱机数据文件 
    SQL> alter database datafile 3 offline drop; 
    Database altered. 6、打开数据库,拷贝备份回来(restore),恢复(recover)该数据文件,并联机 
    SQL> alter database open; 
    Database altered. 
    拷贝备份从备份处 
    copy d:\databak\ users01.dbf d:\oracle\oradata\test; 
    恢复该数据文件 
    SQL> recover datafile 3; 
    ORA-00279: change 1053698 generated at 05/07/2003 17:51:26 needed for thread 1 
    ORA-00289: suggestion : D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00304.ARC 
    ORA-00280: change 1053698 for thread 1 is in sequence #304 Specify log: {<RET>=suggested | filename | AUTO | CANCEL} 
    AUTO 
    ORA-00279: change 1053701 generated at 05/07/2003 17:51:39 needed for thread 1 
    ORA-00289: suggestion : D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00305.ARC 
    ORA-00280: change 1053701 for thread 1 is in sequence #305 
    ORA-00278: log file 'D:\ORACLE\ORADATA\TEST\ARCHIVE\TESTT001S00304.ARC' no 
    longer needed for this recovery Log applied. 
    Media recovery complete. 
    恢复成功,联机该数据文件 
    SQL> alter database datafile 3 online; 
    Database altered. 7、检查数据库的数据(完全恢复) 
    SQL> select * from test; 

    --------------------------------------- 


    说明: 
    1、采用热备份,需要运行在归档模式下,可以实现数据库的完全恢复,也就是说,从备份后到数据库崩溃时的数据都不会丢失。 
    2、可以采用全备份数据库的方式备份,对于特殊情况,也可以只备份特定的数据文件,如只备份用户表空间(一般情况下对于某些写特别频繁的数据文件,可以单独加大备份频率) 
    3、如果在恢复过程中,发现损坏的是多个数据文件,即可以采用一个一个数据文件的恢复方法(第5步中需要对数据文件一一脱机,第6步中需要对数据文件分别恢复),也可以采用整个数据库的恢复方法。 
    4、如果是系统表空间的损坏,不能采用此方法 
      

  2.   

    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    auto
    曾经试着恢复过,到这一步auto时,在恢复第一个归档文件时就报错。
    我在上面提过,我的归档文件大小不一致,并且产生的时间也有问题,
    比如,晚上23:00产生一个,直到第二天早上9:00多才再产生一个,可我们
    晚上23:30和凌晨2:00各有一个后台的自动运行的统计程序,不可能不产生
    归档文件。我恢疑归档文件的设置就有问题,你看呢?象下面的错误提示是否和归档的设置有问题有关啊?
    Thu Aug 26 08:26:11 2004
    Thread 1 advanced to log sequence 205655
      Current log# 2 seq# 205655 mem# 0: D:\ORANT\DATABASE\LOG3ORCL.ORA
      Current log# 2 seq# 205655 mem# 1: E:\LOGCTL\LOG4ORCL.ORA
      

  3.   

    大家为何不继续回复啊,我是不会食言的,肯定会给分的!
    如果归档文件本身坏了,是不是就没法恢复啊?如果用drop表空间
    、重建数据文件的方法我这里又有这样的问题:
    我新建的一个用户牵涉的数据文件有一些在system用户下,是否风险很
    大,请各位大侠帮忙,多谢!
      

  4.   

    你还是安全着想,先备份当前的数据库,如果是归档文件本身损害,那如果有ORACLE用到的恢复信息那就不行了,你先让ORACLE  recover database until time 'yyyy-mm-dd:hh:mm:ss'使用基与时间点的恢复