RMAN学习笔记
RMAN:
如果RMAN连接一个远程数据库,格式:
RMAN>rman target sys/jxsrpv@test
1.列出备份信息,所有的备份信息
RMAN>list backup of database;
2.列出指定表空间的备份信息
RMAN>list copy of tablespace 'SYSTEM';
list backup of tablespace tools;
3.列出指定文件的的备份信息
RMAN>list backup of datafile 'F:\orahome1\oradata\jssweb\jweb.ora';
删除备份:
1.删除陈旧备份
当使用RMAN执行备份操作时,RMAN会根据备份冗余策略确定陈旧备份
RMAN>delete obsolete;
2.删除EXPIRED备份
RMAN>delete expired bakcup;
3.删除EXPIRED副本
RMAN>delete expired copy;
4.删除特定备份集
RMAN>delete backupset 19;
5.删除特定备份片
RMAN>delete backuppiece 'd:\bakup\DEMO_19.bak';
6.删除所有备份集
RMAN>delete backup;
7.删除特定映像副本
RMAN>delete datafilecopy 'd:\backup\DEMO_19.bak';
8.删除所有映像副本
RMAN>delete copy;
三、对数据库进行全备
1.使用bakcup database命令执行备份
RMAN>backup database;
四、备份表空间
RMAN>backup tablespace jweb;
五、备份指定数据文件
SQL>select file_name,file_id,tablespace_name from dba_data_files;
备份指定序号的数据文件:
RMAN>backup datafile n;
RMAN>list backup of datafile n;
六、备份控制文件
1.最简单方式,通过CONFIGURE命令将CONTROLFILE AUTOBACKUP 置为on
RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON;
然后再通过rman做任何备份操作的同时,都会自动对控制文件做备份
2.对编号为1的数据文件,即SYSTEM表空间的数据文件做备份时,RMAN也会自动对控制文件做备份
3.手动执行备份命令
RMAN>backup current controlfile;
4.执行Backup时指定include current controlfile参数
RMAN>backup database include current controlfile;
查看备份的控制文件:
RMAN>list backup of controlfile;
七、备份归档日志文件
1.利用BACKUP ARCHIVELOG ALL;
RMAN>BACKUP ARCHIVELOG ALL;
2.在BACKUP过程中利用PLUS ARCHIVELOG参数备份
RMAN>BACKUP DATABASE PLUS ARCHIVELOG;
RMAN高级篇:
一、建立增量备份
如果数据库运行于归档模式下,那既可以在数据库关闭状态进行,也可以在数据库打开状态进行。
建立增量备份,就是一个参数INCREMENTAL LEVEL=n,在执行BACKUP命令时加上即可,例如:
RMAN>BAKCUP INCREMENTAL LEVEL=0 DATABASE;
例如,建立一个增量级别1的users01.dbf数据文件备份
RMAN>BACKUP INCREMENTAL LEVEL=1 TABLESPACE SYSTEM DATAFILE 'F:\ORAHOME1\ORADATA\JSSWEB\USERS01.DBF';
注:rman默认创建的增量备份是Differential方式,如果要建立cumulative方式的增量备份,在执行BACKUP命令时显示指定即可,例如:
RMAN>BACKUP INCREMENTAL LEVEL=2 CUMULATIVE DATABASE;
二、建立冗余备份
RMAN提供了一个更为谨慎的备份策略:Duplexed方式备份,其实质是在生成备份集的同时,向指定位置生产指定份数(最大不超过4)的备份集复制,以避免在灾难性事故时数据库损坏和备份丢失的情况下导致完全崩溃,提高备份可用性。
RMAN提供了三种方式Duplexed方式备份:
1.在RMAN中执行BACKUP命令时显示指定copies参数
RMAN>BACKKUP COPIES 3 DATABASE;
意义:在全库备份的同时,自动生成当前备份集的2份拷贝到默认备份目录
2.在RUN{}命令块中利用SET BACKUP COPIES命令为该命令块中所有的BACKUP命令设置Duplexed方式,
例如:RMAN>RUN{
>SET BACKUP COPIES2;
>BACKUP DEVICE TYPE DISK FORMAT 'D:\BACKUP1\%U','D:\BACKUP2\%U'
>TABLESPACE USERS,SALES;
}
意义:生成两份备份集,分别存储到d:\backup1和d:\backup2目录
3.通过configure....backup copies命令设置预定义的备份Duplexed方式
四、设置RMAN备份的保存策略
RMAN中提供了两种备份保留策略:基于时间和基于冗余数量
为RMAN设置了备份保留策略之后,RMAN会自动判断哪些备份集或镜像复制文件不必再保留。这些文件将会被标记为"废弃(Obsolete)",可以通过REPORT OBSOLETE命令查看当前处于废弃状态的备份文件,或者通过DELETE OBSOLETE命令删除这些废弃的备份.
RMAN>report obsolete;
1、基于时间的备份保留策略
希望数据库最早能恢复到几天前。比如将恢复时间段设置为7,那么RMAN所保留的备份即是可以保证你将数据库恢复到一周内任何时刻下那些文件。
设置基于时间的备份保留策略可以通过configure命令
RMAN>configure retention policy to recovery window of n days. n为大于0的正整数.
执行该命令后,RMAN将始终保留那些将数据库恢复到n天前的状态时需要用到的备份,比如,恢复时间段被设置为7天,那么各个数据文件的备份必须满足如下条件:
SYSDATE-(SELECT CHECKPOINT_TIME FROM V$DATAFILE)>=7
2、基于冗余数量的备份保留策略
基于冗余数量实质即某个数据文件以各种形式(包括备份集和镜像复制)存在的备份的数量。如果某个数据文件的冗余备份数量超出了指定数量,RMAN将废弃最旧的备份。
基于数量的备份保留策略也是通过configure命令设置。
RMAN>CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS; n为大于0的正整数
或者不采用任何备份保留策略:
RMAN>configure retention policy to none;
五、备份优化
优化满足条件:
.configure backup optimization 参数置为on;
.执行的BACKUP DATABASE或BACKUP ARCHIVELOG命令中带有ALL或LIKE参数
.分配的通道仅使用了一种设备类型,也就是没有同事分配使用sbt与disk的多个通道
打开备份优化设置:
RMAN>CONFIGURE BACKUP OPTIMIZATION ON;
RMAN基础知识补充:
RMAN初始化,参数重置:
RMAN>CONFIGURE RETENTION POLICY CLEAR
CONFIGURE DEVICE TYPE设置并行备份
RMAN支持并行备份与恢复,也可以在配置中指定默认的并行程度。
例:CONFIGURE DEVICE DISK PARALLELISM 2;
指定在以后的备份和恢复中,将采用并行度为2,同时开启2个通道并进行备份与恢复,当然也可以在run中指定通道来决定备份与恢复的并行程度.
并行的数据决定了开启通道的个数。如果指定了通道配置,将采用指定的通道,如果没有指定通道,将采用默认通道配置。
三、RMAN备份相关的动态性能表
.V$ARCHIVED_LOG:包含所有归档重做日志文件的创建情况,备份情况以及其它信息.
.V$BACKUP_CORRUPTION:显示了RMAN在哪些备份集中发现了损坏的数据库
.V$COPY_CORRUPTION:显示哪些镜像复制备份文件已经被损坏
.V$BACKUP_DATAFILE:获取每个数据文件中非空白数据库的数量
.V$BACKUP_REDOLOG:显示备份集中哪些归档重做日志文件
.V$BACKUP_SET:显示已经创建的备份集信息
.V$BACKUP_PIECT:显示已经创建的备份片段的信息
下面的SQL获取正在进行的镜像复制操作信息:
SQL> select sid,serial#,context,sofar,totalwork,round(sofar/totalwork*100,2) "% complete"
2 from v$session_longops
3 where opname like 'RMAN:%'
4 and opname not like 'RMAN:aggregate%';
以下SQL获得RMAN用来完成备份操作的服务进程的SID和PID信息:
SQL> select sid,spid,client_info from v$process p,v$session s
2 where p.addr=s.paddr
3 and client_info like '%id=rman%';
RMAN实例:
1.每天夜里1点执行
2.全备,同时备份控制文件及归档日志文件,目录:D:\backup,完成归档日志文件备份后,自动删除已备份的归档日志
3.备份保留7天,过期自动删除
4.备份操作日志
脚本保存至: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:表示跳过不可读的文件
SKIP OFFLINE:跳过offline的数据文件
SKIP READONLY:跳过那些所在表空间为read-only的数据文件
编写dos批处理:
保存至:E:\oraclescript\backup\database_backup_jssweb.bat,将日志输出到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
设定执行计划。
摘自ITPUB:
1)filesperset是每个备份集中包含的最大文件个数
2)应该生成2个备份集,每个备份集包含50个文件
3)如果没有datafilecopy那一句的话,应该是生成2个备份集,每个备份集包含3个文件
allocate channel 提供备份并发度,若平均文件数<filesperset则会按照 平均文件数/备份集 进行备份,若超过则按照filesperset的数量生成备份集;例如:
1、run {
allocate channel ch1 type disk;
allocate channel ch2 type disk;
backup datafile 3,4,5,6 filesperset 3;
release channel ch1;
release channel ch2;
}
平均数是 4(文件数)/2(channel数) = 2 ,小于filesperset 3,则生成2个备份集,每个备份集包含2个数据文件
2、run {
allocate channel ch1 type disk;
allocate channel ch2 type disk;
backup datafile 3,4,5,6 filesperset 1;
release channel ch1;
release channel ch2;
}
则生成4个备份集,每个包含一个数据文件
END ITPUB;
RMAN通道:
1.手动分配通道
在执行BACKUP、RESTORE、DELETE等需要进行磁盘I/O操作的命令时,可以将他们与ALLOCATE CHANNEL命令放在一个RUN的命令块中,利用ALLOCATE CHANNEL为它们分配通道。
例如:
RUN{
ALLOCATE CHANNEL CH1 DEVICE TYPE DISK FORMAT 'd:\backup\%U';
BACKUP DATAFILE 'f:\orahome1\oradata\jssweb\jweb.ora';
}
2.自动分配通道
如果没有使用手工分配通道,那么RMAN在执行BACKUP等操作I/O的命令时将会使用预定义配置中设置来自动分配通道。
.CONFIGURE DEVICE TYPE ...PARALLELISM
.CONFIGURE DEFAULT DEVICE TYPE
.CONFIGURE CHANNEL DEVICE TYPE
.CONFIGURE CHANNEL n DEVICE TYPE
二、RMAN备份类型
利用RMAN进行备份时,可以通过三种方式对RMAN的备份进行分类
.完全备份(Full Backup)或增量备份(Incremental Backup)
.打开备份(Open Backup)或关闭备份(Closed Backup)
.一致备份(Consistent Backup)与不一致备份(Inconsistent Backup)
三、增量备份的工作机制
仅备份那些反生了"变化"的数据块。RMAN有两种:Differential方式和Cumulative方式
演练RMAN恢复
.oracle数据库的恢复实际上包含了两个概念:数据库修复(RESTORE)与数据库恢复(RECOVER)
一、对数据库进行完全介质恢复
1、启动数据库到加载状态
RMAN>SHUTDOWN IMMEDIATE;
RMAN>STARTUP MOUNT;
2、执行恢复操作(分两部进行)
RMAN>RESTORE DATABASE;
RMAN>RECOVER DATABASE DELETE ARCHIVELOGS SKIP TABLESPACE TEMP;
注:DELETE ARCHIVELOGS和SKIP TABLESPACE两个参数是可选择的
DELETE ARCHIVELOGS:表示RMAN将在完成恢复过程后自动删除那些在恢复过程中修复的归档日志文件
SKIP TABLESPACE:跳过指定表空间,比如临时表
3、打开数据库
RMAN>ALTER DATABASE OPEN;
二、恢复表空间
1.启动数据库到加载状态
RMAN>shutdown immediate;
RMAN>startup mount;
2.进行恢复操作,在恢复之前,如果需要被恢复的表空间未处于脱机状态,需要通过alter tablespace...offline语句将其置为脱机:
RMAN>SQL 'ALTER TABLESPACE jweb OFFLINE IMMEDIATE';
RMAN>RESTORE TABLESPACE jweb;
RMAN>RECOVER TABLESPACE jweb;
RMAN>SQL 'ALTER TABLESPACE jweb ONLINE';
3.打开数据库
RMAN>ALTER DATABASE OPEN;
三、恢复数据文件
恢复表空间实际就是恢复其所对应的数据文件(一个表空间可能对应多个数据文件)
1.启动数据库到加载状态
RMAN>SHUTDOWN IMMEDIATE;
RMAN>STARTUP MOUNT;
2.进行恢复操作,使数据文件处于脱机,也可以用数据文件号代替:
RMAN>SQL 'ALTER DATABASE DATAFILE 10 OFFLINE';
RMAN>RESTORE DATAFILE 10;
RMAN>RECOVER DATAFILE 10;
RMAN>SQL 'ALTER DATABASE DATAFILE 10 ONLINE';
3、打开数据库
RMAN>ALTER DATABASE OPEN;
附个SQL:用来查询数据文件、临时文件与表空间对应及数据文件序号:
select ts.tablespace_name,df.file_name,df.file_id,tf.file_name from dba_tablespaces ts,dba_datafile df,dba_temp_files tf
where ts.tablespace_name=df.tablespace_name(+)
and ts.tablespace_name=tf.tablespace_name(+)
实例恢复控制文件:
在应用备份恢复时,必须知道目标数据库的DBID
DBID NAME
---------- ---------
2110641229 TEST
a.关闭数据库
b.删除数据库的控制文件
c.设置dbid RMAN>set dbid 2110641229
d.恢复控制文件 RMAN>RMAN> RESTORE CONTROLFILE FROM 'F:\oracle\oraclescript\backup\C-2110641229-20130704-01'; 如果设置了自动备份控制文件,也可以:restore controlfile from autobackup;
e.RMAN>sql 'alter database mount';
f.RMAN>restore database;
g.RMAN>recover database;
h.RMAN>sql 'alter database open resetlogs';
posted on 2013-07-04 13:32 newmanzhang 阅读(615) 评论(0) 编辑 收藏 举报