目标
数据库恢复
恢复控制文件
不完全恢复的原因
使用EM完成不完全恢复
使用RMAN完成不完全恢复
使用SQL完成不完全恢复
在RESETLOGS操作之后完成数据库恢复
10g有三种方法恢复:1.传统的用户管理恢复过程2.RMAN 3.使用EM
理解Restore(重建)和Recovery(恢复)过程
重建:包括复制必要的物理文件
恢复:取得数据文件并应用归档日志的过程
服务器管理恢复
ORACLE推荐使用RMAN完成备份和恢复过程。
RMAN恢复经常被称为服务器管理恢复,因为恢复由服务器进程完成。
例子:
使用restore和recover命令将数据库备份重建:
1.目标数据库处于mount状态
2.执行命令
RMANrun
{allocatechannelc1typedisk;
Restoredatabase;
Recoverdatabase;
Alterdatabaseopen;
}
用户管理恢复
传统的恢复方法。用户直接管理恢复数据库时要求的数据库文件。
1.确定需要恢复的数据库文件
2.数据库处于mount或者open状态
3.手工复制丢失的文件到适当位置
4.Mount状态下执行recover database(如果需要的话)
例子:恢复丢失了一个数据文件的数据库、
1.确定丢失的数据文件是users01.bdf
2.从最近一次备份的磁盘上拷贝丢失的数据文件(物理拷贝)
Cope..backuporacle10tusers01.bdf
3.启动到mount状态,执行recover database;
4.Alterdatabaseopen
恢复控制文件
控制文件包括RMAN元数据信息和使用Recovery Manager目录时所必须的资料档案库信息。
10g中RMAN引入了控制文件自动备份
恢复控制文件的方法:
1.恢复控制文件自动备份
1)配置RMAN
RMANconnecttargetsys/orcl@test
连接到目标数据库: TEST (DBID=1961907796)
RMANconfigurecontrolfileautobackupon;
使用目标数据库控制文件替代恢复目录
新的 RMAN 配置参数:
CONFIGURECONTROLFILEAUTOBACKUPON;
已成功存储新的 RMAN 配置参数
2)完成一个备份
RMANrun
2{
3backupdatabase;
4backup(archivelogall);
5}
3)删除控制文件来模拟控制文件丢失情况(关闭数据库时执行删除)
Delete *.ctl (物理删除即可)
4)启动到nomount状态
5)连接到目标数据库,设置dbid
rmantarget/
RMANsetdbid1961907796;
正在执行命令: SET DBID
6)从备份中重建控制文件
RMANrestorecontrolfilefromautobackup;
7)Mount状态并恢复数据库
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/) RMANalterdatabasemount;
RMANrecoverdatabase;
8)用resetlogs选项打开数据库到open状态
RMANalterdatabaseopenresetlogs;
2.重建控制文件
Alter database backup controlfile to trace; 用于跟踪控制文件
该命令产生二进制控制文件的ASCII表示,作为数据库轨迹文件。该ASCII备份控制文件以数据控制语言(DCL)语句和命令的形式存在。该ASCII备份控制文件可以用于重建控制文件。当重建控制文件时,要用适当的初始化参数启用数据库,需要spfile或pfile。
例子:
1.建立ASCII控制文件
Sqlplus/nolog
Connect/assysdba
Alterdatabasebackupcontorlfiletotrace;
2.上面语句生产的trace文件于udump目录里
备份控制文件有两种情况(在该文件里可以查看):
Set #1. NORESETLOGS case情况用于完全恢复,
Set #2. RESETLOGS case情况用于不完全恢复。
3.将trc文件里的Set #1或者Set #2 内容拷贝出来保存为txt副本
4.物理删除控制文件
5.以sysdba身份登陆,执行刚才创建的脚本
6.Alter database open resetlogs;
进行不完全恢复
不完全恢复又成为时间点恢复(DBPITR),因为他恢复到一个确定的时间点:它在强迫恢复的故障之前停止。从另一种观点看,不完全恢复就是:并不是在归档重做日志中的所有事务都应用于数据库而使数据库完整。在恢复过程结束后,使用不完全恢复的数据库仍然丢失一些事务,这些事务在故障之前是在数据库中的。
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)RMAN:两种方法完成不完全恢复:
1.执行recover之前使用子句:
Set until time或者set until sequence
2.执行recover时使用子句
Until time 或者 until sequence
在完全恢复之前,在指定的时间点、一个重做日志序列或者一个变化号(SCN)停止。
用户管理不完全备份:
使用RECOVER DATABASE命令与UNTIL TIME、UNTIL CHANGE或者UNTIL CANCEL子句。(其中与RMAN不同的是until cancel子句专门在随机点停止恢复过程)。
RMAN不完全恢复
rman不完全恢复可以根据指定时间、重做日志序列或者变化号SNC来进行。
完成不完全恢复使用recover database命令和until time、until SCN或者until sequence子句结合;或者预先使用子句 set until
例子:
基于时间点的恢复
1.启动到mount状态
2.C:SetNSL_DATE_FORMAT=DD-MM-YYYYHH24:MI:SS
RMANrun
2{setuntiltime'02-9月-200815:45:00';
3restoredatabase;
4recoverdatabase;
5}
3.用resetlogs子句打开数据库
Alterdatabaseopenresetlogs;
基于重做日志序列号的恢复
1.Select*fromv$log_history;
2.启动到mount状态
3.执行:
RMANrun
2{setuntilsequence2thread1;
3restoredatabase;
4recoverdatabase;
5}
4.用resetlogs子句打开数据库。
RMANalterdatabaseopenresetlogs;