RMAN总结

一、概述
二、RMAN的自动配置
三、用RMAN备份
四、还原与恢复
五、RMAN的管理
六、恢复目录[@more@]

本文章内容摘自别人的学习笔记

一、概述
1、备份对象
RMAN 可以备份除了联机日志,pfile,密码文件之外的数据文件,控制文件,归档日志,spfile
2、恢复目录
用来保存备份与恢复信息的一个数据库,不建议创建在目标数据库,利用恢复目录可
以同时管理多个目标数据库,存储更多的备份信息,可以存储备份脚本。
3、登录
>rman
>connect target user/userpass@sid;--要求用户有sysdba权限
二、RMAN的自动配置
1、配置备份策略保持
分为两个保持策略,一个是时间策略,决定至少有一个备份能恢复到指定的日期,一个
冗余策略,规定至少有几个冗余的备份。
命令格式:CONFIGURE RETENTION POLICY TO ...;
eg.
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 5 DAYS;
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
CONFIGURE RETENTION POLICY TO NONE;
CONFIGURE RETENTION POLICY CLEAR;
在第一个策略中,是保证至少有一个备份能恢复到Sysdate-5 的时间点上,之前的备份
将标记为Obsolete。第二个策略中说明至少需要有三个冗余的备份存在,如果多余三个备份
以上的备份将标记为冗余。NONE 可以把使备份保持策略失效,Clear 将恢复默认的保持策
2、通道配置与自动通道分配
通过CONFIGURE 配置自动分配的通道,而且可以通过数字来指定不同的通道分配情况。
eg.
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/U01/ORACLE/BACKUP/%U‘
CONFIGURE CHANNEL n DEVICE TYPE DISK FORMAT '/U01/ORACLE/BACKUP/%U‘;--n代表通道名称
Run{
allocate channel cq type disk format='/u01/backup/%u.bak'
……
}
以下是通道的一些特性
读的速率限制
Allocate channel …… rate = integer
最大备份片大小限制
Allocate channel …… maxpiecesize = integer
最大并发打开文件数(默认16)
Allocate channel …… maxopenfile = integer
3、控制文件自动备份
控制文件的自动备份发生在任何backup或者copy命令之后,或者任何数据库的结构改变之
设置控制文件的自动备份:CONFIGURE CONTROLFILE AUTOBACKUP ON;
配置控制文件的备份路径与格式:CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR TYPE DISK TO '%F';
配置控制文件的快照:CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/9.0.2/dbs/snapcf_U02.f';
4、设置并行备份
RMAN支持并行备份与恢复,也可以在配置中指定默认的并行程度。如
CONFIGURE DEVICE TYPE DISK PARALLELISM 4;
5、配置默认IO 设备类型
IO 设备类型可以是磁盘或者磁带,在默认的情况下是磁盘,可以通过如下的命令进行重新配置。
CONFIGURE DEFAULT DEVICE TYPE TO DISK;
CONFIGURE DEFAULT DEVICE TYPE TO SBT;
6、配置多个备份的拷贝数目
如果觉得单个备份集不放心,可以设置多个备份集的拷贝,如
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
如果指定了多个拷贝,可以在通道配置或者备份配置中指定多个拷贝地点
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/u01/backup/%U', '/u02/backup/%U';
RMAN>backup datafile n format '/u01/backup/%U', '/u02/backup/%U';
7、备份优化
可以在配置中设置备份的优化,如
CONFIGURE BACKUP OPTIMIZATION ON;
8、备份文件的格式
备份文件可以自定义各种各样的格式,如下
%c 备份片的拷贝数
%d 数据库名称
%D 位于该月中的第几天 (DD)
%M 位于该年中的第几月 (MM)
%F 一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,
其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序列
%n 数据库名称,向右填补到最大八个字符
%u 一个八个字符的名称代表备份集与创建时间
%p 该备份集中的备份片号,从1 开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c
%s 备份集的号
%t 备份集时间戳
%T 年月日格式(YYYYMMDD)
三、用RMAN备份
1、文件拷贝
run {
allocate channel d1 type disk;
allocate channel d2 type disk;
allocate channel d3 type disk;
copy # first
datafile 1 to '$HOME/prd1.dbf',
datafile 2 to '$HOME/prd2.dbf';
copy # second
datafile 3 to '$HOME/prd3.dbf';
sql 'alter system archive log current';
}
2、备份与备份集
RMAN 的常规备份是产生只有RMAN 才能识别的备份集,所以,除了copy 命令之外
的其他备份,都是RMAN 产生的备份集以及对应的备份片。
a、备份
backup
filesperset 2
format 'df_%t_%s_%p'
database;
b、多镜像备份
SET BACKUP COPIES 3;
BACKUP DATAFILE 7 FORMAT '/tmp/%U','?/oradata/%U','?/%U';
c、备份归档
RMAN>sql ‘alter system archive log current’;
RMAN>backup archivelog all delete input;
RMAN> backup archivelog from time '01-jan-00' until time '30-jun-00';
RMAN> backup archivelog like 'oracle/arc/dest/log%';
RMAN> backup archivelog all;
RMAN> backup archivelog from logseq 20 until logseq 50 thread 1;
RMAN> backup archivelog from scn 1 until scn 9999;
在RAC环境中,因为数据库是共享的,所以可以连接到一个实例就可以备份整个数据库,
但是,因为归档日志可以备份在本地,所以RAC归档日志的备份就变的复杂一些,我们可
以通过连接到两个实例的通道来备份两个实例的归档日志。
run{
ALLOCATE CHANNEL node_c1 DEVICE TYPE DISK CONNECT 'sys/pass@dbin1';
ALLOCATE CHANNEL node_c2 DEVICE TYPE DISK CONNECT 'sys/pass@dbin2';
sql 'ALTER SYSTEM ARCHIVE LOG CURRENT';
backup archivelog all delete input format '/u01/dbbak/%U_%s.bak' filesperset = 5;
}
3、常见备份参数
a、Keep参数可以长期的保持特殊的备份或者拷贝,让它们不受默认备份保持策略的影响
如果想让该备份永久有效,可以使用FOREVER参数。
BACKUP TABLESPACE SAMPLE KEEP FOREVER NOLOGS;
b、Tag参数指明了备份集的标志,可以达到30 个字符长度
在Oracle 92 版本以后,RMAN 自动提供一个TAG,格式为TAGYYYYMMDDTHHMMSS
此参数设置是为了方便恢复,如:Restore database from tag=’tag name’;
4、增量备份
以下是零级备份的例子
backup incremental level 0 database;
一级差异增量例子
backup incremental level 1 database;
一级累计增量例子
backup incremental level 1 cumulative database;

注意:Level 0、1、2等级说明
Level 0 级是各增量备份的基础
分两种情况,incremental的和cumulitive的,前者备份跟自己同级或比自己级别低的,后者只备份比自己级别低的
前者:level1备份上一次level1或level0以来的变化,level2备份上一次level2或level1或level0以来的变化
后者:level1备份上一次level0以来的变化,level2备份上一次level1或level0以来的变化


5、备份检查
我们可以通过Validate命令来检查是否能备份,如数据文件是否存在,是否存在坏块不
能被备份,如:
BACKUP VALIDATE DATABASE;
BACKUP VALIDATE DATABASE ARCHIVELOG ALL;
6、重新启动备份
RMAN> BACKUP NOT BACKED UP SINCE TIME 'SYSDATE-14'
2> DATABASE PLUS ARCHIVELOG;
7、RMAN 动态性能视图
以下是与RMAN 备份有关系的一些动态性能视图,信息是从控制文件中获取的。
V$ARCHIVED_LOG
V$BACKUP_CORRUPTION
V$COPY_CORRUPTION
V$BACKUP_DATAFILE
V$BACKUP_REDOLOG
V$BACKUP_SET
V$BACKUP_PIECE
V$BACKUP_DEVICE
V$CONTROLFILE_RECORD_SECTION
这里还有一个视图,可以大致的监控到RMAN备份进行的程度。如通过如下的SQL脚本,
将获得备份的进度。
SQL> SELECT SID, SERIAL#, CONTEXT, SOFAR, TOTALWORK,
2 ROUND(SOFAR/TOTALWORK*100,2) "%_COMPLETE"
3 FROM V$SESSION_LONGOPS
4 WHERE OPNAME LIKE 'RMAN%'
5 AND OPNAME NOT LIKE '%aggregate%'
6 AND TOTALWORK != 0
7 AND SOFAR <> TOTALWORK;
四、还原与恢复
1、常规还原与恢复
简单的
RMAN>restore database;
RMAN>recover database;
表空间
RMAN> SQL "ALTER TABLESPACE tools OFFLINE IMMEDIATE";
RMAN> RESTORE TABLESPACE tools;
RMAN> RECOVER TABLESPACE tools;
RMAN> SQL "ALTER TABLESPACE tools ONLINE";
数据文件
RMAN>RESTORE DATAFILE 1 FROM TAG=’tag name’
基于时间点恢复
RMAN> RUN {
2> ALLOCATE CHANNEL c1 TYPE DISK;
3> ALLOCATE CHANNEL c2 TYPE DISK;
4> SET UNTIL TIME = '2002-12-09:11:44:00';
5> RESTORE DATABASE;
6> RECOVER DATABASE;
7> ALTER DATABASE OPEN RESETLOGS; }
基于日志文件恢复
RMAN> RUN {
2> SET UNTIL SEQUENCE 120 THREAD 1;
3> ALTER DATABASE MOUNT;
4> RESTORE DATABASE;
5> RECOVER DATABASE; # recovers through log 119
6> ALTER DATABASE OPEN RESESTLOGS;
7> }
恢复数据文件到一个新的位置
SET NEWNAME FOR datafile
'/u01/oradata/tools01.dbf' TO '/tmp/tools01.dbf';
RESTORE datafile '/u01/oradata/tools01.dbf';
SWITCH DATAFILE ALL;
恢复控制文件,需要启动到nomount 下
Restore controlfile from ‘file name’
Restore controlfile from autobackup
Restore controlfile from tag=‘……’
恢复spfile,需要启动到nomount 下
Restore controlfile from autobackup
Restore controlfile from ‘file name’
2、特殊情况下的恢复
调用dbms_backup_restore包
3、还原检查与恢复测试
a、检查
RMAN> RESTORE DATABASE VALIDATE;
RMAN> VALIDATE BACKUPSET 218;
b、测试
SQL>RECOVER TABLESPACE sales TEST;
SQL>RECOVER DATABASE UNTIL CANCEL TEST;
4、块级别的恢复
块的错误信息保存在V$DATABASE_BLOCK_CORRUPTION,用如下命令恢复该视图中列出的坏块:
RMAN> BLOCKRECOVER CORRUPTION LIST
2> RESTORE UNTIL TIME 'sysdate – 10';
备份的坏块信息保存在
V$BACKUP_CORRUPTION
V$COPY_CORRUPTION
用如下的命令来恢复坏块。
BLOCKRECOVER datafile 2 BLOCK 12, 13 datafile 7 BLOCK 5, 98, 99 datafile 9 BLOCK 19;
BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 FROM TAG
"weekly_backup";
BLOCKRECOVER TABLESPACE SYSTEM DBA 4194404, 4194405 RESTORE UNTIL TIME
'SYSDATE-2';
5、数据库复制
RUN
{
ALLOCATE AUXILIARY CHANNEL newdb1 DEVICE TYPE sbt;
DUPLICATE TARGET DATABASE TO newdb
DB_FILE_NAME_CONVERT=('/h1/oracle/dbs/trgt/','/h2/oracle/oradata/newdb/')
UNTIL TIME 'SYSDATE-1' # specifies incomplete recovery
SKIP TABLESPACE cmwlite, drsys, example # skip desired tablespaces
PFILE = ?/dbs/initNEWDB.ora
lOGFILE
GROUP 1 ('?/oradata/newdb/redo01_1.f',
'?/oradata/newdb/redo01_2.f') SIZE 200K,
GROUP 2 ('?/oradata/newdb/redo02_1.f',
'?/oradata/newdb/redo02_2.f') SIZE 200K
GROUP 3 ('?/oradata/newdb/redo03_1.f',
'?/oradata/newdb/redo03_2.f') SIZE 200K REUSE;
}
6、利用RMAN创建备用数据库
以下详细的介绍了这一个过程。
1、创建备用参数文件与密码文件,启动备用数据库到nomount下
2、备份主数据库与备用控制文件以及所有归档
RMAN> Backup Database;
RMAN> Backup current controlfile for standby;
RMAN> sql "Alter System Archive Log Current";
RMAN> Backup filesperset 10 ArchiveLog all delete input;
3、拷贝所有的备份到备用数据库相同路径下
4、配置主数据库到备用数据库的连接
5、启动RMAN
rman target / auxiliary sys/change_on_install@STANDBY
17
6,开始创建备用数据库
RMAN> duplicate target database for standby dorecover nofilenamecheck;
整个过程包括了备用控制文件的创建,启动到Mount 下,参数文件中指定的路径转换与数
据文件的还原,归档日志的还原等。
7、最后恢复日志并启动到管理恢复模式下。
SQL> recover standby database;
SQL> alter database recover managed standby database disconnect;
五、RMAN的管理
1、Report命令
Report 命令可以检测那些文件需要备份,那些备份能被删除以及那些文件能不能获得的信息
RMAN> Report schema;--报告数据库的所有能备份数据文件对象
RMAN> REPORT SCHEMA AT TIME 'SYSDATE-14';
RMAN> REPORT SCHEMA AT SCN 1000;
RMAN> REPORT SCHEMA AT SEQUENCE 100 THREAD 1;
报告需要备份的数据文件
Report need backup [ redundancy | days | incremental n];
报告过期了的数据文件或者不可用的备份与拷贝
Report obsolete [orphan]
报告不能获得或者不能到达的数据文件信息
Report unrecoverable [database]
2、List命令
List命令一般用来查看备份与拷贝信息,如
查看备份信息
List backup
查看备份汇总信息
List backup summary
查看文件拷贝的信息
List copy
查看具体的备份信息
List backup of datafile ‘file name’
list incarnation of database;
3、Crosscheck命令
检查磁盘或磁带上的备份或拷贝是否正确,并更新备份或者拷贝的状态
如果不正确,将标记为expired(过期)
Crosscheck backup;
Crosscheck archivelog all;
Delete [noprompt] expired backup命令删除过期备份
也可以用List来查看相应的报告
LIST EXPIRED BACKUP;
LIST EXPIRED BACKUP SUMMARY;
4、Delete 命令
Delete命令可以用来删除指定的备份或者用来删除废弃或者是过期的备份集
如删除指定的备份集与备份片
RMAN> DELETE BACKUPPIECE 101;
RMAN> DELETE CONTROLFILECOPY '/tmp/control01.ctl';
RMAN> DELETE BACKUP OF TABLESPACE users DEVICE TYPE sbt;
删除过期或者废弃了的备份
RMAN> DELETE EXPIRED BACKUP;
RMAN> DELETE NOPROMPT OBSOLETE;
RMAN> DELETE OBSOLETE REDUNDANCY = 3;
RMAN> DELETE OBSOLETE RECOVERY WINDOW OF 7 DAYS;
删除指定的备份归档
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 300;
六、恢复目录
1、创建恢复目录
SQL> create user RMAN identified by RMAN
2 temporary tablespace TEMP
3 default tablespace RCVCAT
4 quota unlimited on RCVCAT;
SQL> grant recovery_catalog_owner to RMAN;
RMAN> create catalog
RMAN> register database;
恢复目录可以采用如下命令升级与删除
RMAN> UPGRADE CATALOG;
RMAN> DROP CATALOG;
2、恢复目录管理
恢复目录支持如下的命令
{CREATE|UPGRADE|DROP} CATALOG
{CREATE|DELETE|REPLACE|PRINT} SCRIPT
LIST INCARNATION
REGISTER DATABASE
REPORT SCHEMA AT TIME
RESET DATABASE
RESYNC CATALOG
a、Resync命令
Resync可以同步数据库与恢复目录之间的信息,在实际情况下,rman一般可以自动同步。
在如下情况下需要同步
·数据库物理结构的改变
·数据文件增加或者是改变大小
·表空间删除
·回滚段的创建与删除
·每产生10个归档日志
b、Reset 命令
目标数据库resetlogs 之后,需要重新设置恢复目录。Reset命令就用来重新设置恢复目录。
3、恢复目录视图
恢复目录本身有一组视图,用于存放目标数据库与备份信息,如
恢复目录的相关视图
RC_DATABASE
RC_DATAFILE
RC_STORED_SCRIPT
RC_STORED_SCRIPT_LINE
RC_TABLESPACE
可以通过如下命令来查看相关信息
select * from rc_database;
4、存储脚本
存储脚本
RMAN> creata script level0backp{
backup
incremental level 0
format '/u01/db01/backup/%U'
filesperset 5
database plus archivelog delete input;
sql 'alter database archive log current';
}
执行脚本
RMAN> run {execute script Level0backup;}
更新脚本
RMAN> replace script level0backup{
……
}
删除脚本
RMAN> delete script Level0backup;
查看脚本
RMAN> print script level0backup;

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/594892/viewspace-934211/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/594892/viewspace-934211/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值