文章目录
- 一、基础知识
- 1、Restoration Using RMAN利用RMAN进行恢复
- 2、Relocate a Tablespace 重新定位表空间
- 二、基础操作
- 1、恢复前的准备
- 2、恢复数据库
- 3、恢复单个数据文件
- 4、在数据库打开的情况下恢复
RMAN Complete Recove RMAN完全恢复
目标:
- 了解RMAN用于恢复和恢复
- 在ARCHIVELOG模式下执行完全恢复
- 将数据文件还原到不同的位置
- 使用归档重做日志文件重新定位和恢复表空间
一、基础知识
1、Restoration Using RMAN利用RMAN进行恢复
- 使用RMAN RESTORE命令从备份集或映像副本还原文件
- 使用RMAN RECOVERT命令恢复文件
2、Relocate a Tablespace 重新定位表空间
- 使用SET NEWNAME命令来恢复文件
- 使用SWITCH命令在控制文件中记录新名称
- 使用RECOVELTABLESPACE命令恢复表空间的数据文件
二、基础操作
1、恢复前的准备
- 备份整个数据库
backup database format '/u01/app/oracle/backup/wb_%U';
- 做0级备份
backup incremental level 0 database plus archivelog delete all input format '/u01/app/oracle/backup/all_%U';
- 创建一个表t4
然后在打开一个窗口进入sqlplus中
CREATE TABLE t4(
ID NUMBER,
NAME VARCHAR2(50)
);
插入数据
insert into t4 values(0, 'jack');
insert into t4 values(1, 'henry');
查询表空间数据
select * from t4;
提交数据
commit;
我们在做一下归档切换
alter system checkpoint;
alter system switch logfile;
- 做1级增量备份
backup incremental level 1 database plus archivelog delete all input format '/u01/app/oracle/backup/all_%U';
增量备份完成
- 最后一步环境准备
退出RNAM
quit
进入sqlplus关闭数据库
shutdown immediate;
删除所有数据文件
cd /u01/app/oracle/oradata/orcl
rm -f *.dbf
现在我们的准备工作就完成啦
2、恢复数据库
tip:首先要完成基础操作1
- 进入sqlplus,启动到mount
状态
startup mount
这个时候如何我们自己是startup也是只能启动到mount,因为所有的数据文件都丢失了
- 连接RMAN
rman target sys/123@orcl nocatalog
提示数据库没有打开
- 开始恢复
restore database;
RMAN选择合适的备份集开始恢复,我们发现在有全备和0级增量备份的时候,RMAN优先选择了0级增量备份进行恢复
recover database;
数据库恢复完成
打开数据库
alter database open;
再次进入sqlplus查询我们之前的数据
发现可以查到说明数据库已经打开了,并且数据正常
通过以下两个图片进行对比,第一张是恢复后的图片,第二张是恢复前的图片,我们大仙我们的数据也都完整的回来了
恢复完成
3、恢复单个数据文件
假如我们只有一个数据文件损坏了也是可以恢复的
我们首先进去sqlplus查询损坏数据文件的编号
col name format a50;
select file#,name from v$datafile;
我们这里以5号文件为例,手动删除5号文件模拟数据文件丢失
首先关闭数据库
关闭数据库
shutdown immediate;
然后手工删除数据文件
然后我们对5号文件进行恢复
在sqlplus下将数据库启动到mount状态下
startup mount;
然后在RMAN下执行
run {
set newname for datafile 5 to '/u01/app/oracle/oradata/orcl/example01.dbf';
restore database;
switch datafile all;
recover database;
alter database open;
}
我这里目录还是放在原来的位置了,在实际生产中一般数据文件损坏都是因为磁盘损坏了,需要放在其他磁盘目录下
然后就可以将数据文件恢复了
4、在数据库打开的情况下恢复
先退出RMAN
在数据库启动期间,我们突然删除5号文件
然后在RMAN下恢复
进入RMAN执行下列命令
run {
sql 'alter database datafile 5 offline';
restore datafile 5;
recover datafile 5;
sql 'alter database datafile 5 online';
}
这里是对数据文件恢复的命令,如个是表空间的话只需要将datafile改成TABLESPACE,数据文件编号改成表空间名字就可以了,代码样例如下:
run {
sql 'alter tablespace 表空间的名字 offline immediate';
restore tablespace 表空间的名字;
recover tablespace 表空间的名字;
sql 'alter tablespace 表空间的名字 online';
}
然后发现数据文件恢复成功
完结散花