Linux服务器下oracle自动rman备份的实现

一、概述

为确保oracle数据库数据的安全和一致性,一般我们都需要利用备份手段进行数据库的备份。在oracle数据库中,rman因其强大的功能和完善的手段,成为数据库备份的首选。Linux服务器中,要实现自动脚本备份,一般都是通过root用户设置crond定时任务执行脚本完成(oracle用户执行调取的涉及到环境变量等配置问题,弄起来更麻烦),故以下通过两种方式配置脚本,实现rman自动备份。

二、脚本实现

2.1,rman备份脚本编写

2.1.1,数据文件备份

此处我分配4个本地通道进行备份,通道指定备份路径(自己挂载的备份盘)。具体备份语句如下:

sql 复制代码
run{
    allocate channel c1 type disk format '/backup/hpdb_%d_DB_%u_%T';
    allocate channel c2 type disk format '/backup/hpdb_%d_DB_%u_%T';
    allocate channel c3 type disk format '/backup/hpdb_%d_DB_%u_%T';
    allocate channel c4 type disk format '/backup/hpdb_%d_DB_%u_%T';
    sql 'alter system archive log current';
    backup full (database include current controlfile);
    release channel c1;
    release channel c2;
    release channel c3;
    release channel c4;
}

2.1.2,归档日志文件备份

归档日志备份时,为避免有时候人工删除文件导致备份失败,我们每次备份进行crosscheck,确保备份成功,且对备份成功的归档日志文件进行删除,确保目录空间不被撑满,具体如下:

sql 复制代码
crosscheck archivelog all;
run{
    allocate channel c1 type disk format '/backup/arch_%d_DB_%u_%T';
    allocate channel c2 type disk format '/backup/arch_%d_DB_%u_%T';
    allocate channel c3 type disk format '/backup/arch_%d_DB_%u_%T';
    sql 'alter system archive log current';
    backup (archivelog all delete input);
    release channel c1;
    release channel c2;
    release channel c3;
}

2.2,任务脚本编写

任务脚本我们可以有两种方式进行编写,具体如下:

2.2.1,方式一

sql 复制代码
find /backup -type f -mtime +5 | xargs rm -f 
su - oracle -c "rman target / cmdfile=/home/oracle/backup/backup.sh msglog=/home/oracle/backup/rman.log"

2.1.2,方式二

第二种方式我们可以通过全脚本的形式写入到内部进行

sql 复制代码
su - oracle -c "rman target / << !EOF
run{
    allocate channel c1 type disk format '/backup/hpdb_%d_DB_%u_%T';
    allocate channel c2 type disk format '/backup/hpdb_%d_DB_%u_%T';
    allocate channel c3 type disk format '/backup/hpdb_%d_DB_%u_%T';
    allocate channel c4 type disk format '/backup/hpdb_%d_DB_%u_%T';
    sql 'alter system archive log current';
    backup full (database include current controlfile);
    release channel c1;
    release channel c2;
    release channel c3;
    release channel c4;
}
quit
!EOF
"

三、配置定时任务

我们配置每天晚上10点进行相应的备份任务,进行crond配置如下:

sql 复制代码
crontab -e
00 22 * * * sh /home/oracle/backupcrond.sh

至此定时备份任务配置完成。

相关推荐
明月56610 小时前
Oracle 误删数据恢复
数据库·oracle
程序员编程指南14 小时前
Qt 数据库连接池实现与管理
c语言·数据库·c++·qt·oracle
陪我一起学编程16 小时前
MySQL创建普通用户并为其分配相关权限的操作步骤
开发语言·数据库·后端·mysql·oracle
Albert Tan17 小时前
ORACLE DATABASE 23AI+Apex+ORDS -纯享版
数据库·oracle
技术卷20 小时前
详解力扣高频SQL50题之1084. 销售分析 III【简单】
sql·leetcode·oracle
Alla T21 小时前
【通识】数据库
数据库·oracle
MickeyCV1 天前
MySQL数据库本地迁移到云端完整教程
服务器·数据库·mysql·oracle
IT邦德1 天前
OGG同步Oracle到Kafka不停库,全量加增量
数据库·oracle·kafka
技术卷1 天前
详解力扣高频SQL50题之550. 游戏玩法分析 IV【中等】
sql·mysql·leetcode·oracle
技术卷1 天前
详解力扣高频 SQL 50 题之584. 寻找用户推荐人【入门】
sql·leetcode·oracle