Oracle备份恢复概览
作者IT邦德中国DBA联盟(ACDU)成员15年DBA工作经验Oracle、PostgreSQL ACECSDN博客专家及B站知名UP主全网粉丝15万擅长主流Oracle、MySQL、PG、高斯及Greenplum备份恢复安装迁移性能优化、故障应急处理文章目录1.概念2.故障类别2.1 语句故障2.2 用户进程故障2.3 网络的故障2.4 用户错误2.5 实例故障2.6.介质故障3.规划策略4 、配置快速恢复区5 、计划常规备份6.备份分类7.还原与恢复8.恢复的类型1.概念DBA的工作任务是确保数据库处于打开状态实时给用户提供服务要实现这个目标就应尽量避免数据库出现故障。努力延长平均故障间隔时间简称 MTBF。MTBF指数据库出现失败的频繁度应尽可能增大该值。通过以下方式增大MTBF1 通过冗余方式保护关键组件确保硬件尽量可靠2 定期执行操作系统维护3 Oracle 数据库提供了高级配置选项可用于延长MTBF其中包括1、RAC集群技术位于多台计算机上的多个实例打开一个物理数据库降低因一个或多实例失败导致的风险2、Data Guard技术一个主数据库多个备用数据库备用数据库是主数据库在事务上一致的副本可是在主数据宕机的情况下由备用服务器来继续提供服务。缩短平均恢复时间简称MTTR。MTTR指数据失败后出现的停机时间应尽可能减小该值通过以下方式减少MTTR1配置备份2通过配置最佳数据库方案达到最大程度地保护数据不丢失如归档日志文件、闪回和Data Guard3确定恢复过程方案减少MTTR2.故障类别2.1 语句故障单个数据库操作失败选择、插入、更新或删除如1.在表中输入无效的数据解决方法可与用户合作来验证并更正数据2. 执行操作但权限不足解决方法提供适当的对象或系统权限3.分配空间失败解决方法启用可恢复的空间分配增加所有者限额增加表空间的空间4.应用程序存在逻辑错误解决方法与开发人员合作来更正程序错误。2.2 用户进程故障1.用户执行了异常断开连接操作2.用户会话已异常终止3.用户遇到了程序错误并终止了会话解决方法通常不需要DBA执行任何操作就可解决用户进程故障。实例的后台进程会回退未提交的更改并解除锁定知识点回顾进程监视程序(PMON) PMON定期轮询服务器进程如果发现某个服务器进程的用户不再处于连接状态会进行恢复并回退未提交的更改并解除失败会话持有的任何锁定2.3 网络的故障网络故障最好为网络连接提供冗余路径通过备份监听程序、网络连接和网络接口等方法降低网络故障如1.监听程序失败解决方法配置备份监听程序和连接时故障转移2.网络接口卡故障解决方法配置多个网卡3.网络连接失败解决方法配置备份网络连接2.4 用户错误用户可能会无意中删除或修改数据这时DBA需要帮助用户从错误中进行恢复1.用户尚未提交则进行回退操作2.用户提交了更改可以使用闪回查询来确定以前的值是什么再进行相应的恢复。如因超出了还原保留期而无法使用闪回的可通过使用LogMiner 来恢复原始信息3.如果通过将表闪回到删除前的状态4.用户删除表后可从回收站中恢复表如果清空了回收站或者用户使用PURGE 选项删除了表仍可通过使用时间点恢复(PITR) 来恢复删除的表。2.5 实例故障如果在同步所有数据库文件之前关闭了数据库实例就会发生实例错误如1.软硬件故障导致实例错误只要重新启动实例即可2.使用SHUTDOWN ABORT 和STARTUP FORCE 紧急关闭命令导致实例错误只要重新启动实例即可3.断电导致实例错误只要重新启动实例即可4.后台进程出现故障导致实例错误只要重新启动实例即可实例恢复过程包括前滚重做日志中的更改和回退任何未提交的事务处理2.6.介质故障导致一个或多个数据库文件数据文件、控制文件或重做日志文件丢失或损坏的任何故障。要从介质故障进行恢复需要还原并恢复缺失的文件。 可能导致介质故障的原因1.磁盘驱动器故障2.磁盘控制器故障3. 删除或损坏了数据库文件解决办法1.从备份中还原受影响的文件2.通知数据库关于新文件的位置3.通过应用重做信息来恢复文件3.规划策略1 、多路复用控制文件与数据库关联的所有控制文件是完全相同的。丢失一个控制文件后进行恢复并不难。但是丢失了所有控制文件后进行恢复则很困难。为了避免丢失所有控制文件至少要有二至三个副本建议使用RMAN定期自动备份。2 、多路复用重做日志组实例故障或介质故障进行恢复可使用重做日志信息将数据文件前滚到最后一个提交的事务处理。如果重做日志组依赖于一个重做日志文件那么这个文件丢失了很可能意味着数据也丢失了。重做日志组由一个或多个重做日志文件组成组中的每个日志文件都是其它日志文件的副本。Oracle 建议每个重做日志组至少包含两个文件两个文件要分布在不同的磁盘或控制器上。所以当单个设备出现故障时就不会损坏整个日志组。丢失了整个日志组可以算是一种最严重的介质故障因为这会导致丢失数据3 、保留重做日志的归档副本如果某个文件丢失后通过备份已还原实例就必须应用重做信息以便将该文件返回到控制文件中包含的最新SCN。所以为保证数据恢复可将数据库置于ARCHIVELOG 模式。4 、配置快速恢复区快速恢复区是为保存归档日志、备份、闪回日志、镜像控制文件和镜像重做日志而在磁盘上专门留出的空间。快速恢复区在磁盘上的保留位置应不同于数据库文件的工作区所在的位置。否则磁盘将成为数据库的单点故障。理想情况下快速恢复区应足够大可存放数据文件和控制文件副本以及基于保留策略从保留的备份恢复数据库所需的闪回日志、联机重做日志和归档日志。5 、计划常规备份大多数介质故障需要从备份还原丢失或损坏的文件。4.物理备份与逻辑备份1 、物理备份指所有物理文件的一个副本比如数据文件控制文件归档日志等。物理备份是备份或恢复的基础包括冷备份(非归档模式)或热备份(归档模式)2 、逻辑备份将表等数据使用导出exp、expdp工具导出二进制文件后续根据需要再使用导入 imp ipmdp工具导入数据库。因此逻辑备份文件只能用来对数据库进行逻辑恢复。5.备份恢复工具1、RMAN工具进行备份恢复支持备份数据库、表空间、数据文件、控制文件、归档日志等支持增量备份等。2、操作系统命令和SQL*plus完成相关的备份与恢复。3、第三方软件的备份与恢复6.备份分类前面提到了逻辑备份与物理备份的概念下面根据备份的内容、大小、性质等再分类.1 、全部备份与部分备份全部备份包含所有的数据文件及至少一个控制文件、参数文件、密码文件等。部分备份包含零个或多个表空间零个或多个数据文件可能包含控制文件等。2 、完整备份与增量备份完整备份指一个或多个数据文件的一个完整副本。增量备份指包含从最近一次次备份以来被修改或添加的数据块。增量备份又分为差异增量备份上级及同级备份以来所有变化的数据块默认方式累计增量备份上级备份以来所有变化的块增量备份又分0级、1级、2级、3级、4级备份其中0级增量备份是所有备份的基础是一个完整备份包含所有的数据块 。3 、脱机备份与联机备份脱机备份 在数据库关闭(shutdown)阶段发生的备份在一致性关闭数据库后控制文件SCN与数据文件头部SCN一致所以又称为一致性备份或冷备份。联机备份 在数据库使用(open)阶段发生的备份又称为非一致性备份或热备份。联机备份一个数据文件不与任何特定的SCN以及控制文件同步可以是全部备份也可以是部分备份能够使用RMAN或操作系统命令完成仅仅在archivelog模式下4 、映像副本与备份集映像副本cp 某个文件的完整拷贝未经过任何压缩处理每个字节都与源文件相同。不支持增量备份也不能备份到磁带。备份集rman由一个或多个称为piece的物理文件组成的逻辑结构。备份片中可以是数据文件控制文件以及归档日志文件。 备份集支持数据的压缩支持增量备份。可以备份到磁盘也可以备份到磁带。7.还原与恢复数据库恢复是使用最近的一次备份来实现数据库的还原然后使用归档日志和联机日志将数据库恢复到最新或特定状态。还原从最近的备份文件中检索所需要的内容并将其拷回到原来位置的过程称为还原。恢复在还原的基础上使用归档日志和联机日志将数据库刷新到最新的SCN使数据库保持一致性8.恢复的类型实例恢复使用联机日志来前滚已提交的事务撤销未提交的事务并释放锁。介质恢复在还原的基础上使用归档日志和联机日志将数据库刷新到最新的SCN使数据库保持一致性。完全恢复在还原的基础上使用归档日志和联机日志将数据库刷新到最新的时间点使数据库保持一致性。不完全恢复在还原的基础上使用归档日志和联机日志将数据库更新至过去的某个时间点或SCN。不完全恢复可以基于时间的不完全恢复基于取消的不完全恢复即恢复到执行CANCEL 命令为止。基于日志序列的不完全恢复人为错误的恢复使用闪回特性从人为的错误中进行数据恢复。