有归档日志.
       但是无完整备份档
oracle恢复要连续的归档日志,需要归档时的一个完整备份,不过如果ORACLE能在你归档找到足够信息也可以恢复
http://www.oradb.net/err/error_008.htm
http://www.oradb.net/err/error_009.htm

解决方案 »

  1.   

    你可以从归档日志中获取恢复信息,可以从第六步中找到需要恢复的信息
    安装LogMiner  要安装LogMiner工具,必须首先要运行下面这样两个脚本,   l $ORACLE_HOME/rdbms/admin/dbmslsm.sql   2 $ORACLE_HOME/rdbms/admin/dbmslsmd.sql.  这两个脚本必须均以SYS用户身份运行。其中第一个脚本用来创建DBMS_LOGMNR包,该包用来分析日志文件。第二个脚本用来创建DBMS_LOGMNR_D包,该包用来创建数据字典文件。 
      
    Logminer是每个Dba都应熟悉的工具,当一天由于用户的误操作你需要做不完全的恢复时,由于你无法确定这个操作是哪个时间做的,所以这对你的恢复就带来的很大的难度,丢失的数据也不能完全恢复回来。而LogMiner就可以帮你确定这个误操作的准确时间。我的测试环境是Aix4.3.3的操作系统,Oracle9.2.0.3的测试库。一、LogMiner的几点说明
    1、LogMiner可以帮你确定在某段时间所发的各种DML,DDL操作的具体时间和SCN号,它所依据的是归档日志文件及联机日志文件。
    2、它只能在Oracle8i及以后的版本中使用,不过它可以分析Oracle8的日志。
    3、Oracle8i只能用于分析DML操作,到Oracle9i则可以分析DDL操作了。
    4、LogMiner不支持索引组织表、Long、LOB及集合类型。
    5、MTS的环境也不能使用LogMiner.二、操作步骤
    1、设定用于LogMiner分析的数据文件存放的位置
     这是设定utl_file_dir参数的过程,我的示例:
     a、在initctc.ora文件中加入如下一行
        utl_file_dir=/u01/arch
     b、得启数据库
       oracle>sqlplus /nolog   
       sql>conn / as sysdba
       sql>shutdown immediate
       sql>statup2、生成数据字典文件,是通过dbms_logmnr_d.build()来完成。
      SQL> BEGIN
       2     dbms_logmnr_d.build(
       3       dictionary_filename => 'logminer_dict.dat',
       4       dictionary_location => '/u01/arch'
       5     );
       6  END;
       7 / 
      
      dictionary_location指的是Logminer数据字典文件存放的位置,它必须匹配utl_file_dir的设定。
      其中的dictionary_filename指的是放于存放位置的字典文件的名字,名字可以任意取。3、建立一个日志分析表
      a、建立日志分析表数据库必须在mount或nomount状态,启动数据库到mount状态。
        sqlplus /nolog
        sql>conn / as sysdba
        sql>shutdown immediate
        sql>starup mount
      
      b、建立日志分析表,使用dbms_logmnr.add_logfile()
        SQL> BEGIN
         2     dbms_logmnr.add_logfile(
         3       options => dbms_logmnr.new,
         4       logfilename => '/u01/arch/arc_ctc_0503.arc'
         5     );
         6  END;
         7 /       
        其中的options有三种取值,dbms_logmnr.new用于建一个日志分析表;dbms_logmnr.addfile用于加入用于分析的的日志文件;dbms_logmnr.removefile用于移出用于分析的日志文件。
            4、添加用于分析的日志文件。
        SQL> BEGIN
         2     dbms_logmnr.add_logfile(
         3       options => dbms_logmnr.addfile,
         4       logfilename => '/u01/arch/arc_ctc_0504.arc'
         5     );
         6  END;
         7 / 
      
      使用则可以把这个文件从日志分析表中移除,从而不进行分析。
        SQL> BEGIN
         2     dbms_logmnr.add_logfile(
         3       options => dbms_logmnr.removefile,
         4       logfilename => '/u01/arch/arc_ctc_0503.arc'
         5     );
         6  END;
         7 /   
         5、启动LogMiner进行分析。
        SQL> BEGIN
         2     dbms_logmnr.start_logmnr(
         3       dictfilename => '/u01/arch/logminer_dict.dat',
         4       starttime => to_date('20030501 12:15:00','yyyymmdd hh24:mi:ss'),
         5       endtime => to_date('20030501 15:40:30','yyyymmdd hh24:mi:ss')
         6     );
         7  END;
         8 / 
        
        即分析2003年5月1日这天12:15至15:40这段时间,并把分析结果放到数据字典中以用于查询。还有两个参数StartScn(起始scn号)及EndScn(终止Scn)号。6、查看日志分析的结果,通过查询v$logmnr_contents可以查询到
      a、查看DML操作,示例:
        SELECT operation,
               sql_redo,
               sql_undo,
          FROM V$logmnr_contents
         WHERE seg_name = 'QIUYB';
       
         OPERATION     SQL_REDO                    SQL_UNDO
         ----------    --------------------------  --------------------------
         INSERT        inser into qiuyb.qiuyb ...  delete from qiuyb.qiuyb...
      
        其中operation指的是操作,sql_redo指的是实际的操作,sql_undo指的是用于取消的相反的操作。
      
      b、查看DDL操作,示例:
        SELECT timstamp,
               sql_redo
          FROM v$logmnr_contents
         WHERE upper(sql_redo) like '%TRUNCATE%';7、结束LogMiner的分析。
      SQL>BEGIN
       2     dbms_logmnr.end_logmnr;
       3   end;
       4 / 三、与LogMiner相关的数据字典。
    1、v$loglist           它用于显示历史日志文件的一些信息
    2、v$logmnr_dictionary 因logmnr可以有多个字典文件,该视图用于显示这方面信息。
    3、v$logmnr_parameters 它用于显示logmnr的参数
    4、v$logmnr_logs       它用于显示用于分析的日志列表信息。