ORACLE数据库数据的备份与恢复

ORACLE数据库数据的备份与恢复数据备份恢复在数据库管理中至关重要,今天,总结一下数据库备份与恢复的方案,需要注意的方面和实际操作!、

大家好,又见面了,我是你们的朋友全栈君。

 

原创作品,转自请在文字开头显眼位置注明出处:https://www.cnblogs.com/sunshine5683/p/10052949.html

数据备份恢复在数据库管理中至关重要,今天,总结一下数据库备份与恢复需要注意的方面和实际操作!、

一、在备份之前首先应该执行commit语句,将所有未提交的数据进行提交,(提交了的数据也有可能在内存),执行alter system checkpoint语句,所有的脏数据(内存中所有修改过的数据,这些数据有可能被提交,也有可能未被提交)都会被写入到了磁盘上,但是如果被写入磁盘的数据块处于未提交状态,那么另外一个会话登入后是不可见的!

commit:标志了事务的提交,数据的生效,其他用户或者会话才是可见的,不管该数据是在磁盘上还是在内存中。

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

commit后首先将redo保存到磁盘,首先保存redo而不保存数据的原因是redo的保存比修改数据的保存快很大,保证了数据提交的速度,而且一旦redo被保存,那么即使数据没有被保存,也可以通过redo将该数据恢复,所以,redo的保存保证了数据的安全。

redo保证了数据的安全,此时再执行checkpoint,并不是多此一举,将内存数据写入磁盘,一是保证内存的利用率,不至于内存脏数据太大,二是对于数据恢复有很大的作用

 

二、实例恢复发生在oracle启动的第三个阶段

第一阶段:startup nomount(读取spfile),没有进行实例恢复

第二阶段:alter database mount(读取控制文件),没有进行实例恢复

第三阶段:alter database open(检查控制文件,数据文件头,检查数据完整性),进行实例恢复

下面将数据库强制关闭,shutdown abort(强制关闭,这样关闭快速,但是一些内存数据不会被保存到数据库磁盘,在数据库下次启动的时候就会进行实例恢复,在实际环境中不建议这样关闭),然后分阶段启动数据库:

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

数据库实例恢复的大概原理:Oracle在打开数据库时(alter database open),会检查每个文件头上的信息(SCN),并同控制文件中相应的信息(SCN)比较,如果不一致,则进行实例恢复。

 

实例恢复的过程 :

首先:前滚 rolling forward ,读取状态为current和active状态的日志(redo log),将发生crash时,没有来得及写到磁盘上的数据块,使用redo的信息来恢复。

其次:打开数据库(alter database open)

最后:回滚 rolling back: 将没有提交的事务进行回滚。

 

三:介质恢复

当发生以下情况时,实例恢复无效,需要进行介质恢复:

1、数据文件丢失,损坏

2、在线日志文件(online redo)丢失,损坏

3、数据文件太旧 (比如从一个备份集中恢复过来的文件)

4、文件太新(比如,其它所有的文件都是从备份中恢复过来的)

如下图:将数据文件11号文件offline之后,进行11号文件恢复,显示出错,这种错误就是数据文件太旧无法恢复

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

 

 四、数据库的备份方式

1、Rman(物理备份):针对 数据库,表空间,数据文件,数据块,这种方案备份的速度很慢。通常在备份数据时候不建议备份在线日志文件,其他文件都可以备份

2、exp,expdp(逻辑备份):针对 用户,数据库对象(表,分区…),这种备份方案对数据的完整性保证不是很好

3、只读表空间+传递表空间,这种备份方案要求将某些表空间置为只读形式,类似与数据仓库,不能再改变

4、Data guard,这种备份方案比较常用

 

五、数据库备份操作

1、Rman备份:首先建议将数据运行在归档模式下

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

其次,以rman模式登录数据库,如果全库备份,直接使用下面命令备份就好

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

 

如果备份个别表空间,则首先我们看看有哪些表空间

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

随便选择一个表空间,我们就选择users表空间进行备份,可以看到速度很快

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

接下来恢复该表空间,过程都是很快的

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

2、export

备份:export  用户名/密码 file=用户名.dmp  导出该用户下的所有表

恢复: import  用户名/密码 file=用户名.dmp full=y(表示全部导入)

            import  用户名/密码 file=用户名.dmp tables=tt(表示导入tt表)

对于此种方式,暂时先不做演示了,其方式也是很简单的,由于此次总结是针对真正问题的解决需要而测试的,此次并不涉及export备份,所以将在后续总结中继续完善与演示此部分的操作,用到的时候将会继续在本篇博客中添加此部分内容。

 

 六、Oracle数据库的闪回技术–flashback

当我们在进行数据表的修改或者删除后,并且对数据表进行了提交,那么一般情况下数据库的表示很难再回复的,但是当有了闪回技术之后,同样的问题便变得可以实现了,不得不说数据库的闪回技术是非常重要的一种操作,给了很多dba感觉人生是多么美好的瞬间!下面就数据库的闪回技术进行测试实验

1、查看数据库的闪回功能是否打开,一般情况下是没有打开的,因为会消耗多余的磁盘占用和内存资源等,下图可以看到,本人数据库的闪回功能并没有打开

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

2、打开flashback_on,首先将数据库关闭,然后打开到mount阶段,开启flashback

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

3、此时查看该视图是否打开,可以看到已经打开

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

4、此时,如果误将数据表t1删除,可以在回收站找到并还原(表的闪回)

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

 

并使用flashback table t1 to before drop;语句将其还原,但是如果删除时候使用drop table t1 purge,删除的同时情况回收站,那么就不能够再使用闪回命令将其还原了,就真正删除了。

同样还有ddl语句等的闪回操作,都是可以执行的,这里就不做介绍了,总之,对于从事数据库工作的同仁们,一定得小心行事,数据一旦丢失,会造成不可预知的后果,所以,在不断提升自己的同时,操作上的细致也是至关重要的,希望我们在工作学习的路上越走越远,越走越好!

 

<span role="heading" aria-level="2">ORACLE数据库数据的备份与恢复

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/154660.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月1日 下午2:36
下一篇 2022年7月1日 下午2:36


相关推荐

  • 简单分析RLP编码原理

    简单分析RLP编码原理RLP 编码是以太坊数据序列化的主要方法 本文介绍 RLP 编码的主要规则和原理分析 RLP 编码具有较好的数据处理效率 尤其是将长度和类型统一作为前缀 实际上 RLP 是基于 ASCII 编码的一种结构化扩充 既能表示长度还能表示类型 是一种非常紧凑的结构化编码方案 RLP RecursiveLen 递归长度前缀 是一种编码算法 用于编码任意的嵌套结构的二进制数据 它是以太坊中数据

    2026年3月17日
    2
  • 集群分为几种,用的软件分别是什么?[通俗易懂]

    集群分为几种,用的软件分别是什么?[通俗易懂]集群分为几种,用的软件分别是什么?补充:涉及的组件1.1、apache跨平台的网页服务器,主要使用它做静态资源服务器,也可以做代理服务器转发请求1.2、ngnix高性能的HTTP和反向代理服务器,ngnix处理能力相当于apache的10倍。1.3、lvsLinux虚拟服务器,可以实现LINUX平台下的简单负载均衡1.4、HAProxy提供高可用性、负载均衡以及基于TCP和HT…

    2022年10月10日
    4
  • 服务器硬件组成及分级

    服务器硬件组成及分级一 服务器概述服务器 server 指的是网络环境下为客户机 client 提供某种服务的专用计算机 服务器装有网络操作系统和各种服务器应用系统软件 服务器的处理速度和系统可靠性比普通 PC 要高得多 二 服务器的种类按照不同的分类标准 服务器分为许多种 主要有按网络规模 按架构 芯片 按用途 按机箱结构 1 按网络规模划分工作组级服务器 用于联网计算机在几十台左右或者对处理速度和系统可靠

    2026年3月26日
    1
  • 什么是http服务器

    什么是http服务器本篇文章旨在从服务器后台开发的角度剖析一个简单的 http 服务器的运行原理 我们知道浏览器是 http s 的客户端 目的是连接远程的 http 服务器 然后服务器返回浏览器数据 浏览器接收数据解析数据之后展现出来 我们看到的外在表现就是 浏览器访问一个 url 然后就得到相应的 web 页面 同样我们知道 浏览器与 http 服务器是通过 http 协议 传输层是 tcp 协议 因为他是有连接 可靠的协议 关于 h

    2026年3月20日
    2
  • client的中文意思是什么_java中cin什么意思

    client的中文意思是什么_java中cin什么意思IE中: document.body.clientWidth==>BODY对象宽度 document.body.clientHeight==>BODY对象高度 document.documentElement.clientWidth==>可见区域宽度 document.documentElement.clientHeight==>可见区域高度 FireFox中:

    2025年10月24日
    6
  • docker的常用命令汇总_常用docker命令

    docker的常用命令汇总_常用docker命令文章目录Docker命令总结Docker命令总结还在百度Docker命令?推荐一套我用起来特顺手的命令!简介:Docker是一个开源的应用容器引擎,让开发者可以打包应用及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上。使用Docker可以更方便地打包、测试以及部署应用程序。Docker镜像官网阿里云镜像中心Docker环境安装:#安装yum-utilsyuminstall-yyum-utilsdevice-mapper-persistent-dat

    2026年1月17日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号