首页
首页
文章目录
  1. 简介
  2. 讲解
  3. 0级备份
  4. 1级备份
  5. 2级备份
  6. 手工利用rman 备份控制文件 ,全库和归档日志

oracle RMAN的全量与增量备份方法

简介

oracle的备份机制有很多中,但是rac最常用的就是rman备份。本文主要是基于我负责的一个项目的备份机制来写的rman的全量与增量备份方法。仅作参考。

讲解

rman备份一共有三级分别是0、1、2

第一次0级备份,是全备。

然后1级是第0级备份以来的变化的备份。

此时再做1级备份,备份的是从上一个1级备份后的变化。

再做2级备份,则是从第二个1级备份后的变化。

此时再做1级备份,则备份从第二个1级备份后的变化,—忽略2级备份的。

0级备份

脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/bin/bash

export ORACLE_SID=rac1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/.local/bin:$ORACLE_HOME/bin
tdate=`date +%Y%m%d`

rman target / <<eof
run{
sql'alter system switch logfile';
allocate channel c1 type disk connect 'sys/srmyy@node1:1521/rac';
allocate channel c2 type disk connect 'sys/srmyy@node2:1521/rac';
crosscheck backup;
crosscheck archivelog all;
backup as compressed backupset incremental level 0 format '+FRA/rman/%d_%T_%U_0.bak' database plus archivelog;
delete noprompt obsolete;
delete archivelog all completed before 'sysdate-30';
release channel c1;
release channel c2;
}
quit;
eof

1级备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
export ORACLE_SID=rac1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/.local/bin:$ORACLE_HOME/bin
tdate=`date +%Y%m%d`

rman target / <<eof
run{
sql'alter system switch logfile';
allocate channel c1 type disk connect 'sys/srmyy@node1:1521/rac';
allocate channel c2 type disk connect 'sys/srmyy@node2:1521/rac';
crosscheck backup;
crosscheck archivelog all;
backup as compressed backupset incremental level 1 format '+FRA/RMAN/%d_%T_%U_1.bak' database plus archivelog;
delete noprompt obsolete;
release channel c1;
release channel c2;
}
quit;
eof

2级备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/bash
export ORACLE_SID=rac1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/.local/bin:$ORACLE_HOME/bin
tdate=`date +%Y%m%d`

rman target / <<eof
run{
sql'alter system switch logfile';
allocate channel c1 type disk connect 'sys/srmyy@node1:1521/rac';
allocate channel c2 type disk connect 'sys/srmyy@node2:1521/rac';
crosscheck backup;
crosscheck archivelog all;
backup as compressed backupset incremental level 2 format '+FRA/RMAN/%d_%T_%U_2.bak' database plus archivelog;
delete noprompt obsolete;
release channel c1;
release channel c2;
}
quit;
eof

手工利用rman 备份控制文件 ,全库和归档日志

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
export ORACLE_SID=rac1
export ORACLE_BASE=/u01/app/oracle
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/db_1
export PATH=$PATH:$ORACLE_HOME/.local/bin:$ORACLE_HOME/bin
tdate=`date +%Y%m%d`

rman target / <<EOF
connect target /;
run{
allocate channel d1 type disk;
allocate channel d2 type disk;
crosscheck backup;
crosscheck archivelog all;
sql 'alter system archive log current';
backup database format '/backup/full/full__%d_%s_%p_%u.bak';
sql 'alter system archive log current';
backup current controlfile format '/backup/full/control_%s_%p_%t';
backup archivelog all format '/backup/full/archive_%t_%s' delete all input;
crosscheck backup;
release channel d2;
release channel d1;
}
quit;
eof

以上

End!

支持一下
扫一扫,我会更有动力更新
  • 微信扫一扫
  • 支付宝扫一扫