ORACLE 备份恢复之RMAN详解

时间:2024-10-10 12:26:36

一、连接方式
(一)、连接本地数据库

[oracle@oracle ~]$ rman target /

(二)、连接远程数据库

[oracle@oracle ~]$ rman target sys/oracle@orcl

二、基本指令
(一)、执行 SQL 语句

RMAN>SQL ‘ALTER SYSTEM SWITCH LOGFILE’;

(二)、RMAN 默认配置
1.显示 RMAN 默认配置

RMAN>SHOW ALL;

2.RMAN 默认配置详解

using target database control file instead of recovery catalog
RMAN configuration parameters are:
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';
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET;
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
'/u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_orcl.f'; # default

#default 表示该条配置仍然是初始的默认配置。
如果想把某条更改过的配置再置为初始应该怎么做,很简单,用如下命令:CONFIGURE ... CLEAR;
例如:

RMAN> CONFIGURE RETENTION POLICY CLEAR;

旧的RMAN 配置参数:

CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 3 DAYS;

RMAN 配置参数已成功重置为默认值
1、CONFIGURE RETENTION POLICY 配置备份保留策略
有两种保留策略:
基于时间:

RMAN>CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF n DAYS;

基于冗余数量:

RMAN>CONFIGURE RETENTION POLICY TO REDUNDANCY n;

也可以取消备份保留策略:

RMAN>CONFIGURE RETENTION POLICY TO NONE;

2、CONFIGURE BACKUP OPTIMIZATION 配置备份优化
如果优化设置打开,将对备份的数据文件、归档日志或备份集运行一个优化算法。备份优化,包括OFF 和ON 两个状态。
打开备份优化:

RMAN>CONFIGURE BACKUP OPTIMIZATION ON;

关闭备份优化:

RMAN>CONFIGURE BACKUP OPTIMIZATION OFF;

3、CONFIGURE DEFAULT DEVICE TYPE 配置IO 设备类型
RMAN 支持的 IO 设备类型有两种:磁盘(DISK)和磁带(SBT),默认情况下为磁盘。
使用磁盘设备

RMAN>CONFIGURE DEFAULT DEVICE TYPE TO DISK;

使用磁带设置:

RMAN>CONFIGURE DEFAULT DEVICE TYPE TO SBT;

在这里需要注意的一点是:如果IO 设备发生变化,相关配置项也需要修改。例如:

RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 2;

4、CONFIGURE CONTROLFILE AUTOBACKUP 配置控制文件自动备份
是否自动备份,包含两个状态:OFF 和ON
打开自动备份:

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP ON

禁止自动备份:

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP OFF

同时可以通过如下配置指定备份的控制格式,路径。例如:

RMAN>CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE
DISK TO 'd:/backup/%F';

在备份期间,将产生一个控制文件的快照,用于控制文件的读一致性,这个快照可以通过如下配置:

RMAN>CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:/backup/';

5、CONFIGURE DEVICE TYPE 设置并行备份
RMAN 支持并行备份与恢复,也可以在配置中指定默认的并行程度。例如:

RMAN>CONFIGURE DEVICE TYPE DISK PARALLELISM 2;

指定在以后的备份与恢复中,将采用并行度为2,同时开启2个通道进行备份与恢复,当然也可以在run 中指定通道来决定备份与恢复的并行程度。

默认情况下,自动分配通道的并行度为1,如果你通过设置PARALLELISM 设置了并行通道为2,那么在run 块中,如果你没有单独通过ALLOCATE CHANNEL 命令指定通道,它会默认使用2 条并行通道,如果在run 命令块中指定了数个ALLOCATECHANNEL , 那 么 rman 在 执 行 备 份 命 令 时 会 以 你 设 置 的 channel 为 准 , 而 不 管configure中配置了多少个并行通道。

需要注意的一点是,在backup 命令中有一个 FILESPERSET 参 数 该 参 数 是 指rman建立的每个备份集中所能包含的备份片段(即磁盘文件)的最大数,该参数默认值为64,如果在执行backup 命令时没有指定该参数值,那么rman 会仅使用第一个通道来执行备份,其它通道将处于空闲状态。filesperset 值不要小于你设定的通道数。

6、CONFIGURE DATAFILE BACKUP COPIES设置备份文件冗余度

7、CONFIGURE MAXSETSIZE 配置备份集的最大尺寸
该配置限制通道上备份集的最大尺寸。单位支持bytes,K,M,G。默认值是unlimited。

RMAN> show channel; // 通道分配
RMAN> show device type; // IO 设备类型
RMAN> show retention policy; // 保存策略
RMAN> show datafile backup copies; // 多个备份的拷贝数目
RMAN> show maxsetsize; // 备份集大小的最大值
RMAN> show exclude; // 不必备份的表空间
RMAN> show backup optimization; // 备份的优化

(三)、FORMAT 字符串替代变量
使用FORMAT 参数时可使用的各种替换变量,如下:

%c:备份片的拷贝数(从1 开始编号);
%d:数据库名称;
%D:位于该月中的天数(DD);
%M:位于该年中的月份(MM);
%F:一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序列;
%n:数据库名称,并且会在右侧用x 字符进行填充,使其保持长度为8;
%u:是一个由备份集编号和建立时间压缩后组成的8 字符名称。利用%u 可以为每个备份集生成一个唯一的名称;
%p:表示备份集中备份片段的编号,从1 开始编号;
%U:是%u_%p_%c 的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式;
%s:备份集的号;
%t:备份集时间戳;
%T:年月日格式(YYYYMMDD);
注:如果在BACKUP 命令中没有指定FORMAT 选项,则RMAN 默认使用%U 为备份片段命名。

(四)、RMAN 备份相关的动态性能表

V$ARCHIVED_LOG:本视图包含了所有归档重做日志文件的创建情况,备份情况以及其他信息。
V$BACKUP_CORRUPTION:这个视图显示了RMAN 在哪些备份集中发现了损坏的数据坏。在你使用BACKUP VALIDATE 命令对备份集进行检查时如果发现了损坏的数据块,RMAN 将在这个视图中写入记录。
V$COPY_CORRUPTIO:本视图显示了哪些镜像复制备份文件已经被损坏。
V$BACKUP_DATAFILE:本视图通常用来获取每个数据文件中非空白数据块的数量,从而帮助你创建出大小基本相等的备份集。另外,在视图中也包含了数据文件中损坏的数据块的信息。
V$BACKUP_REDOLOG:本视图显示了在现有的备份集中饮食有哪些归档重做日志文件。
V$BACKUP_SET:本视图显示了已经创建的备份集的信息。
V$BACKUP_PIECE:本视图显示了已经创建的备份片段的信息。

(五)、备份信息

1.列出备份信息
列出数据库中所有文件的备份信息:

RMAN>LIST BACKUP OF DATABASE;

列出指定表空间的备份信息:

RMAN>LIST COPY OF TABLESPACE 'SYSTEM';

列出指定数据文件的备份信息:

RMAN>LIST BACKUP OF DATAFILE 'D:\BACKUP\';

2.删除备份信息
1.删除陈旧备份
当使用 RMAN 执行备份操作时,RMAN 会根据备份冗余策略确定陈旧备份。

RMAN> delete obsolete;

2.删除 EXPIRED 备份
执行 crosscheck 命令核对备份集,如果备份集丢失或者损坏,那么会将该备份集标记为 EXPIRED 状态。为了删除相应的备份记录,可以执行 delete expired backup 命令。

RMAN> delete expired backup;

3.删除 EXPIRED 副本

RMAN> delete expired copy;

4.删除特定备份集

RMAN> delete backupset 3;

5.删除特定备份片

RMAN> delete backuppiece 'd:\backup\DEMO_3.bak';

6.删除所有备份集

RMAN> delete backup;

7.删除特定映像副本

RMAN> delete datafilecopy 'd:\backup\DEMO_3.bak';

8.删除所有映像副本

RMAN> delete copy;

9.在备份后删除输入对象

RMAN> delete archivelog all delete input;
RMAN> delete backupset 12 format = ''d:\backup\%'' delete input;

(六)、指令运行方式
1.单个执行

RMAN>backup database;

2.批处理

RMAN>RUN{
.......................
..........