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

一、环境

1.确认文件和脚本的路径,操作系统内存和空间大小;保证空间可用,创建对应的路径和权限正确
2.确认数据库的大小和内存,cpu和归档日增量大小;决定启用并行度的多少
3.确认部署的用户;使用oracle用户最好,但是发现有的oracle用户会过期;部署在root用户下也可,例子就是在root下
4.确认数据库的实例名,防止多个实例;
5.10g、11g、19c的备份脚本没有什么区别。
6.检查归档路径,存在归档在多个节点的情况,需要修改归档路径,或者远程备份。
*******

二、备份脚本

复制代码
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 &

 

四、注意事项

1.在备份前建议先检查归档保留时间,如果可能清理归档再备份
2.因为要备份部分归档,一定要检查无没有删除归档的脚本
3.确认归档路径。

五、附加

1.修改归档路径

archive log list
alter system set log_archive_dest_1='location=+DATADG';
archive log list
alter system switch logfile;

2.远程备份命令参考

复制代码
#!/bin/sh
source /home/oracle/.bash_profile
export ORACLE_SID=orcl
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 connect 'backupadmin/backuppass@orcl1';
allocate channel d2 type disk connect 'backupadmin/backuppass@orcl2';
#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 like '%/arch1/archivelog/%.arc' delete all input channel d1)
(archivelog like '%/arch2/archivelog/%.arc' delete all input channel d2);
backup current controlfile format '$backdir1/ctl_%d_%T_%t_%s_%p';
release channel d1;
release channel d2;
#report obsolete;
#delete noprompt obsolete;
}
EOF
复制代码

 

posted @   AnneZhou  阅读(235)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示