重建controlfile,11g创建语句,自己改改。
nomount下创建控制文件;
Sqlplus/nolog;Conn hgq as sysdba;Startup nomount;CREATE CONTROLFILE REUSE set DATABASE"HGQ"  RESETLOGS  ARCHIVELOG   MAXLOGFILES 16   MAXLOGMEMBERS 3   MAXDATAFILES 100   MAXINSTANCES 8   MAXLOGHISTORY 454DATAFILE 'E:\oracle\oradata\HGQ\SYSTEM01.DBF', 'E:\oracle\oradata\HGQ\UNDOTBS01.DBF', 'E:\oracle\oradata\HGQ\SYSAUX01.DBF', 'E:\oracle\oradata\HGQ\USERS01.DBF', 'E:\oracle\oradata\HGQ\TEST01.DBF', 'E:\oracle\oradata\HGQ\EXAMPLE01.DBF', 'E:\oracle\oradata\HGQ\FJBB01.DBF', 'E:\oracle\oradata\HGQ\HGQ.DBF', 'E:\oracle\oradata\HGQ\HWFX1.DBF', 'E:\oracle\oradata\HGQ\KFYY01.DBF'LOGFILE GROUP 1 ('E:\oracle\oradata\HGQ\REDO01.LOG')  SIZE 10M, GROUP 2 ('E:\oracle\oradata\HGQ\REDO02.LOG')  SIZE 10M, GROUP 3 ('E:\oracle\oradata\HGQ\REDO03.LOG')  SIZE 10MCHARACTER SET ZHS16GBK;

解决方案 »

  1.   


    控制文件创建成功了,然后是不是就可以执行restore操作了?
      

  2.   


    控制文件创建成功了,然后是不是就可以执行restore操作了?
    是执行 rman> restore database;吗?
    疑问是:新创建的控制文件里没有注明我的备份集是哪个啊?
      

  3.   

    你用的我的代码了?要改的。
    上面有个参数,noresetlogs或者resetlogs,如果你日志文件
    没有问题,那么就用noresetlogs,这时候是完全恢复;
    如果你的日志文件有问题,那么就用resetlogs,oracle认定
    是日志文件已经丢失,这时候回复是不完全恢复。
    最后要执行recover database; alter database open/alter database open resetlogs;
      

  4.   


    嗯,noresetlogs或者resetlogs,如果你日志文件
    没有问题,那么就用noresetlogs,这时候是完全恢复;那我先用no restlogs吧。再用resetlogs试试吧。
      

  5.   


    嗯,noresetlogs或者resetlogs,如果你日志文件
    没有问题,那么就用noresetlogs,这时候是完全恢复;那我先用no restlogs吧。再用resetlogs试试吧。
    如果是noresetlogs,
    后面执行recover dtabase;
    alter database open;
    如果是Resetlogs,
    后面执行recover database using backup controlfile until cancel,
    如果在线日志没有随坏,直接写入指定的在线日志,或者直接利用
    归档,但是最后一个归档是不存在的,输入cancel取消回复,
    然后强制打开数据库alter databaes open resetlogs;
      

  6.   

    SQL> CREATE CONTROLFILE REUSE set DATABASE "powerdes" RESETLOGS ARCHIVELOG
       MAXLOGFILES 16
       MAXLOGMEMBERS 3
       MAXDATAFILES 100
       MAXINSTANCES 8
       MAXLOGHISTORY 454
    DATAFILE
    '/home/oradata/powerdes/system01.dbf',
    '/home/oradata/powerdes/sysaux01.dbf',
      2    3    4    5    6    7    8    9   10  '/home/oradata/powerdes/undotbs01.dbf',
    '/home/oradata/powerdes/users01.dbf',
    '/home/oradata/powerdes/powerdesk01.dbf',
    '/home/oradata/powerdes/plas01.dbf',
    '/home/oradata/powerdes/pl01.dbf',
    '/home/oradata/powerdes/help01.dbf',
    '/home/oradata/powerd 11   12   13   14   15   16  es/adobelc01.dbf',
    '/home/oradata/powerdes/sms01.dbf'
    LOGFILE
    GROUP 1 ('/home/oradata/powerdes/redo03.log')  SIZE 10M,
    GROUP 2 ('/home/oradata/powerdes/redo02.log')  SIZE 10M,
    GROUP 3 ('/home/oradata/powerdes/redo01.log')  SIZE 10M,
    GROUP 4 ('/home/or 17   18   19   20   21   22  adata/powerdes/redo_dg_01.log')  SIZE 10M,
    GROUP 5 ('/home/oradata/powerdes/redo_dg_02.log')  SIZE 10M,
    GROUP 6 ('/home/oradata/powerdes/redo_dg_03.log')  SIZE 10M
    CHARACTER SET ZHS16GBK
    NORESETLOGS;
     23   24   25   26  NORESETLOGS
    *
    ERROR at line 26:
    ORA-01968: Only specify RESETLOGS or NORESETLOGS once
    SQL> 
      

  7.   


    嗯,noresetlogs或者resetlogs,如果你日志文件
    没有问题,那么就用noresetlogs,这时候是完全恢复;那我先用no restlogs吧。再用resetlogs试试吧。
    如果是noresetlogs,
    后面执行recover dtabase;
    alter database open;
    如果是Resetlogs,
    后面执行recover database using backup controlfile until cancel,
    如果在线日志没有随坏,直接写入指定的在线日志,或者直接利用
    归档,但是最后一个归档是不存在的,输入cancel取消回复,
    然后强制打开数据库alter databaes open resetlogs;
    备份集里面没有控制文件的,恢复不到控制文件。
    RMAN> restore controlfile to '/oracle/data_ora/stuorcl/control01.ctl' from '/oracle/app/oracle/flash_recovery_area/POWERDES/backupset/2015-01-23/arch_POWERDES_20150123_3050.bak';Starting restore at 04-FEB-15
    using channel ORA_DISK_1channel ORA_DISK_1: restoring control file
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of restore command at 02/04/2015 15:20:13
    ORA-19870: error while restoring backup piece /oracle/app/oracle/flash_recovery_area/POWERDES/backupset/2015-01-23/arch_POWERDES_20150123_3050.bak
    ORA-19626: backup set type is archived log - can not be processed by this conversationRMAN> 
      

  8.   

    SQL> CREATE CONTROLFILE REUSE set DATABASE "powerdes" RESETLOGS ARCHIVELOG
       MAXLOGFILES 16
       MAXLOGMEMBERS 3
       MAXDATAFILES 100
       MAXINSTANCES 8
       MAXLOGHISTORY 454
    DATAFILE
    '/home/oradata/powerdes/system01.dbf',
    '/home/oradata/powerdes/sysaux01.dbf',
      2    3    4    5    6    7    8    9   10  '/home/oradata/powerdes/undotbs01.dbf',
    '/home/oradata/powerdes/users01.dbf',
    '/home/oradata/powerdes/powerdesk01.dbf',
    '/home/oradata/powerdes/plas01.dbf',
    '/home/oradata/powerdes/pl01.dbf',
    '/home/oradata/powerdes/help01.dbf',
    '/home/oradata/powerd 11   12   13   14   15   16  es/adobelc01.dbf',
    '/home/oradata/powerdes/sms01.dbf'
    LOGFILE
    GROUP 1 ('/home/oradata/powerdes/redo03.log')  SIZE 10M,
    GROUP 2 ('/home/oradata/powerdes/redo02.log')  SIZE 10M,
    GROUP 3 ('/home/oradata/powerdes/redo01.log')  SIZE 10M,
    GROUP 4 ('/home/or 17   18   19   20   21   22  adata/powerdes/redo_dg_01.log')  SIZE 10M,
    GROUP 5 ('/home/oradata/powerdes/redo_dg_02.log')  SIZE 10M,
    GROUP 6 ('/home/oradata/powerdes/redo_dg_03.log')  SIZE 10M
    CHARACTER SET ZHS16GBK
    NORESETLOGS;
     23   24   25   26  NORESETLOGS
    *
    ERROR at line 26:
    ORA-01968: Only specify RESETLOGS or NORESETLOGS once
    SQL> 
    句子写错了,第一样写的是resetlogs,最后一行noresetlogs多的可以去掉
      

  9.   

    我刚才说的重建控制文件。
    你不是说了自动备份的控制文件丢失了吗?/data/oracle/backup/data/ctl_auto/%F'这个目录丢掉了?
    如果控制文件丢了和控制文件备份丢了,那肯定不能使用你的备份进行恢复了。 
    你试了restore spfile from autobackup;不行嘛?
    你试试这样行吗?restore controlfile from 'E:\oracle1\product\11.2.0\dbhome_1\database\SNCFQIN.ORA‘;
    你找一下这个文件SNCFQIN.ORA ,那个qin换成你自己的oraclesid
      

  10.   

    我刚才说的重建控制文件。
    你不是说了自动备份的控制文件丢失了吗?/data/oracle/backup/data/ctl_auto/%F'这个目录丢掉了?
    如果控制文件丢了和控制文件备份丢了,那肯定不能使用你的备份进行恢复了。 
    你试了restore spfile from autobackup;不行嘛?
    你试试这样行吗?restore controlfile from 'E:\oracle1\product\11.2.0\dbhome_1\database\SNCFQIN.ORA‘;
    你找一下这个文件SNCFQIN.ORA ,那个qin换成你自己的oraclesid
    你不是说了自动备份的控制文件丢失了吗?
    :是的 /data/oracle/backup/data/ctl_auto/%F'这个目录丢掉了?
    :是的 
    如果控制文件丢了和控制文件备份丢了,那肯定不能使用你的备份进行恢复了。 
    你试了restore spfile from autobackup;不行嘛?
    :我的rman备份是从生产库上复制下来的,现在要恢复的是测试库,没有autobackup;你试试这样行吗?restore controlfile from 'E:\oracle1\product\11.2.0\dbhome_1\database\SNCFQIN.ORA‘;
    :不行啊,这样恢复了没有用啊,因为这样恢复的是测试机器的控制文件,不是生产库rman备份时候的那个控制文件你找一下这个文件SNCFQIN.ORA ,那个qin换成你自己的oraclesid
    :测试环境和生产环境的sid已经保持一致了。
      

  11.   

    restore controlfile from 'E:\oracle1\product\11.2.0\dbhome_1\database\SNCFQIN.ORA‘;
    如果这个没丢怎么不可以,我看了你的conrolfile autobackup on自动备份是启动的,oracle
    每次备份或者重要操作时候都会自动备份控制文件,这个文件就是oracle隐藏的备份。如果
    你没有修改位置,就默认这个位置。
      

  12.   


    conrolfile autobackup on自动备份所在的磁盘文件坏了,所以找不回当时rman备份的控制文件了。
      

  13.   


    conrolfile autobackup on自动备份所在的磁盘文件坏了,所以找不回当时rman备份的控制文件了。
    那就重建,然后用归档日志或者日志文件,尝试下能不能恢复。