11.11.08 数据库恢复
发布日期:2022-02-22 18:04:09 浏览次数:12 分类:技术文章

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

目标:
  1. 执行用户管理的完全或者不完全恢复
  2. 确定需要不完全恢复的情况
  3. 使用RMAN进行完全或者不完全恢复
  4. 基于时间、SCN、日志序列、还原点或取消等方法执行不完全恢复
目录:
--恢复方法
----用户管理的恢复
----RMAN恢复
--恢复分类
----完全恢复
----不完全恢复
------用户管理的不完全恢复
------使用RMAN执行不完全恢复
------还原点
------不完全恢复最佳方案
--控制文件

恢复方法
※恢复方法分为:
  1. 用户管理的恢复
  2. RMAN恢复
※用户管理的恢复比RMAN恢复需要更多的手动介入,必须手动维护文件并将其移动到位
※RMAN恢复可以自动管理文件,RMAN还包括一些数据字典维护和报告功能。

用户管理的恢复
※执行用户管理的介质恢复是通过从备份复制数据文件来手动还原数据文件,
如果没有将数据文件还原到它的原始位置,则还需通过ALTER DATABASE RENAME FILE命令用新的位置更新控制文件。
还必须还原要恢复已还原的数据文件时所需要的所有归档日志文件。
※可以使用RECOVER命令,以下之一可用来恢复数据库或文件:
SQL>RECOVER [AUTOMATIC] DATABASE
从备份还原所有数据文件,然后恢复数据库。此命令仅能用于关闭的数据库恢复。
SQL>RECOVER [AUTOMATIC] TABLESPACE |
从备份还原损坏的数据文件,然后恢复数据文件。此命令仅能用于打开的数据库恢复。
SQL>RECOVER [AUTOMATIC] DATAFILE |
从备份还原损坏的数据文件,然后恢复数据文件。此命令既可以用于打开的数据库恢复,也可用于关闭的数据库恢复。
△AUTOMATIC关键字指示oracle数据库自动生成继续执行恢复操作所需的下一归档重做日志文件的名称,否则,系统会提示你输入这些名称。

RMAN恢复 
※从备份重建数据库的全部或部分内容通常包含两个阶段:
  1. 从备份检索数据文件的副本
  2. 将在归档和联机重做日志中进行备份以来的更改重新应用于该文件,以使数据库恢复到所需的SCN(通常是最新的一个)
※rman恢复通常使用restore和recover命令:
  1. RESTORE 命令将数据文件从磁带、磁盘或其它介质上的备份位置检索到磁盘上,并使其可供数据库服务器使用
  2. RECOVER 命令获取已还原的数据文件副本,并将数据库重做日志中记录的更改应用于该副本
※示例如下:
run{
sql "ALTER TABLESPACE tbs_name OFFLINE IMMEDIEATE";
RESTORE TABLESPACE tbs_name;
RECOVER TABLESPACE tbs_name;
sql "ALTER TABLESPACE tbs_name ONLINE";
}
   
※还原文件时有一个非常有用的选项是DELETE ARCHIVELOG选项,它会在RECOVER 操作不再需要还原的归档重做日志时从磁盘删除这些日志。对于还原到快速恢复区,DELETE ARCHIVELOG选项自动生效。

恢复分类
※恢复可以分为以下两类:
  1. 完全恢复:将数据库恢复到当前最新状态,包括直至请求恢复时进行的所有已提交的数据更改。
  2. 不完全恢复:将数据库恢复到请求恢复操作之前的指定的过去时间点。
如下图:
※不完全恢复意味着会缺失一些事务处理:即恢复目标时间和当前时间之间所做的所有数据修改都会丢失
※完全恢复的过程:
  1. 通过备份还原损坏或丢失的文件。
  2. 根据需要应用增量备份、归档重做日志文件和联机重做日志文件中的更改。将重做日志更改应用于数据文件,直到到达当前联机日志,并且重新输入了最新的事务处理。在整个过程中会生成还原块。这称为前滚或高速缓存恢复。
  3. 此时,还原的数据文件中包含已提交和未提交的更改。
  4. 在应用还原前打开数据库。这是为了提供更高的可用性。
  5. 还原块用于回滚任何未提交的更改。有时也称为事务处理恢复。
  6. 此时,数据文件处于已恢复状态,且与数据库中的其它数据文件一致。
※不完全恢复的过程:
  1. 从备份还原数据文件。如果还原点目标并不很新,则使用的备份可能也不是最新的。
  2. 从归档重做日志文件应用重做,根据需要包括尽可能多的数据以达到还原点目标。
  3. 此时,数据文件包含一些已提交的事务处理未提交的事务处理,因为重做可以包含未提交的数据。
  4. 在应用还原前打开数据库。这是为了提供更高的可用性。
  5. 应用重做时,同时会应用支持还原数据文件的重做。这样,还原可以应用于数据文件,以便还原任何未提交的事务处理。这是接下来要完成的操作。
  6. 此时,数据文件已恢复到所选择的时间点。
△要执行不完全恢复,需要:
  1. 恢复点之前生成的所有数据文件有效脱机或联机备份
  2. 从备份时间到指定恢复时间的所有归档日志

不完全恢复
※需要进行不完全恢复的情况:
  1. 完全恢复由于归档日志文件丢失而失败。
  2. 丢失了数据文件和一个或多个未归档重做日志文件。
  3. 丢失了非多路复用联机重做日志文件。
※使用控制文件的旧副本执行恢复或者打开数据库时,必须在RECOVERY DATABASE命令中指定USING BACKUP CONTROLFILE子句
※不完全恢复的类型分为:
  1. 基于时间的恢复
  2. 基于取消的恢复
  3. 基于更改的恢复
  4. 日志序列恢复
※基于时间的恢复:使用UNTIL TIME子句,可以指定数据库应恢复到的过去时间点。
※基于取消的恢复:在恢复过程中,可以在恢复提示符(而不是日志文件名)下输入CANCEL 来终止恢复
※基于更改的恢复:将UNTIL CHANGE子句用于用户管理的备份和将UNTIL SCN子句用于RMAN管理的备份,可以指定要恢复的最后一次提交更改的系统更改号(SCN)
※使用RMAN 管理的备份,可以通过UNTIL SEQUENCE 子句指定要用于数据库恢复的最后日志序列号

用户管理的不完全恢复
※执行用户管理的不完全恢复,操作步骤如下:
  1. 关闭数据库。如果数据库处于打开状态,使用normal、immediate、transactional选项进行关闭。
  2. 还原数据文件。从备份(如果可能,使用最新的)还原所有数据文件。可能还需要还原归档日志。(由用户管理,例如使用cp命令)
  3. 装载数据库。
  4. 恢复数据库。使用RECOVER DATABASE命令恢复数据库。
  5. 使用RESETLOGS 选项打开数据库。将数据文件与控制文件和重做日志同步
※恢复命令RECOVER DATABASE 语法:
 SQL>RECOVER [AUTOMATIC] DATABASE option

AUTOMATIC:自动应用归档和重做日志文件
option:
  1. UNTIL TIME 'YYYY-MM-DD:HH24:MI:SS'
  2. UNTIL CANCEL
  3. UNTIL CHANGE
  4. USING BACKUP CONTROLFILE
用户管理的基于时间的恢复
※使用UNTIL TIME子句将数据库恢复到某个时间,虚空重新输入恢复时间之后输入的所有数据
用户管理的基于取消的恢复
※使用UNTIL CANCLE子句进行恢复,它将恢复数据库直到找不到日志文件

使用RMAN执行不完全恢复
※RMAN 可以执行到过去时间、SCN 或日志序列号的数据库恢复
※数据库的不完全恢复需要使用RESETLOGS 选项打开数据库,避免可能应用过时归档重做日志而损坏数据文件
△仅当备份是通过RMAN 进行创建或注册的时,才能使用RMAN 还原数据文件

还原点
※还原点概念:用作SCN或特定时间的别名
※还原点可以做为指定时间点的简写与识别RESTORE POINT 子句的命令一起使用
例如
 SQL>CREATE RESTORE POINT before_load;
RMAN>RECOVER DATABASE UNTIL RESTORE POINT before_load;
   
※还原点的名称和对应的SCN记录在控制文件中,不手动删除的情况下,正常还原点也会因为过期而自动删除,所以不需要进行实时维护
※还原点还可以与其他语句一起使用,有:
  1. RECOVER DATABASE 
  2. FLASHBACK DATABASE 
  3. FLASHBACK TABLE

不完全恢复:最佳方案
※不完全恢复注意点如下:
  1. 提前计划和实践方案。
  2. 研究并确认不完全恢复是必要的。
  3. 认真执行所有步骤。
  4. 恢复前后对整个数据库进行备份。
  5. 始终验证恢复是否已成功完成。
  6. 使用还原点。
※如果不能还原所有数据文件,则无法打开数据库(不同步的)
※开始不完全恢复前,请执行已关闭数据库的整体备份(包括控制文件和重做日志)
如果未执行整体备份,则至少应归档重做日志
SQL>ALTER SYSTEM ARCHIVE LOG CURRENT;
并备份控制文件
SQL>ALTER DATABASE BACKUP CONTROLFILE TO '/u01/data/backup.ctl';

控制文件
※对控制文件进行自动备份,以便能够在需要时快速恢复控制文件
※从自动备份还原控制文件步骤:
  1. 数据库必须处于NOMOUNT 状态
  2. 如果没有恢复目录,设置DBID
  3. 使用RESTORE CONTROLFILE FROM AUTOBACKUP;命令
※RMAN 会搜索控制文件自动备份。如果找到一个自动备份,则RMAN 会将控制文件从该备份还原到CONTROL_FILES 初始化参数中列出的所有控制文件位置。
※从备份还原数据库的控制文件后,必须执行完全介质恢复,然后才能使用RESETLOGS选项打开数据库。
※根据需要,可以生成并保存一个执行重新创建操作的脚本:
通过使用ALTER DATABASE BACKUP CONTROLFILE TO TRACE 命令可以生成一个用户跟踪文件

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26121819/viewspace-710401/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/26121819/viewspace-710401/

转载地址:https://blog.csdn.net/cttctt123123/article/details/100430037 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:11.10.23 RMAN的使用(二)
下一篇:11.10.06学习笔记:数据移动(二)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月07日 03时09分08秒