博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
手工备份恢复oracle数据库
阅读量:4319 次
发布时间:2019-06-06

本文共 2142 字,大约阅读时间需要 7 分钟。

 手工备份恢复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号

  开机的步骤

  开机的所需文件

  

 

转载于:https://www.cnblogs.com/fanxuanhui-linux/p/7113476.html

你可能感兴趣的文章
java 多线程的应用场景
查看>>
dell support
查看>>
转:Maven项目编译后classes文件中没有dao的xml文件以及没有resources中的配置文件的问题解决...
查看>>
MTK android 设置里 "关于手机" 信息参数修改
查看>>
单变量微积分笔记6——线性近似和二阶近似
查看>>
补几天前的读书笔记
查看>>
HDU 1829/POJ 2492 A Bug's Life
查看>>
CKplayer:视频推荐和分享插件设置
查看>>
CentOS系统将UTC时间修改为CST时间
查看>>
redis常见面试题
查看>>
导航控制器的出栈
查看>>
玩转CSS3,嗨翻WEB前端,CSS3伪类元素详解/深入浅出[原创][5+3时代]
查看>>
iOS 9音频应用播放音频之播放控制暂停停止前进后退的设置
查看>>
Delphi消息小记
查看>>
HNOI2016
查看>>
JVM介绍
查看>>
将PHP数组输出为HTML表格
查看>>
Java中的线程Thread方法之---suspend()和resume() 分类: ...
查看>>
经典排序算法回顾:选择排序,快速排序
查看>>
BZOJ2213 [Poi2011]Difference 【乱搞】
查看>>