rman的一些简单总结
1:控制文件自动备份
用 show all 查看当前的配置,配置控制文件自动备份的命令如下:
RMAN> configure controlfile autobackup on;
在开启了控制文件自动备份之后,oracle会在数据库结构改变时(增加、删除表空间及数据文件等),自动备份控制文件及spfile文件
当我们手动创建一个tt表空间后,此时可以在 alert.log 中找到如下信息
+++++++++++++++++++++++++++++++
Control autobackup written to DISK device
handle 'C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_AREA\WIN10G\AUTOBACKUP\2012_11_01\O1_MF_S_798220671_894BVZ89_.BKP'
Completed: create tablespace TT datafile 'C:\ORADATA\WIN10G\tt.dbf' size 100m
++++++++++++++++++++++++++++++++
在这里要注意,如果你的数据库版本是oracle 10g ,并且开启了 闪回恢复区,那么控制文件的备份保存在自动备份的恢复目录中,
目录位置为 $ORACLE_HOME\flash_recovery_area\WIN10G\AUTOBACKUP ; 如果数据库是9i、或者10g没有开启闪回恢复区,那么
自动备份保存在 $ORACLE_HOME\database下 ,这些信息仍可以从alert.log 中得到
++++++++++++++++++++++++++++++++++
Fri Nov 02 09:00:01 2012
Starting control autobackup
Control autobackup written to DISK device
handle 'C:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\C-605134997-20121102-00'
+++++++++++++++++++++++++++++++++
在这里可以看到 自动备份的控制文件名为 C-605134997-20121102-0 (其中 C 为控制文件、605134997为dbid、20121102为时间戳、00为序号)
因为这些信息存储在控制文件中,可以将控制文件转储出来看下控制文件是如何记录这部分信息的
SQL> alter session set events 'immediate trace name controlf level 8';
然后根据pid、spid 到 udump中找到相关trace文件。
2:从自动备份恢复spfile和控制文件(以下测试db为10.2.0.1)
在数据库的三种文件完好的情况下,不论db处于哪种状态,通常都是先恢复到一个临时目录下,以免覆盖当前文件,确认后再转移到缺省目录下面;
如果自动备份有多个,恢复的时候使用最新的autobackup
RMAN> restore spfile to 'C:\spfile.ora' from autobackup;
RMAN> restore controlfile to 'C:\control01.ctl' from autobackup;
如果db都不能nomount 了,那么此时可以临时编辑一个pfile文件启动实例,然后进行spfile恢复,
restore命令后加上备份集的名称
3:rmnan的备份策略
基于冗余(redundancy):定义一个数字n用于标示rman为每个文件保留至少n个不同的备份
RMAN> configure retention policy to redundancy 1;
基于恢复窗口(recovery window):定义一个时间长度,以便在定义的时间长度内可以进行基于任何时间点的恢复
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 14 DAYS;
当备份超过了备份策略设置的规则时,备份会标记为废弃(obsolete),但这只是在rman目录中标记为丢弃(obsolete),
其状态依然为 available; 要查看标记为obsolete状态的备份,可以使用 report obsolete 命令 ,只有使用
delete obsolete 才会真正删除丢弃的备份
RMAN> report obsolete;
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为冗余 1
已废弃的备份和副本报表
类型 关键字 完成时间 文件名/句柄
-------------------- ------ ------------------ --------------------
控制文件副本 3 02-11月-12 C:\CONTROL01.CTL
备份集 22 02-11月-12
备份段 22 02-11月-12 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_A
REA\WIN10G\BACKUPSET\2012_11_02\O1_MF_NNNDF_TAG20121102T105520_896FJS89_.BKP
备份集 23 02-11月-12
备份段 23 02-11月-12 C:\ORACLE\PRODUCT\10.2.0\FLASH_RECOVERY_A
REA\WIN10G\AUTOBACKUP\2012_11_02\O1_MF_S_798288936_896FK8PG_.BKP
RMAN> delete noprompt obsolete;
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为冗余 1
。。。。。。。。。。。。。。
如果想恢复某一个设置到默认状态,使用如下命令
RMAN> configure retention policy clear;
4:归档日志维护及crosscheck命令
当不小心手动删除某些备份后,rman将无法找到这些文件,但是这些备份的文件依然在rman的记录中存在,
因此需要使用crosscheck命令去磁盘上检查这些文件是否存在,如果不再存在,rman会将文件标记为
expired ,然后这些信息就可以被清除。
RMAN> crosscheck backup;
RMAN> delete expired backup;
RMAN> crosscheck archivelog all;
RMAN> delete noprompt expired archivelog all;
RMAN> list backup of archivelog from sequence 12;
RMAN> delete noprompt archivelog until sequence = 12;
RMAN> list backup of archivelog until time 'sysdate-2';
RMAN> delete noprompt archivelog until time 'sysdate-1';
RMAN> list backupset of database tag='HOT_DB_BK_LEVEL0';
5:resetlogs 和 noresetlogs方式的含义
-- Below are two sets of SQL statements, each of which creates a new
-- control file and uses it to open the database. The first set opens
-- the database with the NORESETLOGS option and should be used only if
-- the current versions of all online logs are available. The second
-- set opens the database with the RESETLOGS option and should be used
-- if online logs are unavailable.
6:rman的镜像copy功能
rman镜像拷贝是单个数据文件、归档日志或控制文件的额外拷贝,不以rman的格式存储。
镜像拷贝的文件和执行操作系统级别拷贝的文件一样,以数据文件的固有格式存储,rman
进行重建或恢复时,可以使用镜像拷贝。
拷贝(copy)的控制文件是当前控制文件的一个原样副本,可以直接用于启动数据库,
而rman的控制文件备份则需要通过rman进行恢复使用。
当发出restore命令时,缺省的rman恢复一个数据文件或控制文件的镜像拷贝到原来的位置,
镜像拷贝优先于备份集被采用,因为使用备份集进行恢复时,会有额外的开销。并且,如果
需要使用镜像拷贝恢复数据文件或控制文件,无须把文件copy到原来的位置,rman中的switch命
令可以通知数据库使用当前位置的文件,这类似于alter database rename file命令的功能 。
RMAN> backup current controlfile format 'C:\control%s.ctl'; //控制文件备份集
RMAN> backup as copy current controlfile format 'C:\control%s.ctl'; // 控制文件镜像拷贝
使用镜像拷贝命令来备份整个数据库
RMAN> backup as copy tag 'win10g_copy' database;
也可以使用rman的镜像拷贝命令备份单个或多个数据文件
RMAN> copy datafile 6 to 'C:\tt_copy.dbf';
RMAN> run{
copy datafile 1 to 'C:\system01.dbf',
current controlfile to 'C:\control01.dbf',
datafile 6 to 'C:\tt01.dbf';
}
可以通过list copy命令显示数据库中的镜像拷贝,
如果不小心删除了镜像拷贝(copy),那么首先需要进行
RMAN> crosscheck copy;
RMAN> delete copy;
假设由于硬件故障导致数据文件tt.dbf损坏,这时需要在run中通过
set newname命令 指定文件恢复到不同的位置
RMAN> startup mount
RMAN> run{
set newname for datafile 6 to 'C:\oradata\tt.dbf';
restore datafile 6;
switch datafile all;
recover datafile 6;
}
正在执行命令: SET NEWNAME
启动 restore 于 07-11月-12
分配的通道: ORA_DISK_1
通道 ORA_DISK_1: sid=157 devtype=DISK
通道 ORA_DISK_1: 正在恢复数据文件00006
输入数据文件副本 recid=24 stamp=798719925 文件名=C:\ORACLE\PRODUCT\10.2.0\FLASH_
RECOVERY_AREA\WIN10G\DATAFILE\O1_MF_TT_89MLFN5C_.DBF
数据文件 00006 的恢复目标: C:\ORADATA\TT.DBF
通道 ORA_DISK_1: 已复制数据文件 00006 的数据文件副本
输出文件名=C:\ORADATA\TT.DBF recid=27 stamp=798721262
完成 restore 于 07-11月-12
数据文件 6 已转换成数据文件副本
输入数据文件副本 recid=28 stamp=798721264 文件名=C:\ORADATA\TT.DBF
启动 recover 于 07-11月-12
使用通道 ORA_DISK_1
正在开始介质的恢复
介质恢复完成, 用时: 00:00:00
完成 recover 于 07-11月-12
RMAN>
RMAN> alter database open;
数据库已打开
验证备份的有效性,可以使用
RMAN> restore validate database;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/24862808/viewspace-748532/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/24862808/viewspace-748532/