Oracle 11gR2数据库文件丢失后的恢复测试(2)


4.2.2 没有备份的控制文件,则需要重建控制文件。
在删除控制文件之前,获取控制文件的创建语句:
1)alter database backup controlfile to trace as '/home/oracle/crontol_trace.trc';
2)从/home/oracle/crontol_trace.trc文件中获得如下语句:
CREATE CONTROLFILE REUSE DATABASE "ORCL" RESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/u01/app/oracle/oradata/orcl/redo01.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 '/u01/app/oracle/oradata/orcl/redo02.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 '/u01/app/oracle/oradata/orcl/redo03.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 4 '/u01/app/oracle/oradata/orcl/redo_04.log'  SIZE 50M BLOCKSIZE 512
DATAFILE
  '/u01/app/oracle/oradata/orcl/system01.dbf',
  '/u01/app/oracle/oradata/orcl/sysaux01.dbf',
  '/u01/app/oracle/oradata/orcl/undotbs01.dbf',
  '/u01/app/oracle/oradata/orcl/users01.dbf',
  '/u01/app/oracle/oradata/orcl/test_01.dbf',
  '/u01/app/oracle/oradata/orcl/test_02.dbf'
CHARACTER SET ZHS16GBK;
如果没有使用1)中的语句获取创建语句,也可以根据实际情况重建控制文件。
删除所有的控制文件,并且模拟数据库崩溃。
恢复的过程如下:
1)startup nomount;
2)执行创建控制文件的语句,直接复制语句或放在脚本里均可。
3)之后执行:
SQL>alter system set "_allow_resetlogs_corruption"=true scope=spfile;
SQL>shutdown abort;
  SQL>startup mount;
  SQL> recover database using backup controlfile until cancel;
    #输入AUTO,应用归档日志后,再输入一遍recover database .......,输入online redo的路径+名称
  SQL> alter database open resetlogs;#数据不会丢失
    重建临时表空间
    ALTER TABLESPACE TEMP ADD TEMPFILE '/u01/app/oracle/oradata/orcl/temp01.dbf' SIZE 1G;


五、在只有一份备份的情况下,其余文件均丢失后,打开数据库
在数据库崩溃之后:
1)启动数据库至nomount,开启RMAN并设置dbid
SQL>startup nomount;
RMAN>set dbid 1443678834
2)还原控制文件
RMAN>restore controlfile from '/backup/c-1443678834-20160723-00';
SQL>alter database mount;
3)还原数据文件
  RMAN>restore database;
4)执行不完全恢复:
    SQL>alter system set "_allow_resetlogs_corruption"=true scope=spfile;
    SQL>shutdown abort;
    SQL>startup mount;
    SQL> recover database using backup controlfile until cancel;
  因为日志文件、归档日志文件都已经被删除,所以选择cancel不执行恢复。
    SQL> alter database open resetlogs;
  之后检查各文件是否正常。
 
 
六、总结
从模拟在线日志文件、控制文件丢失的过程中可以发现,当这些文件有副本时,可以很快地打开数据库,从而降低恢复数据库的难度。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/10bf06e9d7a1be48256003adba4b8885.html