oracle11gRAC环境使用RMAN增量备份方案
转摘:http://blog.itpub.net/29819001/viewspace-1320977/
[oracle@zx ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on Thu Oct 16 18:20:57 2014
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: zx (DBID=2731354802)
RMAN> show all;
using target database control file instead of recovery catalog
RMAN configuration parameters for database with db_unique_name zx are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_zx1.f'; # default
show all
开始设置备份策略
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
RMAN> CONFIGURE BACKUP OPTIMIZATION ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/controlfile/%F';
修改后的
RMAN> show all;
RMAN configuration parameters for database with db_unique_name zx are:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/backup/rman/controlfile/%F';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_zx1.f'; # default
show all
开启块跟踪
[oracle@zx ~]$ sqlplus / as sysdba
SQL> alter database enable block change tracking using file '+RCY1' ;
查看
SQL> col filename for a50
SQL> select * from v$block_change_tracking;
STATUS FILENAME BYTES
---------- -------------------------------------------------- ----------
ENABLED +RCY1/zx/changetracking/ctf.298.861133721 11599872
*****************************************************************************
增量备份
只备份从上次备份发生变化的块。
1)增量备份首先做全备:
0,1,2,3,4,5
2)增量备份的好处是加快备份时间。
3)oracle增量备份有两种:1.差异增量备份 2.累计增量备份
4)0级备份就是全被,做其他级别的备份前必须有0级,否则系统会做0级备份。
5)差异增量备份:backup incremental level 0 format
只要等于或小于自己的级别,前面的备份就可以作为备份的起点。
日 一 二 三 四 五 六 日
0 2 2 1 2 2 2 0
全 一 一 三 一 一 一 全
周一周二只备份一天就行了,但周三需要把周一二三的都备一遍,因为它级别比前面的备份低,周四就只备一天就行了,周日又要做全备了。
比如周三早晨挂了,需要周日周一周二才能恢复到周三早晨,但如果周四早晨就只需要周日,周三就能恢复。周六挂需要周日,周三,周四,周五四个备份集。
6)累计增量备份:backup incremental level 0 cumulative format
只看备份级别比自己低的。
日 一 二 三 四 五 六 日
0 2 2 1 2 2 2 0
全 一 二 三 一 二 三 全
周日全备,周一备份一天的,周二备份2天的。周三备份周一二三的。
周四只备份一天的,周五备份两天的,周六备份3天的。周日全备。
假如周三恢复,需要0级别和一个到周二 的备份就行了。恢复更快。
周六挂需要周日,周三,周五三个备份集。
*************************************************************************
zx数据库使用差异增量备份
日 一 二 三 四 五 六 日
0 2 2 1 2 2 2 0
全 一 一 三 一 一 一 全
周日全备,周一周二只备份一天就行了,但周三需要把周一二三的都备一遍,因为它级别比前面的备份低,周四周五周六就只备一天就行了,周日又要做全备了。
编辑备份脚本
脚本存放位置/home/oracle/scripts/rman/bin/
日志存放位置/home/oracle/scripts/rman/log/
备份存放位置+rcy1/backup/hrman_bak/
- 热备0级脚本
[oracle@zx bin]$ cat hrman0.sh
#!/bin/bash
export ORACLE_SID=zx1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin
rman target / <<eof
run{
sql'alter system switch logfile';
allocate channel c1 type disk;
allocate channel c2 type disk;
crosscheck archivelog all;
backup as compressed backupset incremental level 0 format '+rcy1/backup/hrman_bak/%d_%T_%U_0.bak' database plus archivelog;
delete noprompt obsolete;
}
quit;
EOF
hrman0.sh
#!/bin/bash
current_day=`date +%Y%m%d`
incr_day=incr$current_day
mkdir /data2/backup/$incr_day
export ORACLE_SID=assedb
export ORACLE_BASE=/oracode/oracle
export ORACLE_HOME=/oracode/oracle/ora11g
export PATH=$ORACLE_HOME/bin
rman target / <<EOF
run{
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/data2/backup/$incr_day/PID-%F.ctl';
sql'alter system switch logfile';
allocate channel c1 type disk;
allocate channel c2 type disk;
crosscheck archivelog all;
backup as compressed backupset incremental level 0 format '/data2/backup/$incr_day/%d_%T_%U_0.bak' database;
sql 'alter system archive log current';
backup archivelog all format '/data2/backup/$incr_day/arc_%n_%T_%U.arg';
delete noprompt obsolete;
release channel c1;
release channel c2;
}
quit;
EOF
hrman00.sh样例
- 热备1级脚本
[oracle@zx bin]$ cat hrman1.sh
#!/bin/bash
export ORACLE_SID=zx1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin
rman target / <<eof
run{
sql'alter system switch logfile';
allocate channel c1 type disk;
allocate channel c2 type disk;
crosscheck archivelog all;
backup as compressed backupset incremental level 1 format '+rcy1/backup/hrman_bak/%d_%T_%U_1.bak' database plus archivelog;
delete noprompt obsolete;
}
quit;
EOF
hrman1.sh
#!/bin/bash
current_day=`date +%Y%m%d`
incr_day=incr$current_day
mkdir /data2/backup/$incr_day
export ORACLE_SID=assedb
export ORACLE_BASE=/oracode/oracle
export ORACLE_HOME=/oracode/oracle/ora11g
export PATH=$ORACLE_HOME/bin
rman target / <<EOF
run{
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/data2/backup/$incr_day/PID-%F.ctl';
sql'alter system switch logfile';
allocate channel c1 type disk;
allocate channel c2 type disk;
crosscheck archivelog all;
backup as compressed backupset incremental level 1 format '/data2/backup/$incr_day/%d_%T_%U_1.bak' database;
sql 'alter system archive log current';
backup archivelog all format '/data2/backup/$incr_day/arc_%n_%T_%U.arg';
delete noprompt obsolete;
release channel c1;
release channel c2;
}
quit;
EOF
hrman11.sh样例
- 热备2级脚本
[oracle@zx bin]$ cat hrman2.sh
#!/bin/bash
export ORACLE_SID=zx1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1
export PATH=$ORACLE_HOME/bin
rman target / <<eof
run{
sql'alter system switch logfile';
allocate channel c1 type disk;
allocate channel c2 type disk;
crosscheck archivelog all;
backup as compressed backupset incremental level 2 format '+rcy1/backup/hrman_bak/%d_%T_%U_2.bak' database plus archivelog;
delete noprompt obsolete;
}
quit;
EOF
hrman.2sh
#!/bin/bash
current_day=`date +%Y%m%d`
incr_day=incr$current_day
mkdir /data2/backup/$incr_day
export ORACLE_SID=assedb
export ORACLE_BASE=/oracode/oracle
export ORACLE_HOME=/oracode/oracle/ora11g
export PATH=$ORACLE_HOME/bin
rman target / <<EOF
run{
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/data2/backup/$incr_day/PID-%F.ctl';
sql'alter system switch logfile';
allocate channel c1 type disk;
allocate channel c2 type disk;
crosscheck archivelog all;
backup as compressed backupset incremental level 2 format '/data2/backup/$incr_day/%d_%T_%U_2.bak' database ;
sql 'alter system archive log current';
backup archivelog all format '/data2/backup/$incr_day/arc_%n_%T_%U.arg';
delete noprompt obsolete;
release channel c1;
release channel c2;
}
quit;
EOF
hrman22.sh样例
设置权限
[oracle@zx bin]$ chmod -R 777 hrman0.sh
[oracle@zx bin]$ chmod -R 777 hrman1.sh
[oracle@zx bin]$ chmod -R 777 hrman2.sh
[oracle@zx bin]$ ll
total 12
-rwxrwxrwx 1 oracle oinstall 468 Oct 21 17:03 hrman0.sh
-rwxrwxrwx 1 oracle oinstall 468 Oct 21 17:05 hrman1.sh
-rwxrwxrwx 1 oracle oinstall 468 Oct 21 17:06 hrman2.sh
配置作业
一个crontab文件中包含有六个字段:
分钟 0-59
小时 0-23
月中的第几天 1-31
月份 1 - 12
星期几 0 - 6, with 0 = Sunday
配置
[oracle@zx ~]$ crontab -e
查看
[oracle@zx ~]$ crontab -l
0 2 * * 0 sh /home/oracle/scripts/rman/bin/hrman0.sh >> /home/oracle/scripts/rman/log/backup0.log 2>&1
0 2 * * 3 sh /home/oracle/scripts/rman/bin/hrman1.sh >> /home/oracle/scripts/rman/log/backup1.log 2>&1
0 2 * * 1,2,4,5,6 sh /home/oracle/scripts/rman/bin/hrman2.sh >> /home/oracle/scripts/rman/log/backup2.log 2>&1
日志变大可清空
[oracle@zx ~]$ cat /dev/null > /home/oracle/scripts/rman/log/backup0.log
[oracle@zx ~]$ cat /dev/null > /home/oracle/scripts/rman/log/backup1.log
[oracle@zx ~]$ cat /dev/null > /home/oracle/scripts/rman/log/backup2.log
[oracle@zx ~]$ ll /home/oracle/scripts/rman/log
total 432
-rwxrwxrwx 1 oracle dba 0 Jul 15 16:12 backup0.log
-rwxrwxrwx 1 oracle dba 0 Jul 15 16:12 backup1.log
-rwxrwxrwx 1 oracle dba 0 Jul 15 16:12 backup2.log
在rman增量备份中,有差异增量和累积增量的概念
1、概念
差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式
累积增量:是备份上级备份以来所有变化的块
因为累积增量是备份上级备份以来所有变化的数据块,所以累积增量需要更多的备份时间,同时需要较小的恢复时间;而差异增量正好相反,它可以备份同级备份以来变化的数据块。所以会减少备份时间,但需要更多的恢复时间.在oracle 9中增量备份需要通过扫描整个数据库的数据块才能知道哪些数据块发生了变化,这是一个代价很大,时间很长的过程,而且由于增量备份形成多个不同的备份集,使恢复变得更加不可靠,所以增量备份在版本9中仍然不被推荐使用;在10g中,增量备份作了很大的改进,不需要再扫描所有数据块就能得知哪些数据块发生变化,从而大大提升备份效率。但这些却以牺牲磁盘i/o为代价,所以在oltp事务系统中还得衡量是否愿意以i/o为代价来保证安全及高可用性。10g还支持增量合并,增量备份可支持7级增量。
2、备份策略及恢复
以rman多级增量备份来作为备份策略例子:
增量备份都需要一个0级备份来作为基础,0级备份与全备份的区别在于0级可以用来增量恢复,而全备份则不可以。
备份策略:
eg:我们对一星期做如下备份策略 ,那么差异增量只需要使用星期天的0级,星期三的一级,星期四、五的二级就可以恢复,累积增量则需要星期天的0级、星期三的1级,星期五的二级即可进行恢复。以上是一个星期的备份策略,如果做长期的备份策略则只需要把备份的时间延长即可得到新的备份策略,具体需要看自己备份及恢复能够接受的程度而顶,见最后的备份策略典型案例。
星期 差异增量 累积增量
星期天 0级 0级
星期一 2级 2级
星期二 2级 2级
星期三 1级 1级
星期四 2级 2级
星期五 2级 2级
星期六 2级 2级
星期天 0级 0级
备份命令如下:
零级备份
backup incremental level 0 database;
一级差异增量
backup incremental level 1 database;
一级累计增量
backup incremental level 1 cumulative database;
备份策略典型案例:
每半年做一个数据库的全备份(包括所有的数据和只读表空间)
每一个月做一次零级备份(不包含只读表空间)
每个星期做一次一级备份
每天做一次二级备份
任何数据库的更改需要重新同步CATALOG目录并重新备份(如添加数据文件)或重新备份(如修改表空间为只读)
建议备份一段时间归档日志和定期备份归档到到磁带上
全库备份脚本
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 filesperset 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 filesperset 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 filesperset 3 format '/u01/oradata/backup/arch%u_%s_%p'
archivelog all delete input; #备份归档可选,可以单独定期备份
release channel c1;
release channel c2;
release channel c3;
}
如果按照以上备份策略,则每天的所需要备份的数据量只有一天的改变量。而做恢复时最多要恢复当月的一个零级备份+三个一级备份+6个二级备份+当天的归档文件。
增量备份说明
oracle11gRAC环境使用RMAN增量备份方案的更多相关文章
- RMAN增量备份-备份保留策略-设置备份集属性
RMAN增量备份:增量备份级别:0,1,2,3,4BACKUP DATABASE也是创建数据库的完整备份,但是这种备份不同于增量备份的0级备份.这种备份不包含增量备份的0级备份,并不支持在此基础上再创 ...
- 如何使用块更改跟踪文件估算RMAN增量备份大小 (Doc ID 1938079.1)
How to estimate RMAN incremental backup size using block change tracking file (Doc ID 1938079.1) APP ...
- 【转】在rman增量备份中,有差异增量和累积增量的概念
本文转自hougoo的博客 1.概念 差异增量:是备份上级及同级备份以来所有变化的数据块,差异增量是默认增量备份方式 累积增量:是备份上级备份以来所有变化的块 因为累积增量是备份上级备份以来所有变化的 ...
- Oracle 12 Rman增量备份
增量备份 增量备份主要作用是仅复制自上次备份以来已更改的数据块.您可以使用RMAN创建数据文件,表空间或整个数据库的增量备份. 将增量备份作为策略的一部分的主要原因是: 用于基于增量更新备份的策略,其 ...
- Oracle Rman 增量备份与差异备份
一.增量与差异 关于Incremental增量备份级别: Oracle 9i 共有五种级别 0 1 2 3 4,0级最高-4级最低,0级是1级的基础以此类推. Oracle 10g官方文档明确指出增量 ...
- 怎样使用 RMAN 增量备份恢复 data guard log gap(日志断档)
主库查询最小scn 信息: SQL> col current_scn for 999999999999999 SQL> SELECT CURRENT_SCN FROM V$DATABAS ...
- 【RMAN】使用RMAN增量备份刷新 Standby Database
Step 1: Create the Incremental Backup RMAN> BACKUP DEVICE TYPE DISK INCREMENTAL FROM SCN 750983 D ...
- 使用RMAN增量备份处理Dataguard因归档丢失造成的gap
场景: 备库执行日志应用出现如下报错: Thu Mar 29 11:21:45 2018FAL[client]: Failed to request gap sequence GAP - thread ...
- RMAN 增量备份级别说明
通过Bat批处理调用RMan是我们定时备份数据库的好帮手,但是RMan的备份级别需要我们好好了解一下. RMAN备份全为全备和增量备份 增量备份:分为0 1 2级 ORACLE官方解释: A leve ...
随机推荐
- WCF之多个协定
多个协定”示例演示如何在一个服务上实现多个协定,以及如何配置终结点以便与实现的每个协定进行通信 1.服务端代码如下(服务实现了两个协定,增加了黄色所示代码): class Program { stat ...
- String.Format 全汇总
C#格式化数值结果表 字符 说明 示例 输出 C 货币 string.Format("{0:C3}", 2) $2.000 D 十进制 string.Format("{0 ...
- 内存回收,Dispose,Close,Finalie(C#中的析构函数)
NET中的资源分托管和非托管,所谓的托管是指CLR(通用语言运行时)中进行管理的资源,它可以由CLR自动进行内存回收. 也就是大家熟知的GC(垃圾回收机制). 而对于 非托管资源,比如数据库连接,CO ...
- Core Java Volume I — 5.1. Classes, Superclasses, and Subclasses
5.1. Classes, Superclasses, and SubclassesLet's return to the Employee class that we discussed in th ...
- Java 简介
前言 本文大致介绍 Java 语言 什么是 Java 语言? Java 不仅仅是一门语言,Java 是一个完整的平台,有一个庞大的库,其中包含很多可重用的代码和一个提供诸如安全性,跨操作系统的可移植性 ...
- node模拟http服务器session机制-我们到底能走多远系列(36)
我们到底能走多远系列(36) 扯淡: 年关将至,总是会在一些时间节点上才感觉时光飞逝,在平时浑浑噩噩的岁月里都浪费掉了太多的宝贵.请珍惜! 主题: 我们在编写http请求处理和响应的代码的时 ...
- 如何用 freebayes call SNP
1,软件介绍 FreeBayes is a Bayesian genetic variant detector designed to find small polymorphisms, specif ...
- [转载] C++ string, const char*, char* 之间互相转换
1, string转const char* 类型 string str = "abcdef"; const char* con_str = string.c_str() 2, co ...
- Color Map的生成方法
/* Return a RGB colour value given a scalar v in the range [vmin,vmax] In this case each colour comp ...
- c#部分---网吧充值系统;简易的闹钟;出租车计费;简单计算器;对战游戏;等额本金法计算贷款还款利息等;随机生成10个不重复的50以内的整数;推箱子;
网吧充值系统namespace ConsoleApplication1 { class Program { struct huiyuan { public string name; public st ...