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

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

相关推荐
时间售卖铺40 分钟前
Oracle DQL精髓:从基础到高级实战
运维·数据库·云原生·oracle
lusklusklusk2 小时前
SQL Server 为什么普通 SELECT 会阻塞 UPDATE?——行级 S 锁到表级 S 锁的锁升级原理与实验验证
数据库·mysql·oracle
瑶总迷弟2 小时前
银河麒麟 V10 ARM64 安装 Oracle 19c 静默部署操作手册
数据库·oracle
lusklusklusk18 小时前
Python 巡检脚本:进程运行状态、数据库写入时效检查及邮件通知与告警
数据库·python·oracle
悟道书生1 天前
Kingbase数据库使用命令来执行init.sql(包含建库建表语句)
数据库·oracle
晴天¥1 天前
记一次Oracle 归档进程卡死怎么去有效排查
数据库·oracle
梦幻通灵1 天前
MybatisPlus使用数据库递增ID实现方案【持续更新】
数据库·oracle
海鸥-w2 天前
数据库冗余字段设计笔记
java·数据库·笔记·oracle
实泽有之,无泽虚之2 天前
ORA-12514:TNS:监听程序当前无法识别连接描述符中请求的服务问题原因及解决办法
数据库·oracle
程序员塔塔喵2 天前
【MySQL篇|第十篇】深分页问题
数据库·oracle·深分页问题