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

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

相关推荐
jnrjian5 天前
ORA-01017 查找机器名 用户名 以及library cache lock 参数含义
数据库·oracle
TTc_5 天前
oracle中的union和union all有什么区别?
数据库·oracle
山峰哥5 天前
吃透 SQL 优化:告别慢查询,解锁数据库高性能
服务器·数据库·sql·oracle·性能优化·编辑器
南 阳5 天前
Python从入门到精通day37
数据库·python·oracle
轩情吖5 天前
MySQL库的操作
android·数据库·mysql·oracle·字符集·数据库操作·编码集
脱发的老袁5 天前
【数据库】Oracle手动清理归档日志
数据库·oracle
jnrjian5 天前
Oracle 共享池 库缓存下的 Library Cache Lock
数据库·缓存·oracle
新缸中之脑6 天前
在Reddit上探索未满足的需求
数据库·oracle
light blue bird6 天前
产线多并发客户端指令操作场景组件
jvm·oracle·.net·winform
坐吃山猪6 天前
Neo4j04_数据库事务
数据库·oracle·neo4j