手工备份恢复oracle数据库

Posted 750657961

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手工备份恢复oracle数据库相关的知识,希望对你有一定的参考价值。

 手工备份恢复oracle数据库:

   虽然已经有了rman工具

  但是手工恢复oracle能够让你对oracle数据库有更加深入的了解

 

 

数据库一致性开机条件:
  数据文件 scn,控制文件 scn,redo scn一致


控制文件记录:
  数据文件应该到达的scn
  当前redo
  数据的物理结构信息
  归档信息

  

前提条件:

  归档日志开启

  数据文件有备份

  控制文件有备份

备份数据:

  数据文件备份:

    数据文件进入备份模式:

    select \'alter tablespace \'|| tablespace_name||\' begin backup;\' from dba_tablespaces where tablespace_name not like \'%TEMP%\';

     

    确认进入备份状态:

    

    再操作系统执行物理拷贝命令:

     cp *.dbf /home/oracle/sg_backup_dbf/

    拷贝完成,退出备份模式:

    

    数据文件备份完成!!!

    备份完成切换几次归档(多切换几次)

    alter system switch logfile;

  控制文件备份:

    备份成二进制的形式:

      SQL>alter database backup controlfile to \'/home/oracle/backup_ctl/PROD4_CTL_20170703\'; 

    备份成逻辑文件:

      SQL> alter database backup controlfile to trace as \'/home/oracle/backup_ctl/prod4.ctl\';

 

     

 

一、表空间数据文件删除恢复:

 

重启数据报错:

  

 

根据提示查看数据文件已经不存在(被删除)

 

通过拷贝先前备份数据文件进行恢复:

  cp /home/oracle/sg_backup_dbf/* .

 

查看scn号:(不一致状态)  

  

 

通过执行recover database进行数据恢复()

  

 

 启动数据库:

  SQL> alter database open;

#恢复完成!

 

二、控制文件被删除:

 

重启数据库:

  

 

通过老版本数据文件恢复:

   cp /home/oracle/backup_ctl/PROD4_CTL_20170703 ./control01.ctl

  cp /home/oracle/backup_ctl/PROD4_CTL_20170703 ./control02.ctl

 

 再次重启:

  

 

执行恢复:

  SQL> recover database using backup controlfile until cancel;

     #auto 模式

    报错:

      (旧的控制文件并不知道redo的情况)  

      

再次执行恢复:

  SQL> recover database using backup controlfile until cancel;

    #Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

    #/u01/app/oracle/oradata/PROD4/PROD4/redo01.log      #使用指定的redo文件恢复(手动输入这行)

开机:

  SQL> altr database open resetlogs;

恢复完成!

 

控制文件损坏进行恢复后需要进行一次全备

  使用altr database open resetlogs; 开机时,重新初始化了redolog,

  archive log,以前的数据文件的备份全部失效

删除无用archive log

 

 

三、当前redo损坏

重启数据库无法开机

恢复:

   删除数据文件

   使用旧备份恢复数据文件

    恢复和前面提到的类似:

    恢复命令:

      recover database using backup controlfile until cancel;

        #auto
     recover database using backup controlfile until cancel;
        #cancel

 

   删除控制文件

   关闭数据库

   使用备份的逻辑控制文件恢复控制文件(找出类似如下部分,直接执行)

  (恢复控制文件时需要数据文件,但是使用现在的数据文件是不行的,这就是前面先删除数据文件再恢复的原因)

      

 

 执行开机:

  alter database open resetlogs;

全备
删除无用archive log 

 

 

总结:

  一致性开机的原理

    scn号

  开机的步骤

  开机的所需文件

  

 

以上是关于手工备份恢复oracle数据库的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 手工不完全恢复总结

Oracle11g备份与恢复

oracle数据库热备中的备份和恢复及例子

「oracle备份恢复」oracle数据库备份恢复之逻辑备份与恢复

oracle有多个整个数据库备份集 如何选择恢复的备份集

oracle如何备份单表并在新数据库恢复?