1.2 备份与恢复基础

摘要:
由于这种备份和恢复方法需要目标数据库的服务器进程的帮助,因此也称为服务器管理的备份和恢复。在数据库的正常运行期间,媒体故障远小于用户错误或应用程序错误。但是,备份和恢复策略应针对介质故障做好准备。在计划备份和恢复计划时,请记住做好准备。

备份(backup)实际就是数据的副本,备份的目的是为了防止不可预料的数据丢失和应用错误。

转储(restore)是指当数据文件或控制文件出现损坏时,将已备份的副本文件还原到原数据库的过程。

恢复(recover)是指应用归档日志和重做日志事务更新副本文件到数据文件失败前的状态。

1.2.1 备份与恢复方法 

1,用户管理的备份与恢复

用户管理的备份与恢复是指使用SQL 语句命令结合OS命令备份和恢复DB的方法(也被称为OS 备份与恢复)。

DB 文件 ────copy或cp────→ 备份文件

用户管理的备份是指执行OS (Copy)命令备份数据库物理文件的方法。

用户管理的恢复是指当DB出现介质失败时,将备份文件转储到DB,然后执行SQL 命令(recover tablespace)恢复DB的方法。

Users表空间备份文件────copy或cp────→转储后的Users表空间 ─────recover───→恢复后的Users 表空间

 

2,RMAN 管理的备份与恢复

RMAN(Recovery Manager,恢复管理器)管理的备份与恢复是指使用RMAN 命令备份和恢复DB的方法。因为这种备份与恢复方法需要借助目标DB的服务器进程,所以也被称为服务器管理的备份与恢复。

RMAN 备份是指执行RMAN 备份命令备份DB 物理文件的方法。

01.DBF  02.DBF 03.DBF  04.DBF  ─────backup命令────→Demo_1.BAK

RMAN 恢复是指当DB 出现介质失败时,使用RMAN 命令转储并恢复DB 的方法。

Users 表空间最新备份文件─────restore────→转储后的Users 表空间 ─────recover────→恢复后的Users 表空间

3,逻辑备份与恢复

逻辑备份是指利用Oracle 工具程序EXPDP 或EXP 将DB 部分或全部的结构及其数据导出,并存储到OS 文件中的过程,该过程也称为导出(DB 必须处于OPEN 状态)。

DEPT EMP ─────EXPORT────→OS 文件

逻辑恢复是指当DB 对象被意外删除或截断之后,使用Oracle 工具程序IMPDP 或 IMP 将逻辑备份文件中的对象结构及其数据导入到DB 中的过程,该过程也称为导入。

DEPT EMP ←────IMPORT─────OS 文件

从Oracle Database 10g 开始,提供了数据泵导出导入工具EXPDP 和 IMPDP。EXPDP 和IMPDP 的速度要优于EXP 和IMP。

  • EXP 和 IMP 是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
  • EXPDP 和 IMPDP 是服务端的工具程序,它们只能在Oracle 服务器端使用,不能在Oracle 客户端使用。
  • IMP 只能使用 EXP 导出文件,而不能使用 EXPDP 导出文件;IMPDP 只能使用 EXPDP 导出文件,而不能使用 EXP 导出文件。

1.2.2 制定恢复策略

作为DBA,最重要的管理职责就是备份和恢复。

当制定恢复策略时,DBA 应该考虑用户错误、介质失败以及数据块损坏的处理方法。

1,制定用户错误的恢复策略

当制定备份和恢复策略时,应该考虑如何处理用户或应用的不可预见错误操作,例如删除表、误载断表、批量更新数据的错误操作等。

处理用户错误有以下方法:

  • 如果已经使用逻辑备份导出了误操作表的数据,那么某些情况下可以导入数据到误操作表。该技术的前提是规律性地导出了表的数据,并且在导出之间的数据变化不是特别重要。
  • 你可以执行基于时间点的不完全恢复,将表空间或者DB 恢复到失败点的状态,这种方法可以避免表的数据丢失。当使用基于时间点的不完全恢复时,要求在失败点之前必须存在备份,并且在备份点与失败点之点的所有归档日志和重做日志必须全部存在。
  • 使用FLASHBACK 快速恢复表数据。当使用FLASHBACK TABLE 恢复被删除的表时,要确定在数据库回收站中仍然存在被删除表;当使用FLASHBACK TABLE 恢复DML 误操作所影响的表数据时,必须确保激活了表的ROW MOVEMENT特征。

2,制定介质失败的恢复策略

在数据库运行期间,当其他外因阻止Oracle 读写DB 文件时,会发生介质失败。

典型的介质失败包括物理失败(例如磁头损坏)、覆盖或者破坏了DB 文件。

在DB 正常运行期间,介质失败要远远少于用户错误或者应用错误,但备份和恢复策略应该为介质失败做好准备。介质失败类型确定了需要使用的恢复技术,例如恢复DB 文件的策略不同于恢复控制文件的策略,SYSTEM 表空间的恢复策略不同于数据表空间的恢复策略。

3,制定数据块损坏的恢复策略

如果一个或多个数据文件只有少量数据块损坏,那么可以执行数据块介质恢复,而避免执行完全数据文件恢复。使用PL/SQL 系统包 DBMS_REPAIR 可以处理损坏数据坏,别外RMAN 的BLOCKRECOVER 命令可以用于恢复损坏数据块。

1.2.3 制定备份策略

数据恢复策略是数据备份策略的基础。当制定备份策略时,除了要为各种恢复策略提供必要的备份类型之外,DBA 还需要考虑到业务、操作、技术、软件以及硬件等各方面的要求。在制定备份和恢复计划时,一定要牢记“有备无患”。

1,多元化重做日志

多元化重做日志的目的是为了防止日志成员的损坏,从而提高DB 的安全运行时间(Mean-Time-Between-Failures,简写为MTBF)。当多元化重做日志时,应该将同一个日志组的不同日志成员分布到不同磁盘上,以防止磁盘损坏。假定某个日志组只包含一个日志成员,并且其唯一的日志成员出现介质失败,那么当切换到该日志组时DB 将会停止运行,此时就必须进行介质恢复。如是一个日志组包含多个日志成员,并且某个日志成员出现介质失败,那么此时DB 仍然可以正常运行,DBA 只需要删除损坏的日志成员即可。

2,多元化控制文件

多元化控制文件的目的是为了防止控制文件的损坏,从而降低控制文件的恢复时间(Mean-Time-To-Recover,简写为MTTR)。当多元化控制文件时,应该将不同的控制文件分布到不同的磁盘上,以防止磁盘损坏。如果数据库只包含一个控制文件,并且唯一控制文件出现介质失败,那么DB将无法装载,此时必须重新建立控制文件或者恢复控制文件。如果DB 包含多个控制文件,并且某个控制文件出现介质失败,那么DBA 只需要修改初始化参数control_files,而不需要重新建立或者恢复控制文件。

3,确定日志操作模式

重做日志记载了Oracle Database 的所有事务变化,Oracle 数据库具有NOARCHIVELOG 和 ARCHIVELOG 两种日志操作模式。当DB 处于ARCHIVELOG 模式时,只有在归档后重做日志才能被覆盖,并且所有事务变化被保留到归档日志;当DB 处于NOARCHIVELOG 模式时,重做日志可以直接被覆盖,并且过去的事务变化全部丢失。

(1)NOARCHIVELOG 模式的特点

  • 不能执行联机备份。如果要进行备份,则必须关闭DB。
  • 不能使用归档日志的任何恢复技术(完全恢复、FLASHBACK DATABASE、DBPITR、TSPITR)。
  • 当某个数据文件出现介质失败时,有两种处理方法:第一种方法是删除该数据文件所包含的所有对象,然后删除该数据文件,数据训的其余部分仍然可以正常工作,但损坏数据文件的数据全部丢失;第二种方法是转储最近的完全备份,但备份以来的数据变化全部丢失。

(2)ARCHIVELOG 模式的特点

  • 需要为归档日志分配专门的空间,并且需要管理已生成的归档日志。
  • 在DB 打开时可以执行联机备份,不影响数据库的业务操作。
  • 可以使用多种恢复技术(完全恢复、FLASHBACK DATABASE、DBPITR、TSPITR)。

4,选择备份保留策略

备份保留策略用于设置为满足恢复和其他需求保留备份文件的规则,备份保留策略可以基于冗余度(redundancy)或恢复窗口(recovery window)定义,不能满足保留策略的备份文件被称为旧文件(obsolete),并且这些陈旧备份可以被删除。备份保留策略必须使用RMAN来实现。

RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;

RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3;

5,保留旧备份

保留早期数据文件和归档日志备份有以下几种原因:

  • 当将数据库恢复到最近备份之前的时间点时,必须使用早期备份的数据文件和归档日志。
  • 如果最近备份损坏,并且DB 也出现了介质失败,那么使用早期备份的数据文件和早期备份以来的所有归档日志可以完全恢复数据库。

6,确定备份周期

当制定备份策略时,备份周期也是很必要的,合理的备份周期可以降低介质恢复时间(MTTR)。备份周期应该根据数据库变化频率确定,数据库变化越频繁,备份周期应该越短。

7,在数据库物理结构发生改变后执行备份

当建立或删除表空间、增加数据文件、改变数据文件名称时,数据库物理结构会发生改变。当数据库物理结构发生改变时,在ARCHIVELOG模式下应该备份控制文件,在NOARCHIVELOG 模式下应该进行完全数据库备份。

8,备份频繁使用的表空间

一个Oracle 数据库往往包含许多表空间,但可能只在少量表空间上频繁执行DML 操作。如果表空间数据变化频繁,则增加备份次数,以降低恢复时间(MTTR)

;如果表空间数据变化比较慢,则减少备份次数;只读表空间因为其数据不会发生变化,所以只需要备份一次。

9,在NOLOGGING操作之后进行备份

当装载数据、建表和建立索引时,为了加快数据装载速度,可以指定NOLOGGING 选项。当指定NOLOGGING 选项时,数据变化不会被记载到重做日志。为了确保在表空间损坏时可以恢复这些数据,必须重新备份相应表空间。

10,使用EXP 和 EXPDP 导出数据

为了防止对象被意外删除或截断,可以使用EXP 或EXPDP 执行逻辑备份;而在对象被意外删除或截断之后,可以使用IMP 或 IMPDP 导入其结构和数据。逻辑备份和恢复增加了数据库备份和恢复的策略灵活性。但是,这种方法不能代替对数据库文件的物理备份,也不能提供完全恢复。

11,不要备份重做日志

与归档日志不同,重做日志不应该备份,备份重做日志“有弊无益”。在ARCHIVELOG 模式下,当重做日志填满时,其内容会自动被转储到归档日志中;在NOARCHIVELOG 模式下,只为只能在关闭后进行完全备份,所有数据文件和控制文件备份处于完全一致的状态,所以在转储备份时也不需要使用重做日志。防止重做日志损坏最有效的方法是多元化重做日志,并且将同一个日志组的不同日志成员分布到不同磁盘。

免责声明:文章转载自《1.2 备份与恢复基础》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇XPath--轴定位语法使用 dumi 打包 React 组件库并生成文档站点下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Zabbix之配置文件详解

zabbix的配置文件一般有三种:zabbixserver的配置文件zabbix_server.confzabbixproxy的配置文件zabbix_proxy.confzabbix_agentd的配置文件zabbix_agentd.conf 1.zabbixserver的配置文件: NodeID=0 #分布式节点id号,0代表是独立服务器,默认是被注释掉...

oracle11g 连接问题

一、TheNetworkAdaptercouldnotestablishtheconnection 状态:失败-测试失败:IO错误:TheNetworkAdaptercouldnotestablishtheconnection 解决: (①、检查防火墙,可能是端口号1521防火墙拦截,把1521加入可允许访问即可。) 这个异常的出现一般与数据库和你的PC...

MySQL笔记-高可用方案

MySQL笔记-高可用方案 目录 MySQL笔记-高可用方案 一、概述环境信息 二、主从复制(一主一从) 2.1、配置参数(my.cnf) 2.2、Master数据库,创建复制用户并授权2.3、Slave数据库,指定Master及启用slave 2.3、验证主从复制 主库创建测试库、表和数据 从库查看同步情况 三、双主配置 3....

python3+Scrapy爬虫使用pipeline数据保存到文本和数据库,数据少或者数据重复问题

爬取的数据结果是没有错的,但是在保存数据的时候出错了,出现重复数据或者数据少问题。那为什么会造成这种结果呢? 其原因是由于Spider的速率比较快,而scapy操作数据库操作比较慢,导致pipeline中的方法调用较慢,这样当一个变量正在处理的时候,一个新的变量过来,之前的变量的值就会被覆盖。 就比如pipline的速率是1TPS,而spider的速率是5...

Java程序员从笨鸟到菜鸟之(五十二)细谈Hibernate(三)Hibernate常用API详解及源码分析--csdn 曹胜欢

新接触一个框架的目的就是想利用这个框架来为我们做一些工作,或者是让他来简化我们的工作,利用这个框架无非就是要利用这个框架所给我们提供的API去操作我们的数据,所以利用一个框架的好坏很大一部分取决于你对这个框架API的理解程度,所以在此篇博客中我们就一起来看一下Hibernate的API和配置文件的相信情况。下面我们一一来看一下: 一:使用SchemaExp...

oracle怎么建立本地连接

sqlplus连接oracle数据库(连接本地oracle数据库和连接远程的oracle数据库) 虽然我们现在平时都是使用PLSQL Developer这个软件工具了,但是我们还是要了解sqlplus 想要成功连接本地的oracle数据库,首先要确保本地的这2个服务是处于启动状态 (重要)OracleOraDb11g_home1TNSListener ...