oracle rman 自动备份

本文详细介绍了如何在Oracle数据库中使用RMAN实现自动备份,包括修改数据库为自动归档模式、配置RMAN参数、编写自动备份脚本以及设置系统自动备份参数等关键步骤。此外,还提供了恢复整个数据库或单个表空间的具体方法。

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

                                                                    原文:Oracle中Rman自动备份数据库   作者:软件工程师
目录
1 数据库修改为自动归档模式
2 修改rman参数
3 rman自动备份脚本
4 设置系统自动备份参数
5  rman还原
恢复整个数据库
恢复单个表空间
 1 数据库修改为自动归档模式。
为什么要设置为自动归档模式呢?主要是因为,如果不设置为自动归档模式,使用rman的时候需要把数据库修改到mount状态而不是open状态。而自动归档模式是可以在open使用中进行热备的。下面是修改自动归档模式步骤:
1      Sqlplus / as sysdba  进入数据库(本地)
2       Archive log list  (查看是否是自动归档模式。)
下面显示的是非归档模式
SQL> archive log list;
Database log mode              No Archive Mode
Automatic archival             Disabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     25
Current log sequence           27
3       shutdown immediate; 关闭数据库
4       startup mount 启动到mount状态
5   alter database archivelog;   修改为归档模式
6   alter database open;    打开数据库
7      archive log list         产看是否启动成功
以下为启动成功后显示
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     25
Next log sequence to archive   27
Current log sequence           27
2 修改rman参数
登陆 rman
Rman target rman/rman
在Oracle 9i中的配置情况
使用RMAN>show all;
可以显示出RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 1; # 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 SNAPSHOT CONTROLFILE NAME TO ‘C:ORACLE..SNCFTEST.ORA’; #default
以下是每个参数的定义
1.configure retention policy to redundancy 1:
是用来决定那些备份不再需要了,它一共有三种可选项,分别是
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE RETENTION POLICY TO REDUNDANCY 5;
CONFIGURE RETENTION POLICY TO NONE;
第一种recover window是保持所有足够的备份,可以将数据库系统恢复到最近七天内的任意时刻。任何超过最近七天的数据库备份将被标记为obsolete。
第二种redundancy 是为了保持可以恢复的最新的5份数据库备份,任何超过最新5份的备份都将被标记为redundancy。它的默认值是1份。
第三种不需要保持策略,clear将恢复回默认的保持策略。
一般最安全的方法是采用第二种保持策略。
2.CONFIGURE BACKUP OPTIMIZATION OFF
默认值为关闭,如果打开,rman将对备份的数据文件及归档等文件进行一种优化的算法。
3.Configure default device type to disk:
是指定所有I/O操作的设备类型是硬盘或者磁带,默认值是硬盘
磁带的设置是CONFIGURE DEFAULT DEVICE TYPE TO SBT;
4.CONFIGURE CONTROLFILE AUTOBACKUP OFF
强制数据库在备份文件或者执行改变数据库结构的命令之后将控制文件自动备份,默认值为关闭。这样可以避免控制文件和catalog丢失后,控制文件仍然可以恢复。
5.CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'
是配置控制文件的备份路径和备份格式
6.CONFIGURE DEVICE TYPE DISK PARALLELISM 1;
是配置数据库设备类型的并行度。
7.CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1;
是配置数据库的每次备份的copy数量,oracle的每一次备份都可以有多份完全相同的拷贝。
8.CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1
是设置数据库的归档日志的存放设备类型
9.CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'C:ORACLE… SNCFTEST.ORA'
是配置控制文件的快照文件的存放路径和文件名,这个快照文件是在备份期间产生的,用于控制文件的读一致性。
10.CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'C:...%d_DB_%u_%s_%p';
是配置备份文件的备份路径和备份格式
CONFIGURE CHANNEL DEVICE TYPE DISK  CLEAR; 用于清除上面的信道配置
CONFIGURE EXCLUDE FOR TABLESPACE [CLEAR]; 此命令用于将指定的表空间不备份到备份集中,此命令对只读表空间是非常有用的。
1.将备份文件存储到指定路径,如 e:\backupb
  configure channel device type disk format 'e:\backupb\%d_db_%u';
后面的%d_db_%u是存储格式
2.我们也可以单独指定control file 存储在另一个路径:如 e:\backupcontrol
configure controlfile autobackup format for device type disk to 'e:\backupcontrol\%F';
后面的%F是存储格式
================
RMAN中常用configure命令2007-06-21 15:37
1 显示当前的配置信息
===========================
1.01 RMAN> show all;
1.02 查询RMAN设置中非默认值:
    SQL> select name,value from v$rman_configure;
2. 常用的configure选项
===========================
2.01 保存策略 (retention policy)
   configure retention policy to recovery window of 3 days;
   configure retention policy to redundancy 3;
   configure retention policy clear;
2.02 备份优化 backup optimization
   configure backup optimization on;
   configure backup optimization off;
   configure backup optimization clear;
2.03 默认设备 default device type
   configure default device type to disk;
   configure default device type to stb;
   configure default device type clear;
2.04 控制文件 controlfile
   configure controlfile autobackup on;
   configure controlfile autobackup format for device type disk to '/cfs01/backup/conf/conf_%F';
   configure controlfile autobackup clear;
   configrue controlfile autobackup format for device type disk clear;
   configrue snapshot controlfile name to '/cfs01/backup/snapcf/scontrofile.snp';
   configrue snapshot controlfile name clear;
2.05 并行数(通道数) device type disk|stb pallelism n;
  configure device type disk|stb parallelism 2;
  configure device type disk|stb clear;
  configure channel device type disk format 'e/:rmanback_%U';
  configure channel device type disk maxpiecesize 100m
  configure channel device type disk rate 1200K;
  configure channel 1 device type disk format 'e/:rmanback_%U';
  configure channel 2 device type disk format 'e/:rmanback_%U';
  configure channel 1 device type disk maxpiecesize 100m   
  configure channel 1 device type disk clear
  configure channel 2 device type disk clear;
2.06 生成备份副本 datafile|archivelog backup copies
   configure datafile backup copies for device type disk|stb to 3;
   configure archivelog backup copies for device type disk|stb to 3;
   configure datafile|archivelog backup copies for device type disk|stb clear
   BACKUP DEVICE TYPE DISK DATABASE
    FORMAT '/disk1/backup/%U', '/disk2/backup/%U', '/disk3/backup/%U';
2.07 排除选项 exclude
   configure exclude for tablespace 'users';
   configrue exclude clear;
2.08 备份集大小 maxsetsize
   configure maxsetsize to 1G|1000M|1000000K|unlimited;
   configure maxsetsize clear;
2.09 其它选项 auxiliary
   CONFIGURE AUXNAME FOR DATAFILE 1 TO '/oracle/auxfiles/aux_1.f';
   CONFIGURE AUXNAME FOR DATAFILE 2 TO '/oracle/auxfiles/aux_2.f';
   CONFIGURE AUXNAME FOR DATAFILE 3 TO '/oracle/auxfiles/aux_3.f';
   CONFIGURE AUXNAME FOR DATAFILE 4 TO '/oracle/auxfiles/aux_4.f';
   -
   CONFIGURE AUXNAME FOR DATAFILE 1 CLEAR;
   CONFIGURE AUXNAME FOR DATAFILE 2 CLEAR;
   CONFIGURE AUXNAME FOR DATAFILE 3 CLEAR;
   CONFIGURE AUXNAME FOR DATAFILE 4 CLEAR;
---------------------------
Rman的format格式中的%
%c 备份片的拷贝数
%d 数据库名称
%D 位于该月中的第几天 (DD)
%M 位于该年中的第几月 (MM)
%F 一个基于DBID唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII为该数据库的DBID,YYYYMMDD为
日期,QQ是一个1-256的序列
%n 数据库名称,向右填补到最大八个字符
%u 一个八个字符的名称代表备份集与创建时间
%p 该备份集中的备份片号,从1开始到创建的文件数
%U 一个唯一的文件名,代表%u_%p_%c
%s 备份集的号
%t 备份集时间戳
%T 年月日格式(YYYYMMDD)
*本次rman参数的配置情情况:
using target database control file instead of recovery catalog
RMAN configuration parameters are:
CONFIGURE RETENTION POLICY TO REDUNDANCY 7;
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/u01/app/oracle/backup/conf_%F';
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 CHANNEL DEVICE TYPE DISK MAXPIECESIZE 20 M;
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
CONFIGURE SNAPSHOT CONTROLFILE NAME TO
'/u01/app/oracle/product/10.2.0/db_1/dbs/snapcf_ora10g.f'; # default
 
建议清除这些设置,清除后恢复正常。
CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' clear;


 数据库离线模式下的全备份
在noarchivelog模式下,可以使用RMAN备份read-only和offline的表空间
rman log='E:\oracle\backup\dxb_rman.log' append
connect target /;
shutdown immediate;
startup mount;
run
{
allocate channel 'd1' type disk;
backup full database include current controlfile format 'E:\oracle\backup\db_%d_%s_%p_%t_%T';
release channel d1;
}


3 rman自动备份脚本
完全备份脚本
rman target / <<EOF
run{
allocate channel 'dev1' type disk;
backup full tag 'dbfull_orcl' format '/u01/app/oracle/backup/fulldb_orcl%u_%p_%c'database;
sql 'alter system archive log current';
backup filesperset 3 archivelog all delete input;
release channel dev1;
}
增量备份:
0级备份脚本:
#set porfile_env
export ORACLE_SID=ora10g
# rman level0 backup
rman log='/u01/app/oracle/rmandir/log/db1_rman.log' append <<EOF
connect target /;
run
{
allocate channel c1 type disk;
backup incremental level=0 database format'/u01/app/oracle/backup/db1_level0_%U' tag='level0';
sql 'alter system archive log current';
backup archivelog all format'/u01/app/oracle/log/db1_arch_%U' delete input;
release channel c1;
}
EOF
1级备份脚本
# set porfile_env
export ORACLE_SID=ora10g
# rman level0 backup
rman log='/u01/app/oracle/rmandir/log/db1_rman.log' append <<EOF
connect target /;
run
{
allocate channel c1 type disk;
backup incremental level=1 database format '/u01/app/oracle/backup/db1_level1_%U' tag='level1';
sql 'alter system archive log current';
backup archivelog all format '/u01/app/oracle/log/db1_arch_%U' delete input;
release channel c1;
}
EOF
 
2级备份脚本:
# set porfile_env
export ORACLE_SID=ora10g
# rman level0 backup
rman log='/u01/app/oracle/rmandir/log/db1_rman.log' append <<EOF
connect target /;
run
{
allocate channel c1 type disk;
backup incremental level=2 database format '/u01/app/oracle/backup/db1_level2_%U' tag='level2';
sql 'alter system archive log current';
backup archivelog all format '/u01/app/oracle/log/db1_arch_%U' delete input;
release channel c1;
}
EOF
检查脚本:
export ORACLE_SID=ora10g
rman log='/u01/app//oracle/log/rmancheck.log' append <<EOF
connect target /;
run
{
# check database
backup validate check logical database;
 
# check backup set
restore database validate check logical;
}
EOF
删除过期备份文件脚本:
export ORACLE_SID=ora10g
rman log='/u01/app/oracle/log/rmandelset.log' append <<EOF
connect target /;
run
{
delete noprompt obsolete;
}
EOF
  
4 设置系统自动备份参数:
man增量备份计划,把用到的脚本贴出来,方便以后查找!
crontab 自动计划。设置自动执行计划,在rman初始化环境里面,打开自动备份控制文件功能
#crontab -e
0 1 * * 0 su – oracle -c /xxx/rmanlevel0.sh
//每周日1:00执行0级备份
0 1 * * 1-3,5-6 su – oracle -c /xxx/rmanlevel2.sh
//每周一至周三,周五至周六1:00执行2级增量备份
0 1 * * 4 su – oracle -c /xxx/rmanlevel1.sh
//每周四1:00执行1级增量备份
0 18 * * 6 su - oracle -c /xxx/rmancheck.sh
//每周六16点执行检测
0 18 * * 0 su – oracle –c /xxx/rman_delete.sh
//每周日18:00删除过期的的备份数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值