zoukankan      html  css  js  c++  java
  • 手工备份恢复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号

      开机的步骤

      开机的所需文件

      

  • 相关阅读:
    运算符重载
    责任链模式
    MFC一些常见面试问题
    浅拷贝&深拷贝
    下雨的效果
    本地时间使用与倒计时
    钟表效果
    一种水纹波浪效果
    一个相册效果
    在Flash中管理鼠标右键
  • 原文地址:https://www.cnblogs.com/fanxuanhui-linux/p/7113476.html
Copyright © 2011-2022 走看看