Oracle中Rman自动备份数据库

 

目录
数据库修改为自动归档模式
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 <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;
 
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删除过期的的备份数据
 
5  rman还原
RMAN 的整个恢复过程可以分为还原(restore)与恢复(recover),他们在含义上是有
很大差别的,一个是指物理意义的文件的还原与拷贝,一个是指数据库一致性的恢复,所以,
正确的理解这两个概念,有助于正确的恢复数据库。
对于RMAN 的备份,还原操作只能是在用RMAN 或RMAN 包来做了,对于恢复操作
则是很灵活的了,除了RMAN,也可以在SQLPLUS 中完成。还原与恢复一个数据库,可
以用如下两个简单的命令完成
RMAN>restore database;
RMAN>recover database;
恢复整个数据库
在恢复整个数据库之前必须让数据库处于安装的状态(mount状态)
sql>startup mount
rman target / <<EOF
run {
allocate channel 'dev1' type disk   ;
allocate channel 'dev2' type disk ;
allocate channel 'dev3' type disk ;
restore  database ;
recover database ;
release channel dev1 ;
release channel dev2 ;
release channel dev3 ;
}
 恢复单个表空间
在恢复该表空间之前让该表空间处于脱机的状态(offline状态)
svrmgrl>alter tablespace users offline;
rman target / <<EOF
run {
allocate channel 'dev1' type disk   ;
allocate channel 'dev2' type disk ;
allocate channel 'dev3' type disk ;
restore  tablespace users ;
recover tablespace users ;
release channel dev1 ;
release channel dev2 ;
release channel dev3 ;
}
 
恢复一个表空间,或者恢复一个数据文件,相对比较恢复数据库可能花费更少的时间。
RMAN> SQL "ALTER TABLESPACE tools OFFLINE IMMEDIATE";
RMAN> RESTORE TABLESPACE tools;
RMAN> RECOVER TABLESPACE tools;
RMAN> SQL "ALTER TABLESPACE tools ONLINE";
对于数据库与数据文件,可以从指定的tag恢复
RMAN>RESTORE DATAFILE 1 FROM TAG=’tag name’
对于时间点恢复等不完全恢复,可能只有完全的还原数据库了。
RMAN> RUN {
2> ALLOCATE CHANNEL c1 TYPE DISK;
3> ALLOCATE CHANNEL c2 TYPE DISK;
4> SET UNTIL TIME = '2002-12-09:11:44:00';
5> RESTORE DATABASE;
6> RECOVER DATABASE;
7> ALTER DATABASE OPEN RESETLOGS; }
不完全恢复在RMAN 中还可以用基于日志的恢复
RMAN> RUN {
2> SET UNTIL SEQUENCE 120 THREAD 1;
3> ALTER DATABASE MOUNT;
4> RESTORE DATABASE;
5> RECOVER DATABASE; # recovers through log 119
6> ALTER DATABASE OPEN RESESTLOGS;
7> }
如果有可能,也可以恢复数据文件到一个新的位置
SET NEWNAME FOR datafile
'/u01/oradata/tools01.dbf' TO '/tmp/tools01.dbf';
RESTORE datafile '/u01/oradata/tools01.dbf';
SWITCH DATAFILE ALL;
除了恢复数据库与数据文件,我们也可以恢复控制文件,需要启动到nomount 下,用如下
的命令即可
14
Restore controlfile from ‘file name’
Restore controlfile from autobackup
Restore controlfile from tag=‘……’
在正常情况下,不用恢复归档日志,恢复进程会自动寻找所需要的归档日志,当然我们也可
以指定恢复到哪里。
SET ARCHIVELOG DESTINATION TO '/u02/tmp_restore';
RESTORE ARCHIVELOG ALL;
如果使用的服务器参数文件(spfile),RMAN 可以备份该参数文件,如果发生文件损坏,可
以用RMAN 恢复spfile 参数文件,在没有参数文件的情况下,用Rman 的临时参数文件启
动数据库到Nomount 下,执行如下命令即可
Restore controlfile from autobackup
Restore controlfile from ‘file name’

# find / -name rman
$ echo $PATH

$ sqlplus / as sysdba
SQL> startup mount;
SQL> alter database archivelog;
SQL> quit

$ rman
RMAN> connect target / //连接
RMAN> list backupset; //查看备份
RMAN> backup database;//备份命令
RMAN> backup incremental level=0 database; //0级备份
RMAN> backup incremental level 1 database; //1级备份
RMAN> list backupset;
RMAN> show all;      //查看命令参数
RMAN> quit

$ ls /u01/app/oracle/flash_recovery_area/ORCL/backupset/2012_07_14/
$ /u01/app/oracle/oradata/ORCL
$ strings control01.ctl //二进制文件

Leave a Reply