ITPub博客

首页 > 数据库 > Oracle > rman备份的基本知识

rman备份的基本知识

原创 Oracle 作者:we6100 时间:2014-04-05 14:58:34 0 删除 编辑
1、 检查数据库模式
SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     95
Current log sequence           97

制定归档路径,并修改数据库归档模式

   startup mount
   alter database archivelog
   alter database open

2、连接到target数据库
rman target /  (如果数据库没有起来,也可要直接在rman命令下用startup进行启动数据库)

3、常用的备份命令
 备份全库:
RMAN> backup database plus archivelog delete input;     (备份全库及控制文件、服务器参数文件与所有归档的重做日志,并删除旧的归档日志)
备份表空间:
RMAN> backup tablespace system plus archivelog delete input;     (备份指定表空间及归档的重做日志,并删除旧的归档日志,如果我们不知道tablespace的名字,在rman中,可要通过report schema命令,来查看表空间的名字)
备份归档日志:
RMAN> backup archivelog all delete input;     (备份归档日志,并删除旧的归档日志)
在允许的情况下,修改并行通道,加速备份
RMAN> configure device type disk parallelism 3;   --将并行度改为3

 查看备份的具体信息
RMAN>list backupset;
备份保留策略:
RMAN> SHOW RETENTION POLICY;(查看已经配置的备份策略)
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default基于冗余的:一份冗余
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 30 DAYS;    (将策略修改成基于恢复窗口的:30天)
不在备份保留策略里面的  则被视为obsolete
使用report obsolete来查看已废弃的备份
使用delete noprompt obsolete删除废弃的备份
查看备份的具体信息:
RMAN> list backupset;

4、0级,1级,2级增量备份
概念:全备份和0级增量备份几乎是一样的。唯一的区别,0级增量备份能作为增量备份的基础,而全备份不能作为增量备份的基础。

1级增量备份只存储那些自从上次0级或完全备份以来改变了的数据块,如果在此之前已有1级增量备份,
则1级增量备份存储那些自从上次1级备份以来改变了的数据块。
同理2级增量备份只存储那些自从上次0级和1级备份以来改变了的数据块,如果之前有2级增量备份,
则2级增量备份存储那些自从上次2级备份以来改变了的数据块。

备份脚本
0级脚本
vi /home/oracle/rmanbak/shell/level0.sql
   crosscheck backup;//检查备份
   delete noprompt expired backup;//删除失效备份
   delete noprompt obsolete;//删除过期备份
   run{
    allocate channel cha1 type disk;
    allocate channel cha2 type disk;
    backup
    incremental level  0 database
    format '/home/oracle/rmanbak/inc0_%u_%T' (u表示唯一的ID,大T是日期,小t是时间)
    include current controlfile   //备份控制文件
    tag level0 ;//标签自定义
    sql 'alter system archive log current';   //备份归档日志前,切换下归档日志
    backup archivelog all format '/home/oracle/rmanbak/log_%u_%T';
    release channel cha1;
    release channel cha2;
   }

同理1级、2级备份的脚本写好level1,level2的脚本

自动备份
crontab
使用oracle用户执行crontab -e
[oracle@redhat4 ~]$ crontab -e

分  时  日 月 星期(0代表星期天)
 0    1   *  *    0    rman target / msglog=/home/oracle/rmanbak/log/bak0.log cmdfile=/home/oracle/rmanbak/shell/level0.sql(星期天凌晨1点oracle会来执行备份命令)
 0      *  *    1    rman target / msglog=/home/oracle/rmanbak/log/bak2.log cmdfile=/home/oracle/rmanbak/shell/level2.sql
 0    1   *  *    2    rman target / msglog=/home/oracle/rmanbak/log/bak2.log cmdfile=/home/oracle/rmanbak/shell/level2.sql
 0      *  *    3    rman target / msglog=/home/oracle/rmanbak/log/bak1.log cmdfile=/home/oracle/rmanbak/shell/level1.sql
 0      *  *    4    rman target / msglog=/home/oracle/rmanbak/log/bak2.log cmdfile=/home/oracle/rmanbak/shell/level2.sql
 0      *  *    5    rman target / msglog=/home/oracle/rmanbak/log/bak2.log cmdfile=/home/oracle/rmanbak/shell/level2.sql
 0      *  *    6    rman target / msglog=/home/oracle/rmanbak/log/bak2.log cmdfile=/home/oracle/rmanbak/shell/level2.sql


以上就是RMAN一周典型备份方案

1.星期天凌晨      -level 0 (全备份)
2.星期一凌晨      -level 2 
3.星期二凌晨      -level 2 
4.星期三凌晨      -level 1 
5.星期四凌晨      -level 2 
6.星期五凌晨      -level 2
7.星期六凌晨      -level 2 

 
恢复:
如果星期二需要恢复的话,只需要星期天+星期一+星期二
如果星期四需要恢复的话,只需要0+1+4,
如果星期五需要恢复的话,只需要0+1+4+5,
如果星期六需要恢复的话,只需要0+1+4+5+6.


最后启动crontab ,启动crontab的命令:
root> service crond restart

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

请登录后发表评论 登录
全部评论

注册时间:2014-02-23

  • 博文量
    72
  • 访问量
    270654