日期:2014-05-16  浏览次数:20415 次

Oracle 备份之RMAN使用
RMAN

RMAN只能在Archive log模式下进行,因为备份模式只能是热备份。 
--经测试,非归档模式在mount 层次下,noarchive也可以备份。但open状态是不可以备份活动数据文件的。
RMAN只会备份有用的数据块。
通过以下方式连接目标库:

C:\Users\anker>rman

RMAN> connect target sys/system@orcl

连接到目标数据库: ORCL (DBID=1325028359)

备份整个数据库 backup database;


备份完成的文件存放在
%db_recovery_file_dest%\ORA_SID\BACKUPSET\YYYY-MM-DD\*.bkp
备份的内容包括:
数据文件(不包括临时文件)
控制文件
参数文件(SPFILE)


--不会备份重做日志文件,因为此三个文件在open时是活动的。所以备份在线重做日志文件没有意义。

在备份时打印的文字描述,分配的通道对应Oracle的一个session,也就是一个进程/线程在执行。
使用run命令,实现多个功能顺序执行。
run
{
allocate channel cl device type disk;--备份的内容放在磁盘上
allocate channel c2 device type disk;--第二个通道也放在磁盘
backup as compressed backupset database;--以压缩的方式备份
}

当多个通道同时备份数据文件时,各个数据文件的scn会不一致。
打印的日志如下:
可以看出,此次指定的通道算是私有通道,执行之前先把上次的公有通道释放掉。两个私有通道并行执行。通道的执行数量要与磁盘驱动器(磁盘写头)相等,若大于也没有用处。
备份完成之后,私有通道也会释放掉。


释放的通道: ORA_DISK_1
分配的通道: cl
通道 cl: sid=158 devtype=DISK
分配的通道: c2
通道 c2: sid=139 devtype=DISK
启动 backup 于 23-6月 -13
通道 cl: 启动压缩的全部数据文件备份集
通道 cl: 正在指定备份集中的数据文件
输入数据文件 fno=00003 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSAUX01.DBF
输入数据文件 fno=00004 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\USERS01.DBF
输入数据文件 fno=00002 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\UNDOTBS01.DBF
通道 cl: 正在启动段 1 于 23-6月 -13
通道 c2: 启动压缩的全部数据文件备份集
通道 c2: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
输入数据文件 fno=00005 name=F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF
通道 c2: 正在启动段 1 于 23-6月 -13
通道 cl: 已完成段 1 于 23-6月 -13
释放的通道: cl
释放的通道: c2

--查看备份集
list backup;

--以下是打印的结果,以下信息来自于控制文件
BS Key关键字指的Oracle本身产生的ID,标示备份集。
Type指的是全量备份(Full)还是增量备份。
LV指的增量备份的级别,全量(FUll)默认为空
Device Type指的备份机的存放位置
Elapsed Tie 指备份时花费的时间。
Completion TIme 指备份集完成的时间点。
BP Key指的备份片的关键字,一个备份集可以包含多个备份片
Status指的备份片状态
Compressed指是否备份了。
Tag: 用于标示被备份是否是一致性生产的。恢复的时候会用到tag
Piece Name指备份文件的名称
Ckp SCN指最后checkpoint的 SCN号
Ckp TIme 最后的checkpoint SCN对应的时间
NAME 备份文件名称

BS Key  Type LV Size       Device Type Elapsed Time Completion Time
------- ---- -- ---------- ----------- ------------ -------------------
28      Full    104.72M    DISK        00:00:42     2013/06/23 21:28:27
        BP Key: 28   Status: AVAILABLE  Compressed: YES  Tag: TAG20130623T212745
        Piece Name: F:\ORACLE\PRODUCT\10.2.0\DB_1\FLASH_RECOVERY_AREA\ORCL\BACKUPSET\2013_06_23\O1_MF_NNNDF_TAG20130623T212745_8WF
  List of Datafiles in backup set 28
  File LV Type Ckp SCN    Ckp Time            Name
  ---- -- ---- ---------- ------------------- ----
  1       Full 12713208   2013/06/23 21:27:46 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF
  5       Full 12713208   2013/06/23 21:27:46 F:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\EXAMPLE01.DBF


--清掉已物理删除的备份集

crosscheck backupset;
delete expired backupset;

--清楚已物理删除的archivelog
crosscheck archivelog all;
delete expired archivelog all;



--修改rman中,日期显示格式
export NLS_DATE_FORMAT='yyyymmdd hh24:mi:ss';
set nls_date_format=yyyy/mm/dd hh24:mi:ss--Windows环境设置(此处注意不能有引号)


--设置英文模式格式,修改的是环境变量,注册表中也包含此信息
set nls_lang=american_

--备份恢复的过程
--查看备份的文件
list backup of database;--备份的数据文件
list backup of controlfile;--备份的数据文件
list backup of datafile;--备份的数据文件

RMAN> restore preview database;--预览oracle指定的恢复文件,默认是使用最近的备份文件。只是针对数据文件
RMAN> restore database;--恢复文件,注意若备份时包括多个数据文件,会全部重新覆盖掉。不会恢复控制文件及spfile等。
RMAN> recover database; --利用归档日志恢复数据,即可以打开数据库,需要注意的地方。rman恢复会优先使用重做归档日志。

RMAN> restore database from tag xxxxxxx;--指定恢复用的备份集文件

在rman中执行sql,但不返回结果。
sql'select * from table T';


--备份表空间
backup tablespace users,DW
--备份数据文件
backup datafile 4,3
--备份控制文件,current指的controlfile的状态。
backup current controlfile;
--备份spfile
backup spfile;
--备份归档日志
backup archivelog all;--备份所有归档日志。每次备份时,会先切换并归档下当前日志。
backup archivelog all not backed up;--备份尚未备份的日志文件。会跳过已备份的文件。
backup archivelog all delete all;--备份后,删除重做归档日志。

--rman 不能备份临时文件,不能备份在线重做日志文件。

--删除所有的备份文件
delete backup

delete noprompt backup;--无提示确认直接删除所有的文件

删除备份集

delete backupset 19;--BS KEY




show all;--显