RMAN(catalog)

五个级别:0(完全),1,2,3,4,5.级别越大,备份的数据块相对越小

1.增量备份

   例如:周日---0(完全)

          周一---2(周一变化的所有数据块)

          周二---2(周二变化的所有数据块)

          周三---1(周一到周三间变化的所有数据块)

          周四---2(周四变化的所有数据块)

          周五---2(周五变化的所有数据块)

           周六---2(周六变化的所有数据块)

    backup incremental level 0 format='d:\backup\%d_%s.dbf' tablespace users;

    backup incremental level 2 format='d:\backup\%d_%s.dbf' tablespace users;

    backup incremental level 1 format='d:\backup\%d_%s.dbf' tablespace users;

2.累积备份

   例如:周日---0(完全)

          周一---2(周一变化的所有数据块)

          周二---2(周日到周二变化的所有数据块)

          周三---1(周日到周三间变化的所有数据块)

          周四---2(周三到周四变化的所有数据块)

          周五---2(周三到周五变化的所有数据块)

           周六---2(周三到周六变化的所有数据块)

     backup incremental level 0 format='d:\backup\%d_%s.dbf' tablespace users;

    backup incremental level 2 format='d:\backup\%d_%s.dbf' tablespace users;

    backup incremental level 2 cumulative format='d:\backup\%d_%s.dbf' tablespace users;

     backup incremental level 1 format='d:\backup\%d_%s.dbf' tablespace users;

-----------------------------------------------------------------------------

准备工作:

创建恢复目录
1、在目录数据库中创建恢复目录所用表空间
SQL> create tablespace rmants datafile 'c:\oracle\oradata\cc\rmants.ora' size 20M ;
表空间已创建。
2、在目录数据库中创建RMAN 用户并授权
SQL> create user rman identified by rman default tablespace rmants temporary tablespace temp quota
unlimited on rmants;
用户已创建
SQL> grant recovery_catalog_owner to rman ;
授权成功。
3、在目录数据库中创建恢复目录
C:\>rman catalog rman/rman
恢复管理器:版本8.1.7.0.0 - Production
RMAN-06008:连接到恢复目录数据库
RMAN-06428:未安装恢复目录
RMAN>create catalog tablespace rmants;
RMAN-06431:恢复目录已创建
4、注册目标数据库到恢复目录
注意哦,这里我的目标数据库使用的服务名称是rman,意思为要使用RMAN 进行备份的数据库,而目录
数据库使用的服务名称是CC。
C:\>rman target sys/sys@rman
恢复管理器:版本8.1.7.0.0 - Production
RMAN-06005:连接到目标数据库:RMAN (DBID=1303772234)
RMAN>connect catalog rman/rman@cc
RMAN-06008:连接到恢复目录数据库
RMAN>register database;
RMAN-03022:正在编译命令:register
RMAN-03023:正在执行命令:register
RMAN-08006:注册在恢复目录中的数据库
RMAN-03023:正在执行命令:full resync
RMAN-08002:正在启动全部恢复目录的resync
RMAN-08004:完成全部resync
好了,到此为止前面的准备工作都做好了,下面就可以使用RMAN 来进行备份和恢复了。

每半年做一个数据库的全备份(包含只读表空间)

每个月做一次零级备份(不包含只读表空间)

每个星期做一次一级备份

每天做一个二级备份

数据库全备份脚本:

run {

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

backup full tag 'dbfull' format '/backup/ncfc/full%d_%p_%t' database ;

sql 'alter system archive log current' ;

backup format /backup/ncfc/dbL0/dbL0%d_%p_%t.arc' filesperset 5 archivelog all delete input;

release channel c1;

release channel c2;

release channel c3;

}

零级备份脚本(只读表空间除外)

run {

allocate channel c1 type disk maxpiecesize =;

allocate channel c2 type disk maxpiecesize =;

allocate channel c3 type disk maxpiecesize =;

backup incremental level 0 filesperset 10 tag 'dbL0' format '/backup/ncfc/dbL0/dbL0%u_%p_%c ' database skip readonly;

sql 'alter system archive log current' ;

backup format '/backup/ncfc/dbL0/arch%u_%p_%c.arc' filesperset 5 archivelog from time "sysdate-1" all;

release channel c1;

release channel c2;

release channel c3;

}

一级备份脚本

run {

allocate channel c1 type disk maxpiecesize =;

allocate channel c2 type disk maxpiecesize =;

allocate channel c3 type disk maxpiecesize =;

backup incremental level 1 filesperset 5 tag 'dbL1' format '/backup/ncfc/dbL1/dbL1%d_%p_%t ' ddatabase skip readonly;

sql 'alter system archive log current' ;

backup format '/backup/ncfc/dbL1/dbL1%d_%p_%t.arc' filesperset 5 archivelog from time "sysdate-1" all;

release channel c1;

release channel c2;

release channel c3;

}

二级备份脚本

run {

allocate channel c1 type disk maxpiecesize =;

allocate channel c2 type disk maxpiecesize =;

allocate channel c3 type disk maxpiecesize =;

backup incremental level 2 filesperset 5 tag 'dbL2' format '/backup/ncfc/dbL2/dbL2%u_%p_%c' ddatabase skip readonly;

sql 'alter system archive log current' ;

backup format '/backup/ncfc/dbL2/dbL2%d_%p_%t.arc' filesperset 5 archivelog from time "sysdate-1" all;

release channel c1;

release channel c2;

release channel c3;

}

归档文件备份脚本

run {

    allocate channel dev1 type disk maxpiecesize =;

    allocate channel dev2 type disk maxpiecesize =;

    allocate channel dev3 type disk maxpiecesize =;

    sql 'alter system archive log current' ;

    backup format '/backup/ncfc/arc/arch%u_%p_%c ' archivelog from time "sysdate-1" all;

    release channel dev1;

    release channel dev2;

    release channel dev3;

}

表空间备份脚本(以users表空间为例)

run {

allocate channel c1 type disk;

allocate channel c2 type disk;

allocate channel c3 type disk;

backup tag 'tabsp' format '/backup/ncfc/tabsp/tabsp%u_%p_%c' tablespace users;

sql 'alter system archive log current' ;

backup format 'e:\oradata\%d_%p_%t.arc' filesperset 5 archivelog all delete input;

release channel c1;

release channel c2;

release channel c3;

}

则每天所需要备份的数据量只有一天的改变量。而做恢复时最多只要恢复当月的一个零级备份+三个一级备份+6个二级备份+当天的归档文件。如果不能接受这样的恢复时间,就只能够减少零级备份之间的时间间隔(如可以每个星期做一个零级备份,这样恢复时最多只需要恢复一个星期的数据量)。

备份CATALOG数据库(数据库逻辑输出)

exp pafile=exp.dat

其中exp.dat如下

userid=rman/rman

file=rmanexp.dmp

------------------------------------------

用filesperset控制备份集的尺寸
当指定filesperset参数时,rman比较filesperset与自动计算出来的值(对每个已分配通道的文件数目)并取其中较小的那个值来保证所有的通道被使用。
如果指定或者通过组合backupSpec语句暗示的文件数目比filesperset要大,那么rman创建多个备份集来维护正确的速率(ratio);
如果没有指定filesperset,rman比较计算出来的值(文件数目除以已分配的通道)和默认值64,并取其中较小的那个值来保证所有通道可用。
Rman通常尝试创建足够的备份集以使所有已分配的通道有事可做。一个例外是通道比要备份的文件还要多

posted on 2010-01-15 15:01  dhj  阅读(147)  评论(0编辑  收藏  举报

导航