参数 值 说明
-----------------------------------------------------------------
target 加引号的字符串 目标数据库连接字符串
目录 加引号的字符串 恢复目录的连接字符串
nocatalog 无 如果已指定, 则没有恢复目录
cmdfile 加引号的字符串 输入命令文件的名称
log 加引号的字符串 输出消息日志文件的名称
跟踪 加引号的字符串 输出调试信息日志文件的名称
append 无 如果已指定, 日志将以附加模式打开
debug 可选参数 激活调试
msgno 无 对全部消息显示 RMAN-nnnn 前缀
send 加引号的字符串 将命令发送到介质管理器
pipe 字符串 管道名称的构建块
timeout 整数 等待管道输入的秒数
checksyntax 无 检查命令文件中的语法错误
--连接本地数据库
D:\>SET ORACLE_SID=ORCL(本地单实例可以省略这一步)
D:\>RMAN TARGET /
C:\>rman target '/ as sysdba'
--连接远程数据库
rman target sys/change_on_install@testdb
--写日志
rman target / log d:/logs/rman_log.txt
--RMAN中重启数据库
RMAN> SHUTDOWN IMMEDIATE
RMAN> STARTUP
命令为3种 ,独立命令,作业命令,SQL命令
--RMAN中执行sql,select不出结果
SQL 'SELECT SYSDATE FROM DUAL';
SQL 'CREATE TABLE T AS SELECT * FROM DUAL';
SQL 'SELECT OWNER,TABLE_NAME FROM USER_TABLES';
--列出RMAN所有参数
RMAN> SHOW ALL;
RMAN> SHOW DEVICE TYPE;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\S
NCFORCL.ORA'; # default
--LIST命令
RMAN> list backup;
RMAN> LIST BACKUP OF DATABASE;
RMAN> LIST COPY OF TABLESPACE 'SYSTEM';
--DELETE删除命令
RMAN> delete obsolete;
RMAN> delete expired backup;
RMAN> delete expired copy;
RMAN> delete backupset 19;
RMAN> delete backuppiece 'd:/backup/DEMO_19.bak';
RMAN> delete backup;
RMAN> delete datafilecopy 'd:/backup/DEMO_19.bak';
RMAN> delete copy;
RMAN> delete archivelog all delete input;
RMAN> delete backupset 22 format = ''d:/backup/%u.bak'' delete input;
--RMAN备份形式
1、镜像复制(Image Copies)
2、备份集(Backup Sets)
--RMAN命令执行方式(4种)
方式1:
RMAN>backup database;
方式2:
RMAN>RUN{
···
}
方式3:
C:/>rman TARGET / @backup_db.rman
RMAN> @backup_db.rman
RMAN> RUN { @backup_db.rman }
方式4:
C:/>rman cmdfile=backup_db.rman
--备份整个数据库
RMAN> BACKUP DATABASE; --存放的目录D:\oracle\product\10.2.0\flash_recovery_area\ORCL\BACKUPSET\2014_04_19
RMAN> BACKUP DATABASE FORMAT 'D:/BACKUP/%U'; --FORMAT命名规则
RMAN> list backup of database;
--备份表空间
RMAN> BACKUP TABLESPACE TS_LHJ01;
RMAN> LIST BACKUP OF TABLESPACE TS_LHJ01;
--备份数据文件
select file_name,file_id,tablespace_name from dba_data_files
RMAN> BACKUP DATAFILE 6,7,8,9,10;
RMAN> LIST BACKUP OF DATAFILE 9;
--备份控制文件
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> BACKUP CURRENT CONTROLFILE;
RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE; / BACKUP DATAFILE 4 INCLUDE CURRENT CONTROLFILE;
RMAN> LIST BACKUP OF CONTROLFILE;
RMAN> SQL 'ALTER DATABASE BACKUP CONTROLFILE TO ''/tmp/wilson.bin'''
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,这个快照可以通过如下配置:
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/BACKUP/SNCFJSSWEB.ORA';
--备份参数文件spfile
BACKUP SPFILE FORMAT '/U01/BACKUP/SP_%U';
--备份归档文件
RMAN> BACKUP ARCHIVELOG ALL;
RMAN> BACKUP DATABASE PLUS ARCHIVELOG; --通过plus archivelog方式备份时,rman会自动对当前的archivelog进行归档
RMAN> LIST BACKUP OF ARCHIVELOG ALL;
--PLUS ARCHIVELOG执行的步骤
1>.运行ALTER SYSTEM ARCHIVE LOG CURRENT语句对当前redolog进行归档。
2>.执行BACKUP ARCHIVELOG ALL命令备份所有已归档日志。
3>.执行BACKUP命令对指定项进行备份。
4>.再次运行ALTER SYSTEM ARCHIVE LOG CURRENT对当前redolog归档。
5>.对新生成的尚未备份的归档文件进行备份。
如果数据库运行于不归档模式下,只能在数据库干净关闭的情况下才能进行一致性的增量备份;
如果数据库运行于归档模式下,那即可以在数据库关闭状态进行,也可以在数据库打开状态进行备份。
BACKUP ARCHIVELOG ALL FORMAT 'XXX/XXX/ar_%t_%s_%p' DELETE ALL INPUT;
BACKUP ARCHIVELOG FROM TIME 'SYSDATA-15' UNTIL TIME 'SYSDATE-7';
BACKUP ARCHIVELOG SEQUENCE BETWEEN 99 AND 199 THREAD 1 DELETE INPUT;
--增量备份
RMAN> BACKUP INCREMENTAL LEVEL=0 DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL=1 TABLESPACE TS_LHJ01;
RMAN> BACKUP INCREMENTAL LEVEL=1 TABLESPACE SYSTEM DATAFILE 'F:/ORAHOME1/ORADATA/JSSWEB/USERS01.DBF';
RMAN> BACKUP INCREMENTAL LEVEL=2 CUMULATIVE DATABASE;
RMAN> BACKUP INCREMENTAL LEVEL=2 CUMULATIVE TABLESPACE TS_LHJ01;
注:Rman默认创建的增量备份是Differential方式,如果要建立Cumulative方式的增量备份,在执行BACKUP命令时显式指定即可
--Differential(差异增量)与Cumulative(累积增量)的区别
RMAN 中的Differential(差异增量)与Cumulative(累积增量)两种方式间的区别是什么?
差异增量每次都是从上一次增量备份为起点到目前的数据变化
累积增量每次都是从全备开始为起点一直到目前数据的变化
一般的情况来说 差异用的多
--Duplexed方式备份(双工备份)
在生成备份集的同时,向指定位置生成指定份数(最大不超过4份)的备份集复制
方法1:
RMAN> BACKUP COPIES 3 DATABASE;--上述命令将会在全库备份的同时,自动生成当前备份集的2份拷贝到默认备份目录。
测试时出错:ORA-19806: 在恢复区内不能进行双重备份
解决方法:
只要换一个地方或换一个备份文件名字备份就可以了,在执行的命令后加上 format (df_%d_%U)
U表示不重复的意思
BACKUP COPIES 2 DATAFILE 5 FORMAT '/XX/XX1/D_%U','/XX/XX2/D_%U';
方法2:
RUN{
SET BACKUP COPIES 2;
BACKUP DEVICE TYPE DISK FORMAT 'D:\oracle\BACKUP1\%U','D:\oracle\BACKUP2\%U'
TABLESPACE TS_LHJ01,USERS;
}
--上述命令将生成两份备份集,分别存储到D:\oracle\BACKUP1和D:\oracle\BACKUP2目录。
format (df_%d_%U)
方法3:
3、通过CONFIGURE ..... BACKUP COPIES命令设置预定义的备份Duplexed方式。
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;
RMAN> CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE disk TO 2;
RMAN> CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE disk TO 2;
上述命令将disk设置上数据文件与归档文件的拷备数量设置为2,当再执行BACKUP DATABASE备份时,即会自动生成2份数据文件的备份集。
仅适用于数据文件与归档重做日志文件和备份,并且,只有在使用自动分配的通道时才能够使用CONFIGURE ... BACKUP COPIES命令设置的配置。
RMAN支持的IO设备类型有两种:磁盘(DISK)和磁带(SBT),默认情况下为磁盘。
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE DEFAULT DEVICE TYPE TO SBT;
在这里需要注意的一点是:如果IO设备发生变化,相关配置项也需要修改。例如:
RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
--备份策略
--删除备份集report xx,delete xx
RMAN> report obsolete; --列出过时的备份文件,包括日志文件,控制文件,数据文件
RMAN> delete obsolete;
RMAN 保留策略将应用于该命令
将 RMAN 保留策略设置为冗余 1
已废弃的备份和副本报表
注意:
如果被判断为废弃的备份是一个单独数据文件的镜像复制,那么在执行DELETE命令时将直接删除这个镜像复制文件。
如果被判断为废弃的备份是一个备份集中的一部分,则必须等到整个备份集中所有其它文件都被废弃之后,才能删除这个备份集。
RMAN> report schema; --列出所有数据文件
RMAN> list backup of datafile 'D:\ORACLE\PRODUCT\10.2.0\ORADATA\ORCL\SYSTEM01.DBF';
--删除失败时处理办法
RMAN> CROSSCHECK BACKUPSET 5;
RMAN> DELETE BACKUPSET 5;
RMAN中提供了两种备份保留策略:基于时间,和基于冗余数量
--两种备份策略:基于时间和冗余数量
--保留7天
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; --SYSDATE-(SELECT CHECKPOINT_TIME FROM V$DATAFILE)>=7
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
RMAN> CONFIGURE RETENTION POLICY TO NONE;
RMAN> CONFIGURE RETENTION POLICY CLEAR; --恢复默认值
--备份优化,能不备份的就不备份
l CONFIGURE BACKUP OPTIMIZATION参数置为on;
2 执行的BACKUP DATABASE或BACKUP ARCHIVELOG命令中带有ALL或LIKE参数。
3 分配的通道仅使用了一种设备类型,也就是没有同时分配使用sbt与disk的多个通道。
(sbt与disk就像一条是公路,一条是海路,而通道则相当于你选择了走公路之后,还得选择是走北三环,还是走北五环,还是两条一块走)
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN是如何判断要备份的文件是否需要被优化呢?
假如某库在上午9点被执行过一次全库备份,等下午3点再次执行全库备份时,备份的文件没有变动而且也已经被备份过时,
才会跳过这部分文件。所以理论上备份优化仅对于只读表空间或offline表空间起作用。当然对于已经备份过的archivelog文件,它也会跳过
--配置并行度
CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
指定在以后的备份与恢复中,将采用并行度为2,同时开启2个通道进行备份与恢复,当然也可以在run中指定通道来决定备份与恢复的并行程度。
并行的数目决定了开启通道的个数。如果指定了通道配置,将采用指定的通道,如果没有指定通道,将采用默认通道配置。
默认情况下,自动分配通道的并行度为1,如果你通过设置PARALLELISM设置了并行通道为2,那么在run块中,
如果你没有单独通过ALLOCATE CHANNEL命令指定通道,它会默认使用2条并行通道,
如果你在run命令块中指定了数个ALLOCATE CHANNEL,那么rman在执行备份命令时会以你设置的channel为准,而不管configure中配置了多少个并行通道。
需要注意的一点是,在backup命令中有一个FILESPERSET参数,该参数是指rman建立的每个备份集中所能包含的备份片段(即磁盘文件)的最大数,
该参数默认值为64,如果在执行backup命令时没有指定该参数值,那么rman会仅使用第一个通道来执行备份,其它通道将处于空闲状态。
关于通道数与FILESPERSET值之间也有一个大小关系,逻辑稍显复杂这些就不多废话了,总之一条,filesperset值不要小于你设定的通道数。
CONFIGURE DATAFILE BACKUP COPIES 设置备份文件冗余度
CONFIGURE MAXSETSIZE 配置备份集的最大尺寸,该配置限制通道上备份集的最大尺寸。单位支持bytes,K,M,G。默认值是unlimited。
--动态性能视图
V$ARCHIVED_LOG:本视图包含了所有归档重做日志文件的创建情况,备份情况以及其他信息。
V$BACKUP_CORRUPTION:这个视图显示了RMAN在哪些备份集中发现了损坏的数据坏。
在你使用BACKUP VALIDATE命令对备份集进行检查时如果发现了损坏的数据块,RMAN将在这个视图中写入记录。
V$COPY_CORRUPTIO:本视图显示了哪些镜像复制备份文件已经被损坏。
V$BACKUP_DATAFILE:本视图通常用来获取每个数据文件中非空白数据块的数量,从而帮助你创建出大小基本相等的备份集。
另外,在视图中也包含了数据文件中损坏的数据块的信息。
V$BACKUP_REDOLOG:本视图显示了在现有的备份集中饮食有哪些归档重做日志文件。
V$BACKUP_SET:本视图显示了已经创建的备份集的信息。
V$BACKUP_PIECT:本视图显示了已经创建的备份片段的信息。
--查rman完成进度
Select sid,
serial#,
context,
sofar,
totalwork,
round(sofar / totalwork * 100, 2) "% Complete"
From v$session_longops
where opname like 'RMAN:%'
and opname not like 'RMAN:aggregate%'
--完成备份操作的服务进程的SID与SPID信息
Select sid, spid, client_info
from v$process p, v$session s
where p.addr = s.paddr
and client_info like '%id=rman%'
--批处理脚本!!
1、每天夜间1点执行;
2、数据库全备,同时备份控制文件及归档日志文件,备份文件保存至:D:/backup/目录下,并在完成归档日志文件备份后,自动删除已备份的归档日志;
3、备份保留7天,过期则自动删除;
4、保留操作日志备查;
以Windows环境为例(linux环境下与此基本类似,rman的脚本您甚至连改都不用改,就把调用rman脚本的命令行改改就行了):
1、编写rman批处理文件
保存至:E:/oracleScript/backup/database_backup_jssweb.rman
RUN {
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:/backup/%F';
ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT 'd:/backup/%U';
BACKUP DATABASE SKIP INACCESSIBLE FILESPERSET 10
PLUS ARCHIVELOG FILESPERSET 20
DELETE ALL INPUT;
RELEASE CHANNEL CH1;
}
ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE DISK;
CROSSCHECK BACKUPSET;
DELETE NOPROMPT OBSOLETE;
SKIP选项 说明
SKIP INACCESSIBLE:表示跳过不可读的文件。我们知道一些offline的数据文件只要存在于磁盘上就仍然可被读取,但是可能有些文件已经被删除或移到它处造成不可读,加上这个参数就会跳过这些文件;
SKIP OFFLINE:跳过offline的数据文件;
SKIP READONLY:跳过那些所在表空间为read-only的数据文件;
注意哟,你从网上搜索rman备份脚本,可能有些脚本中会出现一项:sql 'alter system archive log current';这句是让archivelog日志归档,实际上完全没必要,我们在第三节的时候讲过,通过plus archivelog方式备份时,rman会自动对当前的archivelog进行归档。
2、编写dos批处理
保存至:E:/oracleScript/backup/database_backup_jssweb.bat
设定要备份的数据库sid为jssweb,将日志按照日期输出到E:/oracleScript/backup/logs/目录。
set oracle_sid=jssweb
rman target / msglog E:/oracleScript/backup/logs/%date:~0,10%.log cmdfile=E:/oracleScript/backup/database_backup_jssweb.rman
3、设定执行计划
控制面板->任务计划中添加计划,运行E:/oracleScript/backup/database_backup_jssweb.bat,设定日程安排中的时间。
参考:http://blog.csdn.net/junsisi/article/details/1788490