日期:2014-05-17  浏览次数:21012 次

使用用户管理的备份进行恢复
热备份模式下,使用用户管理的备份,在数据库运行过程中数据库文件丢失,
请问如何恢复啊?

------解决方案--------------------
恢复要求很高,要根据场景确定.下面是一个笔记,列举了几种情况,供参考

5、用户管理的完全恢复
5.1 完全恢复简介
5.1.1 诊断数据文件介质失败
1、诊断数据文件介质失败
启动数据库的时候dbwr 报错误:ora-01157 ora-01110
2、在open状态下诊断数据文件损坏,损坏的数据文件在检查点时自动被数据库脱机。在查询相关对象时
select * from emp (全表扫描) ora-000376 ora-01110
3、在open下诊断数据块损坏。只有涉及到损坏的块,就会报错误
select * from emp (全表扫描) ora-01578 ora-01110
5.1.2 转换数据文件到其它磁盘
在mount时,可以改变任何文件的位置,在open时,不能改变system的数据文件
1、在mount下改变文件位置
host copy d:\aa e:\dd
alter database rename file 'd:\aa' to 'e:dd'
2、在open状态下改变文件位置。
alter tablespace test offline 或者 alter database datafile 'd:aa' offline
alter database rename file 'd:\aa' to 'e:dd'
alter tablespace test rename datafile 'd:\aa' to 'e:dd'
 
5.1.3 完全恢复命令
1、recover database (sql*plus 命令 对应的sql命令是 alter database recover database ) 
该命令恢复多个数据文件,只能在mount下执行。
2、recover tablespace (sql*plus 命令 对应的sql命令是 alter database recover tablespace ) 
这个命令只能在open下执行
3、recover datafile (sql*plus 命令 对应的sql命令是 alter database recover datafile ) 
即可以在open下执行也可以在mount下执行
5.1.4 应用归档日志
当执行用户管理的完全恢复时,需要英国归档日志和重做日志的事物变化。如果归档日志、重做日志存在相同的事物变化
那么只应用重做日志的变化;应用重做日志是可以指定名称,也可以应用oracle建议的日志
1、应用默认目录的归档日志
recover datafile 5 
2、应用指定位置的归档日志
recover datafile 5 from 'c:\test'
3、自动应用归档日志
方法1:recover datafile 5 命令后选择auto选项
方法2:set autorecovery on
方法2:recover automatic datafile 5 
5.1.5 察看恢复文件
1、列出需要恢复的数据文件
首先把备份文件放到指定位置。然后查询序列号。这是查询到的是备份文件的scn。根据这个scn可以确定重哪个
日志文件开始应用
select * from v$recover_file; 
2、列出日志历史信息
select * from v$loghist where 11231 between first_change# and switch_change#;
3、列出恢复需要使用的归档日志
显示所有的归档日志 
select * from v$recovery_log 
 
 
5.3 在mount状态下恢复数据文件
这种方法可以恢复任何数据文件,不过需要数据库处于mount状态;其实只有system的数据文件必须在mount
下恢复,其他文件可以在open状态下恢复。在mount恢复方法如下(假设system表空间文件有问题):
1、装载数据库
conn / as sysdba
startup force mount
2、确定需要恢复的文件
select file#,error from v$recover_file;
3、复制文件备份
host copy d:\backup\system.dbf d:\oracle\orcl\
如果磁盘损坏,可以将备份文件复制到可用位置
host copy d:\backup\system.dbf d:\oracle\orcl\
alter database rename file old_namepath to new_namepath
4、恢复数据文件
recover datafile 1 或者使用命令 alter database recover datafile 1
5、打开数据库
alter database open 
 
5.4 在open状态下恢复关闭后意外丢失的数据文件
如果在数据库关闭的情况下文件意外损坏,那么数据库无法打开。假设user1.dbf丢失。为了减少停机时间,在open
下恢复该文件
1、装载数据库
如果文件无法访问,数据库是否无法打开的,因此先装载。
startup force mount
2、确定需要恢复的文件
select file#,error from v$recover_file;
3、使损坏文件脱机
alter database datafile 4 offline;
4、打开数据库
alter database open 
5、复制文件到指定位置
host copy d:\backup\system.dbf d:\oracle\orcl\
如果磁盘损坏,可以将备份文件复制到可用位置
host copy d:\backup\system.dbf d:\oracle\orcl\
alter database rename file old_namepath to new_namepath
6、恢复数据文件
recover datafile 4
7、使文件联机
alter database datafile 4 online;
 
 
5.4 在open状态下恢复意外打开时丢失的数据文件
在数据库处在open时,如果system的数据文件坏了,系统会自动关闭。如果其他数据文件坏了。那么只有该文件
无法访问,在执行sql语句的时候会报错误
select * from temp_t
 
ora-00376: file 4 cannot be read at this time
ora-01110: data file 4 
恢复该文件的方法如:
1、确定需要恢复的数据文件
select file#,error from v$recover_file;
2、使数据文件脱机
alter database datafile 4 offline;
3、复制文件的备份到指定位置或者通过rename改变原文件位置
4、恢复表空间或数据文件
recover datafile 4
5、市表空间、数据文件联机
alter database datafile 4 online;
 
5.5