今天就跟大家聊聊有关基于rman的恢复操作有哪些呢,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
针对RMAN进行的备份,下面从几个方面利用RMAN进行一些恢复操作。
恢复
1. 对数据库进行完全介质恢复
1.1进入rman命令行
rman |
1.2开始备份
backup |
1.3一致性停止数据库
shutdown |
1.4 删除所有的数据文件
rm |
开始恢复:
1.5 利用rman启动数据库到mount状态
RMAN> |
1.6 数据库修复
RMAN> |
1.7 数据库恢复
RMAN> |
可以添加其他参数:
recover database delete archivelog;用于删除在恢复过程中产生的归档日志文件
recover database skip tablespace
temp;指定再恢复过程中跳过临时表空间,默认是不恢 复临时表空间的。
recover database delete archivelog
maxsize 100m;用于指定再恢复过程中限制自动产生 的归档大小为100m,如果超过这个大小就会被删除在循环继续使用来恢复。
1.8 启动数据库到open状态
RMAN>alter |
2. 表空间的恢复
在有备份的基础上我们先模拟破坏表空间,然后将其恢复
2.1 破坏users表空间
echo |
2.2 切换日志
这时我们查询表空间users中的表不一定报错,因为在内存中还有记录,查询到的
是内存中的信息,需要我们手动切换日志
SQL>alter |
多执行几次,保证切换完成
2.3 检查表空间是否可用
SQL>select ERROR at line 1: ORA-00376:file 4 cannot be read at this ORA-01110: data file 4: |
这时发现users表空间已经不能使用
开始恢复
2.4 将表空间offline
RMAN> |
2.5修复
RMAN>restore |
2.6 恢复
RMAN>recover |
2.7 将表空间online
RMAN>SQL |
2.8 检验是否恢复
SQL>select |
可以查询到数据,表明表空间已经恢复
3. 数据文件的恢复
3.1 将数据文件offline
RMAN> |
3.2修复
RMAN>restore |
3.3恢复
RMAN>recover |
3.4将数据文件online
RMAN>SQL |
RMAN> SQL ‘alter database datafile 4 RMAN>run { RMAN>SQL ‘alter database datafile 4 online’; |
4.1进入rman命令行
SQL>rman |
4.2备份归档
RMAN>backup |
4.3 检查备份
RMAN>List
BS Key ——- ———- ———– ———— 91 BP Key: Piece
List of Thrd Seq Low SCN Low Time —- ——- 1 311 1 312 1 313 1 314 1 315 1 316 1 317 |
通过查看,备份了从311-318的archivelog,并保存在备份集中,删除了 /oracle/u01/app/oracle/路径下的归档日志文件.
4.4 恢复归档
RMAN>restore |
查看log_archive_dest_1路径,发现已经恢复出311-315的归档文件
4.4指定归档恢复路径
通过在run脚本中来制定恢复的路径
RMAN>run set restore set restore } |
可以指定多个路径。
5. 控制文件的恢复
5.1 开启控制文件自动备份
RMAN>CONFIGURE |
5.2备份控制文件
RMAN>backup |
5.3 设置DBID
没有了控制文件,数据库只能启动到nomount状态,启动之前需要设置DBID
RMAN>set |
怎样获取DBID呢:
a) 创建自动备份时未改名的备份文件包含;
b) 用rman连接时
c) Rman备份日志
d) 数据库v$database视图
5.4 恢复控制文件
RMAN> |
如果没有指定路径会恢复到参数文件control_files的路径下
指定路径:
RMAN> |
5.5 找不到恢复路径的解决办法
在自动备份控制文件前改过备份路径,比如改到/oracle/u01/app/oracle/backup
RMAN>CONFIGURE TO '/oracle/u01/app/oracle/backup/%F'; |
备份表空间
RMAN> |
因为开启了自动备份控制文件,备份表空间也会备份控制文件,查询
RMAN>list |
这时提示有控制文件的备份。
这时记录dbid=1324770912
SQL>shutdown SQL>startup SQL>rman RMAN>set RMAN>restore
提示报错: Starting restore at 28-FEB-13 using target database control file instead of allocated channel: ORA_DISK_1 channel ORA_DISK_1: sid=540 devtype=DISK
recovery area destination: database name (or database unique name) used for channel ORA_DISK_1: no autobackups found in the channel ORA_DISK_1: looking for autobackup on day: channel ORA_DISK_1: looking for autobackup on day: channel ORA_DISK_1: looking for autobackup on day: channel ORA_DISK_1: looking for autobackup on day: channel ORA_DISK_1: looking for autobackup on day: channel ORA_DISK_1: looking for autobackup on day: channel ORA_DISK_1: looking for autobackup on day: channel ORA_DISK_1: no autobackup in 7 days found RMAN-00571: RMAN-00569: =============== ERROR MESSAGE STACK RMAN-00571: RMAN-03002: failure of restore command at 02/28/2013 RMAN-06172: no autobackup found or |
因为:在默认路径下找不到自动备份的控制文件进一步产rman参数
RMAN>show |
发现自动备份控制文件的路径并不是/oracle/u01/app/oracle/backup,而是默认路径
针对windows下默认路径为:$ORACLE_HOME/database
而linux系统下默认路径为:$ORACLE_HOME/dbs
那么为什么在我们之前设置了rman参数,这里又会改变呢,因为我们利用的 configure设置的参数,这个改变是保存在控制文件中的,所以会找不到路径。
针对这种情况有两种方法:
a) 将备份的文件拷贝到所需要默认的路径下:$ORACLE_HOME/dbs
b) 重新设置自动备份控制文件路径
set |
这里为什么采用set来设置呢,因为现在数据库是nomount状态,不能使用 configure来设置。
5.6 如果数据库是非归档数据库
修改自动备份控制文件路径时也不要使用configure来执行,因为此命令是永久生效,默认是保存到控制文件的,这样导致在恢复时找不到控制文件,使用set命令来设置修改自动备份控制文件路径。
从备份集中恢复
5.7 通过备份集中的备份恢复控制文件
需要设置dbid
启动数据库到nomount状态
恢复控制文件
restore '/oracle/u01/app/oracle/backup/c-1324770912-20130301-08'; |
这样即使更改过默认参数,只要指定备份集正确就可以恢复。
注意:
再恢复控制文件后启动数据库步骤:
a) 启动数据库到mount
SQL>alter database mount; |
b) 恢复数据库
SQL>recover
auto Additional information: 3 |
在执行auto后,会自动应用归档,但是当前日志文件还没有归档,所以需要指定redo.log来应用剩下的日志从而恢复数据库
SQL>recover
/oracle/u01/app/oracle/oradata/orcl/redo01.log Media recovery complete.
|
提示:Media recovery complete.恢复完成
c) 重做日志文件
SQL>alter database open resetlogs; |
参数文件在备份的时候即使不手工备份也会自动完成备份,一般不手动备份。 恢复类似于控制文件的恢复. 6.1 利用自动备份恢复 a) 设置dbid b) 启动到nomount状态 c) 恢复 RMAN>restore spfile from autobackup; 6.2 指定恢复文件 也可以通过手工指定的备份的控制文件进行恢复 RMAN>restore spfile from ‘/oracle/u01/app/oracle/backup/ c-1324770912-20130301-0a’; 6.3 恢复到制定目标地址 RMAN>restore spfile to ‘/home/oracle/spfiletmp.ora’ from ‘/oracle/u01/app/oracle/backup/ c-1324770912-20130301-0a’;
|
看完上述内容,你们对基于rman的恢复操作有哪些呢有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注云搜网行业资讯频道,感谢大家的支持。