rman技术

                               Rman备份与恢复总结

一.Rman备份
1.1 Rman介绍
1-> Rman信息库可以存放在两个位置
     目标数据库控制文件
     恢复目录(recovery catalog)
控制文件里面存放的记录分为两类
1.可以删除的记录(归档日志文件的历史记录及Rman备份的元数据)
2.不可删除的记录(数据文件、联机日志文件列表等)
如果需要在控制文件中存放新的记录,则可以删除那些可以删除的部分,从而提供可用的空,
注意:如果Rman备份的元数据被删除,Rman的备份的数据就失去了意义,因此Rman备份的元数据很重要。
2->备份的时间间隔
  可以通过设置初始化参数--controlfile_record_keep_time--来决定控制文件中可以删除部分,默认是7天,表示控制文件可以保存近7天的可删除文件记录,如果设置为0,表示不删除历史记录,那么控制文件的增长将会失去控制(空间不够),因此Rman的备份周期不能超过7天。
  --查看时间间隔
  #Sqlplus / as sysDBA
  Sql>Show parameters control

3->控制文件的自动备份
   控制文件的自动备份功能从oracle 9i引入,简化了控制文件的备份
  Rman>configure controlfile autobackup on;
   这里控制文件自动备份时,控制文件的备份路径查看 show all

注意:configure controlfile autobackup format for device type disk to ‘%F’; 路径应为disk磁盘

4->Rman备份的内容和顺序
   A. 数据库数据文件
   B. 归档日志文件
   C. 控制文件
   D. 参数文件
案例:
[oracle@localhost ~]$ rman target / log /tmp/rman_full.log--指定好日志输出文件可以明确备份过程
RMAN> run
2> {
3> allocate channel c1 type disk;
4> allocate channel c2 type disk;
5> backup database filesperset 2 format '/oracle/full_%d_%T_%s_%p';
6> sql 'alter system archive log current';
7> sql 'alter system archive log current';
8> backup archivelog all format '/oracle/arch_%d_%T_%s_%p' delete input;
9> backup current controlfile formate '/oracle/ctl_%d_%T_%s_%p';
10>}

注意:如果是先备份控制文件在备份日志文件,在恢复数据库的时候会发现找不到日志文件
如果是先备份了控制后备份了日志,恢复过程中的操作--(需要有日志输出文件,可以查看到日志文件在哪里)
恢复过程中出现

处理过程。。找到日志文件所在目录
Rman> catalog backuppiece ‘/oracle/arch_..._20140607_6_1’;--注意要将所以的归档日志都catalog 才能正常的恢复数据库,有那些归档日志可以查看日志的输出文件(体现出日志输出文件的重要性)
Rman>recover database;














1.2 Rman备份脚本的书写
1.2.1备份脚本格式图

1.2.2 Rman备份脚本-全库
Export  ORACLE_SID=zytk35
Export  ORACLE_HOME=/ora/app/oracle/product/11.2.0/dbhome_1
Export  PATH=$ORACLE_HOME/binPATH
Rman target  / log /tmp/rman_full.log append <<EOF  --append方式是追加的意思

Run
{
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
----将备份保留7天,过期则自动删除
Allocate channel c1 type disk;--分配磁盘通道,如果压力不大可以多分配,分配的通道越多,对硬盘的I/0压力越大,
Allcoalte channel c2 type disk;
Backup database filesperset 4 format ‘/oracle/full_%d_%T_%s_%p’;
---filesperset备份集文件,多分配通道,备份集少的话可以快速回复
Sql ‘alter system archive log current’;
Backup archivelog all format ‘/oracle/arch_%d_%T_%s_%p’ delete input; --把当前备份好的归档删除
Backup current controlfile format ‘/oracle/ctl_%d_%T_%s_%p’;
delete archivelog until time "sysdate - 7";--删除7天前的归档日志
}
EOF

可以将该脚本编辑成.sh文件,可以直接在linux下执行。


1.2.3备份脚本-归档
Export  ORACLE_SID=zytk35
Export  ORACLE_HOME=/ora/app/oracle/product/11.2./dbhome_1
Export  PATH=$ORACLE_HOME/binPATH
Rman target / log /tmp/rman_arch.log append<<EOF
Run
{
Allocate channel c1 type disk;
Allocate channel c2 type disk;
Sql ‘alter system archive log current’;
Backup archivelog all format ‘/oracle/arch_%d_%T_%s_%p’; delete input;
Backup current controlfile formt ‘/oracle/ctl_%d_%T_%s_%p’;
}
EOF

注意:归档日志满了,可以用下面命令校验归档日志
Rman>crosscheck archivelog all;


1.2.4 oracle冗余策略
指oracle数据库备份时保留下来的备份文件删除策略

1.Recovery window
   哪些文件必须备份?默认值是7
   留下来的备份,必须能够将数据库恢复到指定的时间内的任意一个时刻,指定这个参数为7,则表示保留的备份文件可以将数据库恢复到最近7天中的任何一个时刻。

2.Redundancy
表示要保留的,能够将数据库恢复到最新状态的完整的备份文件的个数。根据策略,不在需要的备份文件则被认为是obsolete。

脚本:
Export ORACLE_SID=zytk35
Export ORACLE_HOME=/ora/app/oracle/product/11.2.0/db_home
Export PATH=$ORACLE_HOME/binPATH
Rman target /log /tmp/rman_delete.log append <<EOF
Run
{
  Allocate channel for maintenance type disk;--指磁盘通道
Allocate channel for maintenance type sbt_tape;--磁带通道
Crosscheck archivelog all;--校验归档日志
Crosschenk backup; --备份归档日志
Delete noprompt obsolete;--删除冗余
EOF
}
删除备份脚本总结:
rman的删除语句如下:
run {
delete noprompt obsolete;
crosscheck backup;
delete noprompt expired backup;
crosscheck archivelog all;
delete noprompt expired archivelog all;
delete noprompt archivelog all completed before 'SYSDATE - 7';
}
1.2.5备份方案
全库备份脚本

run{
    allocate channel c1 type disk;
    allocate channel c2 type disk;
    allocate channel c3 type disk;
    backup full tag 'dbfull' format '/u01/oradata/backup/full%u_%s_%p' database
    include current controlfile;
    sql 'alter system archive log current';
    backup fileaperset 3 format '/u01/oradata/backup/arch%u_%s_%p'
    archivelog all delete input; #备份归档可选,可以单独定期备份
    release channel c1;
    release channel c2;
    release channel c3;
    }




    零级备份脚本



run{
    allocate channel c1 type disk;
    allocate channel c2 type disk;
    allocate channel c3 type disk;
    backup incremental level 0 tag 'db0' format '/u01/oradata/backup/db0%u_%s_%p'
    database skip readonly;
    sql 'alter system archive log current';
    backup fileaperset 3 format '/u01/oradata/backup/arch%u_%s_%p'
    archivelog all delete input; #备份归档可选,可以单独定期备份
    release channel c1;
    release channel c2;
    release channel c3;
    }



    一级备份脚本

    run{
    allocate channel c1 type disk;
    allocate channel c2 type disk;
    allocate channel c3 type disk;
    backup incremental level 1 tag 'db1' format '/u01/oradata/backup/db1%u_%s_%p'
    database skip readonly;
    sql 'alter system archive log current';
    backup fileaperset 3 format '/u01/oradata/backup/arch%u_%s_%p'
    archivelog all delete input; #备份归档可选,可以单独定期备份
    release channel c1;
    release channel c2;
    release channel c3;
    }


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


如果星期二需要恢复的话,只需要1+2,
如果星期四需要恢复的话,只需要1+4,
如果星期五需要恢复的话,只需要1+4+5,
如果星期六需要恢复的话,只需要1+4+5+6.
二.Rman恢复
2.1 自动控制文件备份没有打开--(备份到磁盘上)

Rman target / log /tmp/rman_control.log append <EOF
Run
{
  Allocate channel c1 type disk;
  Restore controlfile ‘/oracle/control_backup_set’;--指定到控制文件可以查看输出归档日志
EOF
}

2.2自动控制文件备份没有打开--(备份到磁带上)
Rman target / log /tmp/rman_control.log append <EOF
Run
{
Allocate channel c1 type sbt_tape;
Restore controlfile from ‘ctl_.......’;指定路径下的控制文件
EOF
}

2.3 自动控制文件备份打开(默认位置)从磁盘恢复
Rman target /
Rman>configure controlfile autobackup on;
Rman>conigure controlfile autobackup format for device type disk to ‘%F’;
数据库恢复:
Rman target /nocatalog
Rman>
Run
{
  Allcoate channel c1 type disk;
  Restore controlfile from auto backup;
}

2.4 自动控制文件备份打开(非默认位置)从磁盘恢复
Rman target /
Rman>configure controlfile autobackup on;
Rman>conigure controlfile autobackup format for device type disk to ‘/oracle/%F’;
数据库恢复:
Rman target /nocatalog
Rman>
Run
{
  conigure controlfile autobackup format for device type disk to ‘/oracle/%F’;
  Restore controlfile from auto backup;

}


详细的各种数据库文件损坏恢复查看《Rman恢复》文档
标签: 暂无标签
小尘灵

写了 1 篇文章,拥有财富 54,被 1 人关注

转播转播 分享分享 分享淘帖
回复

使用道具

P4 | 发表于 2014-8-1 14:57:21
不错 写的很详细
回复

使用道具

P4 | 发表于 2014-8-1 10:12:37
{:soso_e179:}
回复

使用道具

您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

意见
反馈