rman脚本实现数据库备份策略

本文详细介绍了使用RMAN实现数据库备份的策略,包括配置参数、备份片格式说明、定时任务配置及备份脚本示例。策略包含每周六的全备份与周二、四的归档日志备份。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用RMAN实现数据库备份策略

rman configure配置说明

rman target /
show all

MAN> show all;

RMAN configuration parameters for database with db_unique_name DOG are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/app/oracle/product/11.2.0/dbhome_1/dbs/snapcf_DOG.f'; # default

关于备份片format格式说明 :
format:
%c:备份片的拷贝数(从1开始编号);
%d:数据库名称;
%D:位于该月中的天数(DD);
%M:位于该年中的月份(MM);
%F:一个基于DBID唯一的名称,这个格式的形式为c-xxx-YYYYMMDD-QQ,其中xxx位该数据库的DBID,YYYYMMDD为日期,QQ是一个1-256的序列; 这个参数使用RMAN脚本测试时,报错了。正确与否需要再验证
%n:数据库名称,并且会在右侧用x字符进行填充,使其保持长度为8;
%u:是一个由备份集编号和建立时间压缩后组成的8字符名称。利用%u可以为每个备份集产生一个唯一的名称;
%p:表示备份集中的备份片的编号,从1开始编号;
%U:是%u_%p_%c的简写形式,利用它可以为每一个备份片段(既磁盘文件)生成一个唯一的名称,这是最常用的命名方式;
%t:备份集时间戳;
%T:年月日格式(YYYYMMDD);

策略规划

每周六 0:10,执行数据库全备份
每周二、四 0:10,执行数据库归档日志备份

# crontab定时任务配置:
10 0 * * 6 /app/oracle/scripts/dbfull_backup.sh>>/app/oracle/dbbak/db_backup.log 2>&1 &
10 0 * * 2,4 /app/oracle/scripts/dbarch_backup.sh>>/app/oracle/dbbak/db_backup.log 2>&1 &

备份脚本

dbfull_backup.sh

#!/usr/bin/bash

. /home/oracle/.bash_profile
export BACKUPDIR='/app/oracle/dbbak'

export ORACLE_SID=DOG
echo ###########################################
echo ###### Database FULL Backup  Started ######
echo ###########################################

rman target  / << EOF
run
{
sql 'alter system log current';
allocate channel ch1 type disk format '/app/oracle/dbbak';
backup database format '$BACKUPDIR/db_d%d_u%u_s%s_p%p_t%t';
backup archivelog all not backed up format '$BACKUPDIR/arch_d%d_u%u_s%s_p%p_t%t';
backup current controlfile format '$BACKUPDIR/ctrl_d%d_u%u_s%s_p%p_t%t';
delete backup completed before 'sysdate-30';
delete noprompt archivelog all completed before 'sysdate-10';
release channel ch1;
}
EOF

echo ###########################################
echo ###### Database FULL Backup  Ended   ######
echo ###########################################
echo \n
echo \n

归档备份

. /home/oracle/.bash_profile
export BACKUPDIR='/app/oracle/dbbak'
echo $BACKUPDIR
export ORACLE_SID=DOG


echo ###########################################
echo ###### Database ARCH Backup  Started ######
echo ###########################################



rman target  / << EOF
run
{
sql 'alter system log current';
allocate channel ch1 type disk format '/app/oracle/dbbak';
backup archivelog all not backed up format '$BACKUPDIR/arch_d%d_u%u_s%s_p%p_t%t';
backup current controlfile format '$BACKUPDIR/ctrl_d%d_u%u_s%s_p%p_t%t';
delete noprompt archivelog all completed before 'sysdate-10';
release channel ch1;
}
EOF

echo ###########################################
echo ###### Database ARCH Backup  Ended   ######
echo ###########################################
echo \n
echo \n



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值