Oracle制定定备份策略并部署备份脚本


一、环境

1.确认文件和脚本的路径,操作系统内存和空间大小;保证空间可用,创建对应的路径和权限正确
2.确认数据库的大小和内存配置;决定启用并行度的多少
3.确认部署的用户;使用oracle用户最好,但是发现有的oracle用户会过期;部署在root用户下也可,例子就是在root下
4.确认数据库的实例名,防止多个实例;
5.10g、11g、19c的备份脚本没有什么区别。

*******

二、备份脚本

mkdir -p /backup/rman/orcl/log
chown -R oracle:oinstall rman

1.每周日零点全备,周一到周六增量备份
#backup orcl
0 0 * * 0 /backup/rman/orcl/rman_0_level_full_p.sh
0 0 * * 1-6 /backup/rman/orcl/rman_1_level_incremental_p.sh

vi /backup/rman/orcl/rman_0_level_full_p.sh
#!/bin/sh
su - oracle -c "/backup/rman/orcl/rman_0_level_full.sh"

vi /backup/rman/orcl/rman_0_level_full.sh

#!/bin/sh
source /home/oracle/.bash_profile
export ORACLE_SID=orclcdb1
DAY_TAG=`date +"%Y-%m-%d"`
backdir1=/backup/rman/orcl
rman target / nocatalog msglog /backup/rman/orcl/log/fullback_$DAY_TAG.log<<EOF
run{
crosscheck backup;
delete noprompt expired backup;
allocate channel d1 type disk;
allocate channel d2 type disk;
#crosscheck archivelog all;
#delete noprompt expired archivelog all;
#crosscheck backup;
#delete noprompt expired backup;
backup incremental level 0 as compressed backupset database format '$backdir1/full_%d_%T_%t_%s_%p';
sql 'alter system archive log current';
backup as compressed backupset filesperset 10 format '$backdir1/arch_%d_%T_%t_%s_%p' archivelog all delete all input;
backup current controlfile format '$backdir1/ctl_%d_%T_%t_%s_%p';
release channel d1;
release channel d2;
#report obsolete;
#delete noprompt obsolete;
}
EOF

2.周一到周六,针对周末的0级全备,每天进行1级增量备份

vi /backup/rman/orcl/rman_1_level_incremental_p.sh
#!/bin/sh
su - oracle -c "/backup/rman/orcl/rman_1_level_incremental.sh"

vi /backup/rman/orcl/rman_1_level_incremental.sh
#!/bin/sh
source /home/oracle/.bash_profile
export ORACLE_SID=orclcdb1
DAY_TAG=`date +"%Y-%m-%d"`
backdir1=/backup/rman/orcl
rman target / nocatalog msglog /backup/rman/orcl/log/inc_back_$DAY_TAG.log<<EOF
run{
crosscheck backup;
delete noprompt expired backup;
allocate channel d1 type disk;
allocate channel d2 type disk;
crosscheck archivelog all;
delete noprompt expired archivelog all;
#crosscheck backup;
#delete noprompt expired backup;
backup incremental level 1 as compressed backupset database format '$backdir1/inc_%d_%T_%t_%s_%p';
sql 'alter system archive log current';
backup as compressed backupset filesperset 10 format '$backdir1/arch_%d_%T_%t_%s_%p' archivelog all delete all input;
backup current controlfile format '$backdir1/ctl_%d_%T_%t_%s_%p';
release channel d1;
release channel d2;
#report obsolete;
#delete noprompt obsolete;
}
EOF

三、测试

chmod +x *.sh
nohup sh XXXX.sh &