luoson1 发表于 2018-9-13 06:53:08

oracle11g日志文件恢复

  这次实验模拟一下,oracle 11g在非归档模式下,且没有备份的条件,进行的日志文件的恢复
  这里所有的redo日志都被我删除了,下面是报错和数据库模式:
SQL> startup  
ORACLE instance started.
  
Total System Global Area845348864 bytes
  
Fixed>  
Variable>  
Database Buffers          192937984 bytes
  
Redo Buffers                5144576 bytes
  
Database mounted.
  
ORA-00313: open failed for members of log group 1 of thread 1
  
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/myorcl/redo1.log'
  
ORA-27037: unable to obtain file status
  
Linux Error: 2: No such file or directory
  
Additional information: 3
  
ORA-00312: online log 1 thread 1: '/u01/app/oracle/oradata/myorcl/redo01.log'
  
ORA-27037: unable to obtain file status
  
Linux Error: 2: No such file or directory
  
Additional information: 3
  
SQL> select log_mode,open_mode from v$database;
  
LOG_MODE   OPEN_MODE
  
------------ --------------------
  
NOARCHIVELOG MOUNTED
  首先,我们要用resetlogs的方法尝试打开数据库:
SQL>>
alter database open resetlogs
  
*
  
ERROR at line 1:
  
ORA-01139: RESETLOGS option only valid after an incomplete database recovery
  提示resetlogs这个选项只有在一个不完全数据库恢复后才可以使用,既然这样,我们就给它做一个数据库恢复:
SQL> recover database using backup controlfile;  
ORA-00279: change 1736992 generated at 01/18/2014 18:01:56 needed for thread 1
  
ORA-00289: suggestion :
  
/u01/app/oracle/product/11.2.0/db_1/ora_log/1_1_837194464.dbf
  
ORA-00280: change 1736992 for thread 1 is in sequence #1
  
Specify log: {=suggested | filename | AUTO | CANCEL}
  
ORA-00308: cannot open archived log
  
'/u01/app/oracle/product/11.2.0/db_1/ora_log/1_1_837194464.dbf'
  
ORA-27037: unable to obtain file status
  
Linux Error: 2: No such file or directory
  
Additional information: 3
  下面,我们再来resetlogs启动数据库:
SQL>>
alter database open resetlogs
  
*
  
ERROR at line 1:
  
ORA-01113: file 1 needs media recovery
  
ORA-01110: data file 1: '/u01/app/oracle/oradata/myorcl/system01.dbf'
  提示要进行介质恢复,因为我们根本没有redo日志,根本没有办法恢复,只能通过添加隐藏参数,让数据库忽略数据一致性验证:
SQL>>
System>  
SQL> startup force mount;
  
ORACLE instance started.
  
Total System Global Area845348864 bytes

  
Fixed>
  
Variable>  
Database Buffers          192937984 bytes
  
Redo Buffers                5144576 bytes
  
Database mounted.
  到这里,再来添加resetlogs选项,来打开数据库:
SQL>>
Database>  数据库打开了,但是还没有结束,我们要将修改的隐藏参数修改到默认值,并重新启动数据库:
SQL>>
System>  
SQL> startup force;
  
ORACLE instance started.
  
Total System Global Area845348864 bytes

  
Fixed>
  
Variable>  
Database Buffers          192937984 bytes
  
Redo Buffers                5144576 bytes
  
Database mounted.
  
Database opened.
  
SQL> select KSPPINM,KSPPSTVL from x$ksppi a,x$ksppcv b where a.indx=b.indx and ksppinm like '%resetlogs%';
  
KSPPINM
  
--------------------------------------------------------------------------------
  
KSPPSTVL
  
--------------------------------------------------------------------------------
  
_no_recovery_through_resetlogs
  
FALSE
  
_allow_resetlogs_corruption
  
FALSE
  这里可以看到这个隐藏参数已经变成false了。这就完成了日志文件的恢复。


页: [1]
查看完整版本: oracle11g日志文件恢复