执行User-Manager数据库的闪回和恢复(1)
2024-07-21 02:45:05
供稿:网友
这章介绍了怎样去还原和恢复一个数据库、使用Oracle的闪回特性(当使用用户管理的备份和恢复策略s时-这种策略部需要依赖还原管理)
这张主要包含以下几个主题:
1> OracleUser-Manager的闪回特性
2> 关于User-Managed的还原操作
3> 还原需要恢复的数据文件
4> 还原控制文件
5> 关于User-Managed的媒介恢复
6> 执行User-Managed的媒介的完全恢复
7> 执行User-Managed数据库的时间点恢复
8> 用resetlogs打开数据库选项
9> 在noarchivelog模式下恢复数据库
10> 控制并行的媒介恢复
一、 Oracle的User-Managed的闪回特性:
Oracle的闪回功能可以让你在腐败的逻辑数据损坏你的数据库是,来执行撤销,主要包含以下操作:
1> Oracle闪回数据库---可以让你把整个数据库返回到它的前一个状态而无需事先备份
2> Oracle闪回表---可以返回一个或多个表(包括内容)到刚过去的某个时间
3> Oracle闪回删除---撤销”drop table ..”操作的效果
4> Oracle闪回查询---可以查询数据库在刚过去时间的内容
5> Oracle闪回版本查询---可以让你查看数据以前的状态
6> Oracle闪回事物查询---被用来回顾随着时间的推移而受事物影响的表
以上所有的操作都可以在SQL*PLUS里实现,并且不需要使用ram ,关于在数据恢复中使用Oracle的闪回功能的描述请看Oracle Database Backup and Recovery Basics
用SQL*PLUS执行Flashback database
SQL*PLUS 的flashback database 命令格式与RAM中的flashback database 的命令格式一样,都同样返回数据库的前 一个状态:
在使用flashback database时需注意:需要为你的数据库创建一个闪回恢复区用来搜集闪回日志
在SQL*PLUS里执行flashback database 操作:
查询目标数据库的SCN 以确定需要闪回的范围。下面的SQL*PLUS查询出最迟和最早的SCN(WINDOWS下):
SQL> SELECT CURRENT_SCN FROM V$DATABASE; SQL> SELECT OLDEST_FLASHBACK_SCN, OLDEST_FLASHBACK_TIME FROM V$FLASHBACK_DATABASE_LOG;如果需要,用户可以使用flashback的其他特性:SCN或time
用管理员权限打开SQL*PLUS,运行flashback database语句来返回数据库到前一个TIMESTAMP或SCN,例:
FLASHBACK DATABASE TO SCN 46963;FLASHBACK DATABASE TO TIMESTAMP (SYSDATE-1/24);FLASHBACK DATABASE TO TIMESTAMP timestamp'2002-11-05 14:00:00';FLASHBACK DATABASE TO TIMESTAMP to_timestamp('2002-11-11 16:00:00', 'YYYY-MM-DD HH24:MI:SS'); 以只读方式打开数据库来检查使用flashback database操作的结果。等操作完成时,你可以打开数据库,执行一些查询来确信你已经恢复了你需要的数据。如果你发现你需要再次执行flashback database 到另一个时间点,你可以使用recover database 来返回数据库到现在然会尝试另一个flashback database 语句
如果你对flashback database 的结果满意,那么你可以用resetlogs选项来重新打开数据库。
如果情况允许,你也可以使用Oracle的导出工具,如Data Pump Expor来保存可能丢失的数据、
使用recover database 来返回数据库到现在、用import来导入已经丢失的对象
二、关于User_Manager的还原操作:
还原一个文件就是用备份中的文件替换它。等媒介失败、用户错误的破坏或删除原始文件时你需要还原文件。下面的文件时还原操作时所需要的候选文件:
*Datafiles and control files
*Archived redo logs
*Server parameter file
在每种情况下,一个主文件的丢失和还原备份 都要受到以下因素的影响:
If you lose . . .
Then . . .
一个或多个数据文件
你必须从备份中还原它们,然后执行媒介还原。Recovery是必须得,无论何时数据文件中的SCN都无法匹配控制文件中记录的数据文件的SCN
当前控制文件的所有副本
你必须从备份中还原控制文件,然后用resetlogs选项open数据库。
如果你没有事先备份,那么你可以去尝试重新创建需要的控制文件。如果可能的话,可以使用ALTER DATABASE BACKUP CONTROLFILE TO TRACE中包含的脚本。剩下的工作可能需要让当前的数据库结构来匹配控制文件的结构
多重复用控制文件中的某一个
复制一个完整的复用控制文件到那个被破坏或者遗失的控制文件的位置,然后open数据库。
如果你不能复制这个控制文件到它的原始位置,那么你需要修改初始化参数文件来反射出一个新的位置并删除那个已经损坏的控制文件,最后open database
.
一个或多个媒介恢复是所需的归档日志
你必须为恢复来还原这些归档文件的备份。你可以还原它们到默认或者非默认位置。如果你没有备份,那么你必须执行不一致恢复来退回到你第一次丢失redo log文件前的SCN,然后用resetlogs选项open.
服务端的参数文件
如果你有关于服务端参数文件的备份,那么恢复。或者如果一个客户端初始化参数文件的备份,你可以还原这个文件,然后开启实例,重新创建spfile
Note:
Oracle-managed文件与用户自定义文件的restore和recovery操作没有任何区别
三、确定恢复时需要的数据文件
你需要动态的执行查看v$recover_file来确定在媒介恢复中需要准备还原的文件。这个视图
列出了所有需要被恢复的文件、解释了他们为什么需要被恢复的原因
如果你计划执行完全恢复而不是基于时间点的恢复,你可以只恢复那些需要恢复的数据文件
而不是整个数据库(注意:在基于时间点的恢复中,你必须还原和恢复整个数据库,除非你执行了表空间的时间点恢复),
你可以查询v$recover_file来列出的数据文件,来通过文件号与他们的状态和错误信息来恢复:
SELECT FILE#, ERROR, ONLINE_STATUS, CHANGE#, TIME FROM V$RECOVER_FILE;(相当于:Select * from v$recover_file); 注意: 你不能使用和从备份中还原出来的控制文件,或者在影响数据文件的媒介失败后重新创建的控制文件在一起的v$recover_file。一个还原或者重新创建的控制文件不包含你需要更新v$recover_file的准确信息 你也可以用数据文件号、v$datafile、v%tablespace视图做连接查询来得到数据文件和表空间的名字。使用下面的SQL*PLUS命令可以格式化查询结果的输出:COL DF# FORMAT 999COL DF_NAME FORMAT A35COL TBSP_NAME FORMAT A7COL STATUS FORMAT A7COL ERROR FORMAT A10COL CHANGE# FORMAT 99999999SELECT r.FILE# AS df#, d.NAME AS df_name, t.NAME AS tbsp_name, d.STATUS, r.ERROR, r.CHANGE#, r.TIMEFROM V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE tWHERE t.TS# = d.TS#AND d.FILE# = r.FILE#; Error列表示了每个文件恢复是所遇到的问题四、还原数据文件和归档日志
这节包含以下主题:
· Restoring Datafiles with Operating System Utilities
· Restoring Archived Redo Logs with Operating System Utilities
1>Restoring Datafiles and Archived Redo Logs
如果媒介永久的损坏了一个或多个数据文件,那么你必须在recover前restore这些数据文件。如果你不能还原损坏的数据文件到它的原始位置,那么你必须在控制文件中为它指定到新的问题。
如果你需要在原始磁盘或分区上还原一个数据库的文件,这个过程和在文件系统上restore一样,
还原数据文件到它们的默认位置:
原文地址:http://download.oracle.com/docs/cd/B19306_01/backup.102/b14191/osrecov.htm#BABBBBBB
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ty_tarena_pger/archive/2009/12/21/5049953.aspx