Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1279270
  • 博文数量: 1211
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 14340
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-09 11:20
文章分类

全部博文(1211)

文章存档

2011年(1)

2008年(1210)

我的朋友

分类: 服务器与存储

2008-06-13 15:56:56

ORACLE备份分为物理备份和逻辑备份两种。物理备份就是转储ORACLE物理文件(如数据文件、控制文件、归档日志文件等),一旦数据库发生故障,可以利用这些文件进行还原;逻辑备份就是对数据库对象(如用户、表、存储过程等)利用EXPORT等工具进行导出工作,可以利用IMPORT等工具把逻辑备份文件导入到数据库。RMAN备份是一种物理备份,可以用RMAN来备份数据文件、控制文件、参数文件、归档日志文件。在数据库出现问题的时候可以通过RMAN物理备份恢复到数据库的失效点。

    开始和退出RMAN

进入RMAN恢复管理器有两种方式:

1、 直接在系统命令提示符敲入rman命令,进入rman控制台后执行connect。

D:\>rman
恢复管理器: Release 10.2.0.2.0 - Production on 星期四 1月 4 10:08:52
Copyright (c) 1982, 2005, Oracle. All rights reserved.
RMAN> connect target /
连接到目标数据库: ROME (DBID=252956976)
RMAN>

2、在系统命令提示符下敲入target和catalog(没有此项默认非catalog方式,控制文件记录rman操作的详细信息)的用户和密码。

# example of operating system authentication
D:\>rman TARGET /
# example of Oracle Net authentication
D:\>rman TARGET SYS/oracle@orcl NOCATALOG

D:\>rman TARGET / CATALOG rman/rman@catdb
D:\>rman TARGET SYS/oracle@orcl CATALOG rman/rman@catdb
RMAN> exit
恢复管理器完成。

注:我们将在以后章节讲述带有恢复目录的RMAN操作。

我们可以看一下rman可以连接的数据库的类型如下:
Target database RMAN connects you to the target database, which is the database that you are backing up or recovering, with the SYSDBA privilege. If you do not have this privilege, then the connection fails.
Recovery catalog database This database is optional. By default, RMAN runs in NOCATALOG mode.
Auxiliary database You can connect to a standby database, duplicate database, or auxiliary instance (standby instance or tablespace point-in-time recovery instance).

Note:
You do not need to specify the SYSDBA option because RMAN uses this option implicitly and automatically.

RMAN配置

执行show all命令可以显示rman的当前配置。

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 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 ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\S NCFROME.ORA'; # default
如果想恢复某项设置,我们执行如下命令:CONFIGURE... CLEAR。

大部分配置项的值都是TO后边的内容,个别的除外,例如:
CONFIGURE ENCRYPTION FOR DATABASE OFF RMAN> configure retention policy to redundancy 2;
新的 RMAN 配置参数:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
已成功存储新的 RMAN 配置参数:
RMAN> show all;
RMAN 配置参数为:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2; 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 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 ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\S NCFROME.ORA'; # default RMAN> configure retention policy clear;
旧的 RMAN 配置参数:
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
RMAN 配置参数已成功重置为默认值:
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 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 ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\ORACLE\PRODUCT\10.2.0\DB_1\DATABASE\S NCFROME.ORA'; # default
下面详细讲一下rman的各项配置的含义:

1、 Configuring the Default Device Type for Backups:配置缺省备份设备

缺省情况下rman默认的备份设备为磁盘disk,也可以配置其他介质作为rman的备份设备如磁带等。
RMAN> CONFIGURE DEFAULT DEVICE TYPE TO sbt; RMAN> CONFIGURE DEFAULT DEVICE TYPE TO DISK;
关于设备的类型要参考设备提供商给的说明文档,按照他们提供的设备名进行备份设备的配置。

2、Configuring the Default Backup Type for Disk Backups: 配置磁盘备份的备份类型:备份集或者镜像拷贝(文件拷贝)
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COPY; # image copies RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET; # uncompressed

镜像拷贝只适用于磁盘备份,磁带等其他介质只支持备份集。镜像拷贝是对数据文件等的拷贝,占用空间大消耗时间长,所以不建议使用。

如果备份类型是备份集的话,我们还可以制定下面的压缩参数:
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO COMPRESSED BACKUPSET; RMAN> CONFIGURE DEVICE TYPE sbt BACKUP TYPE TO COMPRESSED BACKUPSET;
这里要注意,如果想要恢复Compressed,可以再次执行以下命令,而不是用clear命令来清除Compressed参数。
RMAN> CONFIGURE DEVICE TYPE DISK BACKUP TYPE TO BACKUPSET; RMAN> CONFIGURE DEVICE TYPE sbt BACKUP TYPE TO BACKUPSET;
另外备份类型还支持并行度参数PARALLELISM,默认值为1,我们可以适当调节该参数来加快备份速度。

3、Configuring Disk Devices and Channels:配置磁盘设备和通道

Rman通过通道连接到目标数据库,通道执行着rman的全部工作,缺省情况下rman为所有的操作分配1个通道。
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'd:\ora_df%t_s%s_p%p';
如果是asm磁盘可以按照如下配置:
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '+dgroup1';
如果是磁带设备可以按照如下配置:
CONFIGURE CHANNEL DEVICE TYPE sbt PARMS='ENV=mml_env_settings';
通过PARMS指定备份设备对应的串。

4、Configuring Control File and Server Parameter File Autobackup: 配置控制文件和参数文件自动备份

我们可以通过下面命令来启用和停用控制文件自动备份。
CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE CONTROLFILE AUTOBACKUP OFF;
如果控制文件自动备份启动,每次控制文件内容发生变化的时候,oracle 自动在如下目录下(如果没有指定控制文件备份格式,并且安装了快速恢复区flash recovery area的话)备份控制文件。
…\flash_recovery_area\SID\AUTOBACKUP\2007_01_04\
5、Configuring the Control File Autobackup Format: 配置控制文件自动备份格式

CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:\cf_%F';
如果是asm存储设备,可以如下设置控制文件自动备份格式:
CONFIGURE CONTROLFILE AUTOBACKUP FOR DEVICE TYPE DISK TO '+dgroup1';
清除控制文件自动备份格式命令如下:
CONFIGURE CONTROLFILE AUTOBACKUP FOR DEVICE TYPE DISK CLEAR; CONFIGURE CONTROLFILE AUTOBACKUP FOR DEVICE TYPE sbt CLEAR;
当然,我们也可以在执行rman操作的设置备份格式,如:

RMAN> SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE sbt
TO 'controlfile_%F'; RMAN
RMAN> BACKUP AS COPY DATABASE;
以上设置在整个rman操作控制台生效。
RMAN> RUN { SET CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '/tmp/%F.bck'; BACKUP AS BACKUPSET DEVICE TYPE DISK DATABASE; }
这个set设置在rman程序块生效。

6、Configuring the Backup Retention Policy: 配置备份保留策略

备份保留策略有两种方式,一种是基于时间的保留策略,一种是基于冗余度的保留策略。


based on a recovery window (the maximum number of days into the past
for which you can recover) or redundancy (how many copies of each backed-up file to keep).
RECOVERY WINDOW参数指出了最大保留时间为从当前日期到多少天前。
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
Rman将保留着这期间的任何全库备份和level 0的增量备份,同时rman也保留着归档日志和level 1的增量备份,以便于可以做这个期间的基于时间点的恢复。Rman不会删除过期的备份,如果我们用REPORT OBSOLETE可以看到过期的备份并且执行DELETE OBSOLETE来删除过期的备份。

REDUNDANCY参数指出了我们想保留几份备份文件。
CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
查看当前备份保留策略:
RMAN> SHOW RETENTION POLICY;

如果我们执行以下命令来清除备份保留策略,rman将不会将任何备份标记为过期。

RMAN备份

Rman可以备份数据文件、归档日志、控制文件、参数文件、备份集文件(其他rman操作备份产生)。

Rman备份文件有两种存储方式:镜像拷贝和备份集。两者是有区别的,备份集只备份使用过的数据块而镜像拷贝是拷贝整个数据文件。

最简单的一个全库备份Whole Database Backups命令如下:
RMAN> BACKUP DATABASE; # uses automatic channels to make backup RMAN> SQL 'ALTER SYSTEM ARCHIVE LOG CURRENT'; # switches logs and archives all logs
备份集

备份集是rman按照逻辑结构存储备份的一种文件格式。备份集可以包含多个数据文件、归档文件、控制文件和参数文件,但是数据文件和归档文件不能放在一个备份集内。也可以把一个备份集备份到另外一个备份集(合并备份集)。一个文件不能备份到2个备份集内。

备份片

一个备份集可以由一个或者多个备份片组成。

注意,这里需要解释一个概念。Full and Incremental Datafile Backups全部和增量数据文件备份,这里的full和a whole database backup是有区别的。a whole database backup是备份全部数据文件和当前控制文件和参数文件。以后我们讲到的增量备份只是针对数据文件而言。

备份可以自己执行格式,也可以使用默认格式:
RMAN> BACKUP DATABASE FORMAT '/tmp/%U'; # %U generates a unique filename RMAN> BACKUP DATABASE TAG = 'weekly_backup'; # gives the backup a tag identifier
备份表空间:
BACKUP DEVICE TYPE sbt MAXSETSIZE = 10M TABLESPACE users, tools;
备份数据文件、镜像拷贝:
BACKUP DEVICE TYPE sbt DATAFILE 1,2,3,4 DATAFILECOPY 'd:\system01.dbf';
当然我们也可以单独备份镜像拷贝文件:
BACKUP DEVICE TYPE sbt DATAFILECOPY '/tmp/system01.dbf';
注意上边这个是把数据文件1234和以前做的镜像拷贝同时备份。

备份控制文件:
我们可以直接执行BACKUP CURRENT CONTROLFILE命令来备份控制文件。可以在任何backup命令后边加上INCLUDE CURRENT CONTROLFILE操作来备份控制文件。
一个全库备份包含了单前控制文件,这里要注意控制文件自动备份和手动备份的区别,后者可以在任何修改控制文件的操作执行后自动备份控制文件,而前者则不能,我们在讲rman配置的时候也提到过这些。下面给几个例子:
BACKUP CURRENT CONTROLFILE TAG = mondaypmbackup; BACKUP DEVICE TYPE sbt TABLESPACE users INCLUDE CURRENT CONTROLFILE; --生成控制文件镜像拷贝 BACKUP AS COPY CURRENT CONTROLFILE FORMAT '/tmp/control01.ctl'; --备份控制文件镜像拷贝 BACKUP DEVICE TYPE sbt CONTROLFILECOPY '/tmp/control01.ctl';
备份参数文件:
BACKUP DEVICE TYPE sbt SPFILE;
备份归档日志:
我们可以直接执行BACKUP ARCHIVELOG或者在备份数据文件和控制文件的同时指定BACKUP ... PLUS ARCHIVELOG操作来一起备份归档日志。
我们可以备份全部归档日志,也可以指定参数来备份部分归档日志:
BACKUP ARCHIVELOG ALL; BACKUP ARCHIVELOG FROM TIME 'SYSDATE-30' UNTIL TIME 'SYSDATE-7'
备份归档开始执行的时候,rman会发出一个切换日志的命令(我们可以从v$log观察),然后归档所有非当前日志,然后再执行归档日志的备份。
在备份完归档日志后我们可以指定DELETE INPUT or DELETE ALL INPUT这两个参数,来删除备份集中已经备份过的或者全部归档日志文件。
下面再给出几个示例备份归档的命令:
RMAN> BACKUP ARCHIVELOG LIKE 'ORACLE/ARC/DEST/LOG%'; RMAN> BACKUP ARCHIVELOG ALL; RMAN> BACKUP ARCHIVELOG FROM LOGSEQ 20 UNTIL LOGSEQ 50 THREAD 1; RMAN> BACKUP ARCHIVELOG FROM SCN 1 UNTIL SCN 9999;
我们可以使用如下命令在进行其他备份的同时来备份归档日志文件:
RMAN> BACKUP ... PLUS ARCHIVELOG
上述命令的执行过程如下:

执行ALTER SYSTEM ARCHIVE LOG CURRENT命令。

执行BACKUP ARCHIVELOG ALL命令。如果backup optimization参数设置为enabled,rman将不备份那些已经备份过的归档日志文件。

备份在BACKUP命令中指定的备份内容。

执行ALTER SYSTEM ARCHIVE LOG CURRENT命令。

备份在BACKUP命令执行过程中产生的其他的归档日志文件。

压缩备份集:
BACKUP AS COMPRESSED BACKUPSET DATABASE PLUS ARCHIVELOG; BACKUP AS COMPRESSED BACKUPSET DATAFILE 1,2,4;
为了能在灾难性损坏的时候有效的恢复数据库,我们需要保留一些机器配置、操作系统和数据库的一些基础信息。

数据库服务器机器名称、IP地址、操作系统版本和补丁号、磁盘数量和驱动器号、磁盘容量和剩余空间、数据文件名称、数据库SID、DBID、ORACLE版本和补丁号、常用的RMAN备份脚本等等。

阅读(434) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~