oracle 数据库rman+crontab自动差异增量备份

环境准备

两台linux 服务器,一台已经安装好oracle数据库 
FileServer: 10.17.81.189
OracleServer:10.17.81.190

1.设置ssh密匙自动访问:

在OracleServer 服务器上,在输入ssh-keygen指令后,只需要连续输入三个回车键,就可以生成不需要密码的密钥公钥对了,然后把id_rsa.pub.  上传到 FileServer 服务器上。
 OracleServer:~# su - oracle #切换到oracle用户下
 oracle@OracleServer:~>ssh-keygen -t rsa
 oracle@OracleServer:~>scp /home/oracle/.ssh/id_rsa.pub   oracle@10.17.81.189:/home/oracle/.ssh/authorized_keys

2、创建增量备份脚本

oracle@OracleServer:~> cd /opt/oracle/shell #进入到oracle shell
目录(需要自己新建目录)
oracle@OracleServer:/opt/oracle/shell> vim bakl0 #增量备份1脚本

bakl 内容如下:


#!/bin/bash
export PATH  #引入路径
ORACLE_BASE=/opt/oracle
ORACLE_HOME=$ORACLE_BASE/product/11gR1/db
ORACLE_SID=ictdb  #设置oracle_sid
PATH=$ORACLE_HOME/bin:$PATH
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
/opt/oracle/product/11gR1/db/bin/rman target / <<EOF
run { 
allocate channel c1 type disk;
backup
incremental level 0 # 增量为n,这里就是这里改成 lever n (n一般2级就够了) 必须要有 0 备份
format "/opt/oracle/rmanbackup/dbf/inc0_%d_%u_%T"
tag monday_inc0
database;
sql 'alter system archive log current';
backup current controlfile format '/opt/oracle/rmanbackup/control/inc0_control_%d_%u_%T'; 
backup archivelog all format '/opt/oracle/rmanbackup/archive/inc0_archive_%d_%u_%T' delete all input;
release channel c1;
}

我这里有增量2备份

依次建立 bakl1 bakl2 同bak0 只需要把level 0 改成 level 1 或者2 ,我习惯把备份集名字前面加上 inc【n】表示是 增量n备份

3、创建备份到文件服务器脚本,把备份的数据复制到远程文件服务器
oracle@OracleServer:/opt/oracle/shell> vim copy #复制到远程文件服务器

#!/bin/bash
#copy file to file server
for cpfile in `find /opt/oracle/rmanbackup/ -ctime -1`;
        do scp -r "$cpfile" oracle@10.17.81.189:/opt/oracle/;
done
#delete before file
cd /opt/oracle/rmanbackup/
for rmfile in `find /opt/oracle/rmanbackup/ -mtime +7`;
        do /bin/rm -rf "$rmfile";
done

4、设置crontab 自动备份策略

OracleServer:~ # crontab -l -u oracle

10 1 * * 0  sh /opt/oracle/shell/bakl0 #周末凌晨 1:10 执行增量0备份
10 1 * * 1  sh /opt/oracle/shell/bakl2 #周一凌晨 1:10 执行增量2备份
10 1 * * 2  sh /opt/oracle/shell/bakl2 #周二凌晨 1:10 执行增量2备份
10 1 * * 3  sh /opt/oracle/shell/bakl1 #周三凌晨 1:10 执行增量1备份
10 1 * * 4  sh /opt/oracle/shell/bakl2 #周四凌晨 1:10 执行增量2备份
10 1 * * 5  sh /opt/oracle/shell/bakl2 #周五凌晨 1:10 执行增量2备份
10 1 * * 6  sh /opt/oracle/shell/bakl2 #周六凌晨 1:10 执行增量2备份
10 3 * * *  sh /opt/oracle/shell/copy #每天凌晨 3:10 备份文件到文件服务器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值