手工备份恢复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数据库的更多相关文章

  1. Navicat备份远程Oracle数据库到本地

    公司的数据库是本地的,我只能在公司连,回家就不能跑项目了,一跑就报SQLException,所以希望可以把数据库复制到我的本地来. 因为一直在用Navicat操作数据库,这里就分享一下用Navicat ...

  2. [转]PLSQL Developer备份恢复oracle数据

    本文转自:http://www.cnblogs.com/iampkm/archive/2013/06/09/3128273.html 使用PL sql提供的功能可以快速的备份恢复oracle数据. 1 ...

  3. PLSQL Developer备份恢复oracle数据

    使用PL sql提供的功能可以快速的备份恢复oracle数据. 1  导出存储过程,触发器,序列等所有用户对象.(备份) 在PL/SQL Developer的菜单Tools(工具) => Exp ...

  4. PL/SQL远程备份和恢复Oracle数据库

    (转自:http://blog.csdn.net/huchunfu/article/details/25165901) 在客户端远程备份的文件保存在数据库所在主机上,不会直接拷贝到客户端.—————— ...

  5. 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库

    数据库名.实例名.数据库域名.全局数据库名.服务名 , 这是几个令很多初学者容易混淆的概念.相信很多初学者都与我一样被标题上这些个概念搞得一头雾水.我们现在就来把它们弄个明白. 一.数据库名 什么是数 ...

  6. 恢复oracle数据库误删除数据的方法汇总

    学习数据库时,我们只是以学习的态度,考虑如何使用数据库命令语句,并未想过工作中,如果误操作一下,都可能导致无可挽回的损失.当我在工作中真正遇到这些问题时,我开始寻找答案.今天主要以oracle数据库为 ...

  7. 如何将备份的oracle数据库还原到指定用户下。

    上一文章 oracle11g数据库--创建表空间,创建用户,用户授权并指定表空间.我们已经建好了指定的新用户pdmis. 接下来我们需要将备份好的数据库,还原至新用户pdmis下. 想要还原,我们需要 ...

  8. 系统重装后恢复Oracle数据库

    这周装系统的固态盘坏了,固态硬盘用到坏也是第一次碰到....只能新买个硬盘重装系统了.到了Oracle数据库恢复那一步了,其实很简单.只要没把数据库安装路径放在系统盘就行.*^____^* 先找到重装 ...

  9. CentOS 上面 恢复 Oracle 数据库实例的简单操作流程

    1. 当获取了数据库的备份可以进行 oracle数据库的备份恢复操作 linux上面要复杂一些. 这里面简单描述一下. 2. 远程连接 linux 主要工具可以选择 xshell 如图示: 3. 建议 ...

随机推荐

  1. USACO Sabotage, 2014 Mar 破坏阴谋(二分+贪心)

    一开始看完这题就有个想法: 只要把大于整个序列平均数的最大连续序列就是最优? 那把整个序列都减掉平均数 在做最大连续字序列和且记录长度? 仔细思考一下并不太对: 当子序列最大但长度较大 也许也比不上删 ...

  2. 「JavaSE 重新出发」05.02 泛型数组列表、包装类

    泛型数组列表 ArrayList 是一个采用类型参数(type parameter)的泛型类(generic class). java ArrayList<Employee> staff ...

  3. flex-2

    1. 2. justify:整理版面 3. 4.归纳 justify-content:flex-start(默认).center.flex-end 下面还会提到剩下的两种项目在主轴上对齐方式: spa ...

  4. Pyhton学习——Day50

    #HTTP协议# 又是转载:http://www.cnblogs.com/yuanchenqi/articles/6000358.html# 一 HTTP概述# HTTP(hypertext tran ...

  5. JQ UI dialog

    初始化参数 对于 dialog 来说,首先需要进行初始化,在调用 dialog 函数的时候,如果没有传递参数,或者传递了一个对象,那么就表示在初始化一个对话框. 没有参数,表示按照默认的设置初始化对话 ...

  6. js 获取对象长度

    获取对象的程度,可以这样获取: var myObj = {a:1,b:2,c:3} var arr = Object.keys(myObj);var len = arr.length  console ...

  7. 中国剩余定理(excrt) 模板

    excrt板子题 #include <cmath> #include <cstdio> #include <cstring> #include <algori ...

  8. vue项目中,如何对static文件夹下的静态文件添加时间戳,以达到清除缓存

    例如config.js文件是存放在static文件夹下,里面存放的是websocket信息,需要经常改动.改动了以后由于缓存信息,使其不生效,因此需要对引入的文件添加时间戳. 最新方法: 注意转义符的 ...

  9. 洛谷P5269 欧稳欧再次学车

    正常模拟就好~ 首先初始化:转速=l, 档位=1 然后读入数据 由于先要处理换挡操作,所以我们先按照x处理,再按照y处理 当x=0时,档位+1,转速=l 当x=1时,档位-1,转速=r 当y=1时,转 ...

  10. Cygwin(类UNIX模拟环境)&CURL(强大的http命令行工具)

    前言: 需要我用curl试下能否发送post请求调起公司的仿真系统(目前) 跟着大佬的脚步,亲测一把~ 感谢大佬的提供的博客和指导 @咩神 个人博客园及来源地址 Cygwin(类UNIX模拟环境) 一 ...