2024年1月2日发(作者:)

RMAN 自动备份详解

目录

1 数据库修改为自动归档模式。 ........................................................................................... 2

2 修改rman参数 .................................................................................................................... 3

3 rman自动备份脚本............................................................................................................... 8

4 设置系统自动备份参数: ................................................................................................. 10

5 rman还原 ......................................................................................................................... 11

恢复整个数据库 ............................................................................................................. 11

恢复单个表空间 ............................................................................................................. 12

/unixcd12/article_ 增量备份详解 网上很多

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..’; #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… '

是配置控制文件的快照文件的存放路径和文件名,这个快照文件是在备份期间产生的,用于控制文件的读一致性。

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/';

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

'/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;

TO

3 rman自动备份脚本

完全备份脚本

rman target / <

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_' append <

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_' append <

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_' append <

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/' append <

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/' append <

connect target /;

run

{

delete noprompt obsolete;

}

EOF

4 设置系统自动备份参数:

man增量备份计划,把用到的脚本贴出来,方便以后查找!

crontab 自动计划。设置自动执行计划,在rman初始化环境里面,打开自动备份控制文件功能

#crontab -e

0 1 * * 0 su – oracle -c /xxx/

//每周日1:00执行0级备份

0 1 * * 1-3,5-6 su – oracle -c /xxx/

//每周一至周三,周五至周六1:00执行2级增量备份

0 1 * * 4 su – oracle -c /xxx/

//每周四1:00执行1级增量备份

0 18 * * 6 su - oracle -c /xxx/

//每周六16点执行检测

0 18 * * 0 su – oracle –c /xxx/rman_

//每周日18:00删除过期的的备份数据

5 rman还原

RMAN 的整个恢复过程可以分为还原(restore)与恢复(recover),他们在含义上是有

很大差别的,一个是指物理意义的文件的还原与拷贝,一个是指数据库一致性的恢复,所以,

正确的理解这两个概念,有助于正确的恢复数据库。

对于RMAN 的备份,还原操作只能是在用RMAN 或RMAN 包来做了,对于恢复操作

则是很灵活的了,除了RMAN,也可以在SQLPLUS 中完成。还原与恢复一个数据库,可

以用如下两个简单的命令完成

RMAN>restore database;

RMAN>recover database;

恢复整个数据库

在恢复整个数据库之前必须让数据库处于安装的状态(mount状态)

sql>startup mount

rman target / <

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 / <

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/' TO '/tmp/';

RESTORE datafile '/u01/oradata/';

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’