Oracle RMAN备份参数和命令介绍

备份理论和基本语法

备份概念

执行备份或还原草的数据库称为目标。在一些环境下,有许多数据库,因此有许多RMAN目标。应一次连接每个数据库。目标的每个备份都有一些属性:

打开或关闭

完整或部分

完整或增量

到磁盘还是磁带上

副本或备份集

这些属性可以随意组合,但根据环境和配置,可能只能使用这些属性的一个子集。在所有情况下,备份由Oracle服务器进程完成,启动该进程是为了响应RMAN可执行程序用户进程中发出的命令。

1.RMAN体系结构

RMAN可执行程序是一个用户进程,与其他用户进程一样。它在本地使用进程间通信(IPC),或者远程使用TCP和数据库侦听器,登录到一个Oracle数据库上。连接后,用户就可以发出命令,执行备份和还原操作。这些操作由根据需要启动的其他Oracle服务器进程(称为通道)来完成。通道是一个服务器进程,与其他服务器进程一样,但其基本功能仅限于复制文件。

RMAN的一个主要功能是使用库。RMAN库由与备份相关的元数据组成。这包括已备份的内容、备份文件和位置、存在哪些归档日志文件、已有的永久配置设置,以及RMAN理解数据库和备份,以完全自动执行还原和恢复操作所需的所有细节。该库存在于一个或两个位置。库的一个副本总是存储在目标数据库的控制文件中。仅依赖它可能会带来连个问题。第一,信息仅存储有限的时间。具体而言,就是CONTROL_FILE_RECORD_KEEP_TIME实例参数指定的天数,默认为7天。如果仅适用基于控制文件的库,就可能希望调整它,让RMAN把信息保留更长的时间。命令如下: 

SYS@ prod>sho parameter keep_time

NAME                                TYPE        VALUE------------------------------------ ----------- ------------------------------control_file_record_keep_timeinteger7SYS@ prod>altersystemsetcontrol_file_record_keep_time=30;

System altered.

SYS@ prod>


 RMAN还可以用Oracle数据库的形式给库使用第二个存储位置。这需要在数据中创建一个模式,称为RMAN目录。该目录应在数据库中创建,仅用于这个目的。该目录可以记录许多目标的元数据,用作所有备份信息的中心库。使用目录时,备份信息可以存储的时间段是没有限制的。使用目录还可以启用一些更高级的RMAN功能。

RMAN可以创建两类备份:映像副本和备份集。映像副本备份会生成一个输出文件,其中的每个字节都与输入文件相同。备份集是一种比较智能的结构。它可以把几个输入文件合并到一个输出文件中,不包含从来没有使用的输入文件块,可以压缩和加密,可以分解为多个块。这些块是构成备份集的物理文件。

2.在一个页面中备份

打开备份(也称为热备份或不一致备份)在数据库使用过程中进行。只有数据库在归档日志模式下,才能进行打开备份。这是因为可打开文件的任何备份都是不一致的。读取文件和写入副本要花相当长的时间,在这个过程中,文件可能已更新。因此,副本吧听不是文件的一个稳定版本。在归档日志模式下,这就不是什么问题,因为重做日志流会以变更矢量的形式记录应用于文件的所有变更,在备份的过程中,这些变更会应用于Oracle 块。如果需要从备份中还原文件,就可以应用这些变更,使用重做流中的信息,是不一致的备份可用。如果数据库没有处于归档日志模式,进行备份时执行的重做就不可用。

关闭备份(也称为冷备份或抑制备份)在数据库处于装载模式时进行。控制文件必须装载,RMAN才能访问其库。关闭备份是一致的;数据文件是稳定的,关闭备份时数据库处于非归档日志模式下时唯一可用的备份类型。

完整备份时备份所有数据文件和控制文件。局部备份是备份数据库的一个子集。完整备份是非归档日志模式下唯一可用的备份类型。这是由于要打开数据库,因此所有的数据文件必须有相同的系统变更号(SCN)。如果备份包含几个局部备份,每个局部备份就有不同的SCN。之后还原时,就需要重做数据,使所有的备份具有相同的SCN。这些重做数据不能在非归档日志模式下使用。

完整备份包含每个文件中每个使用过的块。增量备份只有自上一次备份以前改变的块。增量备份策略必须从一个完整备份开始,之后可以有随意多次增量备份,但还原总是需要先还原完整备份(称为0级备份),再应用增量备份,使文件保持最新。只有进行了新的0级备份,才能丢弃以前的备份。

RMAN基本语法

RMAN可执行程序在操作系统提示行上的命令:

rman target /rman target sys/oracle

rman target sys/oracle@orclz

 所有3个命令都以具备SYSDBA权限的用户身份登录到目标数据库上。在第一个命令中,目标是一个运行在同一台机器上的本地数据库实例,该机器用ORACLE_SID环境变量标识,用户用其操作系统账户进行身份验证。第二个例子也连接一个本地数据库实例,但使用数据库密码文件来验证身份。第三个例子使用tnsnames服务名,通过网络连接一个远程数据库,它也使用密码文件来验证身份。

1.在非归档日志模式下备份

 使用RMAN进行关闭的完整备份

[oracle@cuug ~]$ rman target/Recovery Manager: Release 11.2.0.1.0-Productionon鏄熸湡涓€ 4鏈?820:26:522019Copyright (c) 1982,2009, Oracleand/orits affiliates.All rights reserved.

connected totargetdatabase: PROD (DBID=292420020)

RMAN>shutdown immediate;

using target databasecontrolfileinsteadof recovery catalogdatabase closeddatabase dismounted

Oracle instance shut down

RMAN> startup mount

connected totargetdatabase(not started)

Oracle instance starteddatabase mounted

Total System Global Area    523108352 bytes

Fixed Size                    1337632 bytes

Variable Size                394266336 bytesDatabaseBuffers121634816 bytes

Redo Buffers                  5869568 bytes

RMAN>backupdatabase;

Starting backupat2019-04-0820:28:01allocated channel: ORA_DISK_1

channel ORA_DISK_1: SID=18device type=DISKchannel ORA_DISK_1: starting fulldatafilebackupsetchannel ORA_DISK_1: specifying datafile(s) inbackupsetinput datafile filenumber=00001name=/u01/oradata/prod/system01.dbf

input datafile filenumber=00002name=/u01/oradata/prod/sysaux01.dbf

input datafile filenumber=00003name=/u01/oradata/prod/undotbs01.dbf

input datafile filenumber=00005name=/u01/oradata/prod/example01.dbf

input datafile filenumber=00004name=/u01/oradata/prod/users01.dbf

channel ORA_DISK_1: starting piece 1at2019-04-0820:28:03channel ORA_DISK_1: finished piece 1at2019-04-0820:29:08piece handle=/u01/flash_recovery_area/PROD/backupset/2019_04_08/o1_mf_nnndf_TAG20190408T202802_gbphlm1z_.bkp tag=TAG20190408T202802 comment=NONE

channel ORA_DISK_1: backupsetcomplete, elapsed time:00:01:05channel ORA_DISK_1: starting fulldatafilebackupsetchannel ORA_DISK_1: specifying datafile(s) inbackupsetincluding currentcontrolfileinbackupsetincluding currentSPFILEinbackupsetchannel ORA_DISK_1: starting piece 1at2019-04-0820:29:09channel ORA_DISK_1: finished piece 1at2019-04-0820:29:10piece handle=/u01/flash_recovery_area/PROD/backupset/2019_04_08/o1_mf_ncsnf_TAG20190408T202802_gbphnor0_.bkp tag=TAG20190408T202802 comment=NONE

channel ORA_DISK_1: backupsetcomplete, elapsed time:00:00:01Finished backupat2019-04-0820:29:10RMAN>alterdatabaseopen;database opened

RMAN>exitRecovery Manager complete.[oracle@cuug ~]$

 2.归档日志模式下的备份可能性

下面是一些简单的备份命令:

BACKUP DATAFILE 1,2;

BACKUP TABLESPACE USERS,EXAMPLE;

BACKUP CURRENT CONTROLFILE;

BACKUP DATABASE;

BACKUP ARCHIVELOG ALL;

通常,单行命令是不够的。要把几个命令链接起来,必须把它们组合到一个块中。块用RUN作为前缀,并括在{}中。一个打开的完成备份,包括归档日志文件的备份呵呵删除,示例: 

RMAN>run {allocate channel d1 typedisk;2>allocate channel d2 typedisk;3>backupascompressed backupsetdatabaseformat'/home/oracle/db_%U.bset';4>backupascompressed backupset archivelogallformat'/home/oracle/arch_%U.bset'deleteall input;}

allocated channel: d1

channel d1: SID=35device type=DISKallocated channel: d2

channel d2: SID=1device type=DISKStarting backupat2019-04-0820:46:57channel d1: starting compressed fulldatafilebackupsetchannel d1: specifying datafile(s) inbackupsetinput datafile filenumber=00001name=/u01/oradata/prod/system01.dbf

input datafile filenumber=00005name=/u01/oradata/prod/example01.dbf

channel d1: starting piece 1at2019-04-0820:46:58channel d2: starting compressed fulldatafilebackupsetchannel d2: specifying datafile(s) inbackupsetinput datafile filenumber=00002name=/u01/oradata/prod/sysaux01.dbf

input datafile filenumber=00003name=/u01/oradata/prod/undotbs01.dbf

input datafile filenumber=00004name=/u01/oradata/prod/users01.dbf

channel d2: starting piece 1at2019-04-0820:46:58.

.

.

.

.

 在run块中,前两个命令ALLOCATE CHANNEL,分配一个通道,会启动一个服务器进程。每个通道都需要名称(只是一个随意的字符串,本例是d1和d2),必须指定是使用磁带还是磁盘作为备份目标。启动多个通道,会启用备份的并行性。RMAN会把工作负载分布到通道上。第三行指定完整的数据库备份,使用FORMAT指定输出块的名称。第四行指定所有的归档日志文件都应备份和删除。FORMAT规范包含%U。这是一个变量,会扩展为一个名称,该名称包含8字符的任意字符串,以确保块运行多次时,总是生成不同的块名。备份的类型是COMPRESSED BACKUPSET。压缩通常不仅会减少备份块的大小,还会提高操作的速度。

默认的备份类型是备份集。另一个类型是映像副本。要撞见副本,可以使用如下命令:

BACKUPASCOPY DATAFILE'/u01/oradata/orcl/system1.dbf' FORMAT '/U02/backup/orcl/system01.dbf';BACKUPASCOPYDATABASE;


第一个命令把一个数据文件复制到指定的目标。第二个命令把整个数据库复制到默认的目标,即快速恢复区。

永久RMAN设置

1.设置和清理默认值

使用SHOW ALL命令查看默认值

RMAN>showall;

RMAN configuration parameters fordatabasewith db_unique_name PROD are:

CONFIGURE RETENTION POLICY TOREDUNDANCY1; #defaultCONFIGURE BACKUPOPTIMIZATIONOFF; #defaultCONFIGURE DEFAULTDEVICE TYPETODISK; #defaultCONFIGURE CONTROLFILE AUTOBACKUP OFF; #defaultCONFIGURE CONTROLFILE AUTOBACKUP FORMAT FORDEVICE TYPEDISKTO'%F'; #defaultCONFIGURE DEVICE TYPE DISKPARALLELISM1BACKUPTYPETOBACKUPSET; #defaultCONFIGURE DATAFILE BACKUPCOPIESFORDEVICE TYPEDISKTO1; #defaultCONFIGURE ARCHIVELOG BACKUPCOPIESFORDEVICE TYPEDISKTO1; #defaultCONFIGURE MAXSETSIZE TOUNLIMITED; #defaultCONFIGURE ENCRYPTION FORDATABASEOFF; #defaultCONFIGURE ENCRYPTION ALGORITHM 'AES128'; #defaultCONFIGURE COMPRESSION ALGORITHM 'BASIC'ASOFRELEASE'DEFAULT'OPTIMIZEFORLOADTRUE ; #defaultCONFIGURE ARCHIVELOG DELETION POLICY TONONE; #defaultCONFIGURE SNAPSHOT CONTROLFILE NAME TO'/u01/oracle/dbs/snapcf_prod.f'; #defaultRMAN>

RETENTION POLICY 指定RMAN应创建什么备份,合适可以删除它们。默认值是每个文件的一个副本。

OPTIMIZATION 确定,即使已有足够的备份,RMAN是否仍要根据请求备份文件。默认值是总是备份它们。

DEFAULT DEVICE TYPE TO DISK 表示除非明确指出,否则RMAN就仅启动磁盘通道,不写入磁带。

CONTROLFILE AUTOBACKUP OFF 禁止RMAN自动备份控制文件,作为其他备份操作的一部分。

AUTOBACKUP FORMAT 为控制文件的自动备份生成名称和位置。

DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET 表示,在默认情况下,备份到磁盘时,只启动一个通道,该备份是一个未压缩的备份集。

BACKUP COPIES 指定在备份数据文件和归档日志文件时,应生成备份集的多少副本。

MAXSETSIZE 可以限制每个备份集的大小。如果达到了这个数字,就关闭该备份集块,继续备份到一个新的备份集中。

ENCRYPTION 默认禁用备份集的加密。

COMPRESSION 如果请求压缩,就使用BASIC算法,它是免费的。

ARCHIVELOG DELETION POLICY 允许RMAN根据各种条件,自动删除不再需要的归档日志。

SNAPSHOT CONTROLFILE 为控制文件的临时副本指定名称和位置,这些临时副本创建为控制文件备份机制的一部分。

需求示例:总是可以把数据库还原到前两周的任意时刻;创建达到该目标所需的备份,备份写入磁盘,使用4个通道的并行程度;控制文件必须总是包含在任何备份中;备份是压缩过的备份集,存储在c:\db_backups目录中;备份集块根据库名、备份日期和唯一字符串来命名;归档日志在备份到磁盘上两次后删除。要配置这个需求,应运行如下命令:

configure retention policytorecovery windowof14 days;

configure backupoptimizationon;

configure controlfile autobackup on;

configure device type diskparallelism4backuptypeto compressed backupset;

configure channel device type diskformat'c:\db_backups\%d_%T_%u';

configure archivelog deletion policy tobackup2timestodisk;


在使用命令就能满足上述需求:

backupdatabase;backuparchivelogalldeleteinput;


永久配置设置是为每个目标数据库配置的,存储在RMAN库中,要返回默认值,可以连接目标,执行CLEAR命令:

configure retention policy clear;

configure backup optimization clear;

configure controlfile autobackup clear;

configure device type disk clear;

configure channel device type disk clear;

configure archivelog deletion policy clear;


2.使用保留策略

使用恢复窗口或冗余,就可以自动保留和管理备份。使用恢复窗口,RMAN会分局需要保留许多备份,知道数据库返回恢复窗口的任意时间点位置。例如,在7天的恢复窗口中,RMAN会维护足够多的映像副本、增量备份和归档重做日志,确保数据库可以还原和恢复前7天内的任意时间点。如果使用快速恢复区,且新备份需要磁盘空间,则不需要支持这个恢复窗口的任何备份都标记为OBSOLETE,并由RMAN自动删除。

相反,冗余策略告诉RMAN保留特定数量的备份。超过冗余策略中的指定的数字的任何额外副本或备份都标记为OBSOLETE。与恢复窗口一样,如果需要磁盘空间,使用了快速恢复区,则过时的备份会自动删除。否则,可以使用DELETE OBSOLETE命令手工删除备份文件,更新目录。

如果保留策略设置为NONE,任何备份或副本就都不会过时,DBA必须手工删除目录和磁盘中不需要的备份。默认情况下,保留策略是一个副本(保留策略设置为1)。使用下面的RMAN命令,可以把保留策略设置为两个副本:

configure retention policy to redundancy 2;

下面的命令把保留策略设置为4天的恢复窗口:

configure retention policy to recovery window of 4 days;

Oracle最佳实践建议,使用恢复窗口,在发现错误之前执行时间点恢复。

当RMAN外部的备份系统把磁盘备份存储到磁带中,并删除了它们时,禁用保留策略是有用的。

configure retention policy to none;

3.格式指定符

为了生成名称,需要配置永久格式指定符,使用字面量(如目录名)和变量组合。变量如下:

%d 数据库名

%e 归档日志序列号

%f 绝对文件号

%F 组合数据库标识符(DBID)、日期、月份、年份和序列号,用短横线隔开

%c 双重备份中多个副本的副本号

%I DBID

%N 表空间名,占8个字符

%t 备份集时间戳

%p 备份集中的块号

%s 备份集号

%u 实际上,是8个随机字符,派生与备份集号和时间

%U 系统生成的唯一文件名(默认)。对于备份集,它等价于%u_%p_%c;对于数据文件影响副本,它是data-D-%d_id-%I_TS-%N_FNO-%f_%u;对于归档日志映像副本,它是arch-D-%d_id-%I_S-%e_T-%h_A-%a_%u;对于控制文件映像副本,它是cf-D_%d-id-%I_%u

你可能感兴趣的:(Oracle RMAN备份参数和命令介绍)