1. RMAN简介
rman主要用于执行数据库的备份、恢复和灾难恢复操作,是Oracle数据库管理员进行日常维护工作的重要工具之一。
2. Oracle RMAN 配置参数详解
查看命令:
show all
RMAN> show all;
参数一:
备份保留策略
CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
CONFIGURE RETENTION POLICY TO NONE;
说明:
可以按时间策略进行保留,设置7天的窗口,7天后就会被标记为obsolete。
可以按冗余数进行保留,设置3份,超过3份就会被标记为obsolete。
report obsolete; 可以查看
参数二:
备份优化器开关
CONFIGURE BACKUP OPTIMIZATION OFF; # default
CONFIGURE BACKUP OPTIMIZATION ON;
CONFIGURE BACKUP OPTIMIZATION OFF;
说明:
rman自动采用优化算法进行备份,判断哪些需要备份,哪些可以跳过,防止备份冗余,节省空间
参数三:
默认的备份设备类型
CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
CONFIGURE DEFAULT DEVICE TYPE TO SBT_TAPE;
说明:
指定默认备份的设备类型,可以是磁盘或者磁带,可以是第三方的SBT库。
Oracle自带SBT库位置SBT_LIBRARY=oracle.disksbt。
参数四:
控制文件自动备份开关
CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
CONFIGURE CONTROLFILE AUTOBACKUP ON;
说明:
当数据库发起备份,或者数据库结构发生变化,将会自动备份控制文件。
12c之后默认为开启状态
参数五:
控制文件自动备份的路径和格式
CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO ‘%F’; # default
说明:
配置控制文件自动备份的位置和格式,可以是磁盘或者磁带。
参数六:
配置备份通道的并行度
CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
CONFIGURE DEVICE TYPE DISK PARALLELISM 2;
说明:
配置默认的通道数量,可以是磁盘的通道或者磁带的通道。
参数七:
备份副本数
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
参数八:
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK clear;
说明:
数据文件和归档的默认备份副本数。
参数九:
备份集的最大限制
CONFIGURE MAXSETSIZE TO UNLIMITED; # default
默认是无限制大小。
参数十:
备份加密开关
CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
Rman优化配置参数:
一般需优化以下配置
1.启用配置备份优化
RMAN> CONFIGURE BACKUP OPTIMIZATION on;
2.设置控制文件或参数文件自动备份。
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
3.设置rman备份集的保留天数
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 10 DAYS;
旧的 RMAN 配置参数:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS;
新的 RMAN 配置参数:
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 10 DAYS;
已成功存储新的 RMAN 配置参数
4.设置控制文件备份路径
CONFIGURE SNAPSHOT CONTROLFILE NAME TO 'D:\APP\ADMINISTRATOR\PRODUCT\11.2.0\DBHOME_2\DATABASE\SNCFORCL.ORA'
3.备份文件的格式介绍
使用format参数时可使用的各种替换变量,如下(注意大小写)所示。
1. %a:
Oracle数据库的activation ID即RESETLOG_ID。
2. %c:
指定一组双重备份条目中备份条目的副本号。如果未进行备份双工,则备份集的该变量为1,代理副本的该变量为0(从1开始编号,最大不超过256)。
3. %d
oracle数据库的名称
4. %D
当前时间中的日,格式为DD。
5. %e
指定存档的日志序列号。
6. %f
绝对文件编号。
7.%F
基于"DBID+时间"确定的唯一名称,格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中:
IIIIIIIIII代表DBID。DBID以十进制格式打印,因此很容易与目标数据库关联。
YYYYMMDD是生成备份当天的公历时间戳
QQ以16进制数表示的序列,从00开始,最大值为“FF”(256)
注意:%F仅在中有效CONFIGURE CONTROLFILE AUTOBACKUP FORMAT命令。
8.%h
指定归档重做日志线程号。
9.%I
Oracle数据库的DBID。
10. %M
当前时间中的月,格式为MM。
11. %n
指定数据库的名称,在右边用x字符的总长度为八个字符。例如,如果prod1是数据库名称,则填充名称是prod1xxx。
12. %N
指定表空间名称。此替代变量仅在将数据文件备份为映像副本时有效。
13.%p
指定备份集内的条目编号。该值始于1每创建一个备份条目,增量为1。
注意:如果您指定PROXY,然后是%p变量必须包含在FORMAT字符串中显式或隐式%U.
14.%s
指定备份集编号。此数字是控制文件中的计数器,每个备份集都会递增。计数器值从1开始,在控制文件的生存期内是唯一的。如果恢复备份控制文件,则可能会产生重复的值。另外,CREATE CONTROLFILE会将计数器初始化回1。
15.%t
指定备份集时间戳,该时间戳是一个4字节值,是从固定参考时间起经过的秒数。您可以结合使用%s和%t以形成备份集的唯一名称。
16. %T
当前时间中的年月日,格式为YYYYMMDD。
17. %u
指定8个字符的名称,由备份集或映像副本编号的压缩表示形式以及备份集或映像副本的创建时间组成。
18. %U
指定系统生成的唯一文件名(默认值)。
%U的含义对于映像副本和备份件是不同的。对于备份项,%U为%U_%p_%c指定了一个方便的简写,以确保生成的备份文件名的唯一性。
对于数据文件的图像副本,%U表示以下内容:data-D-%d_id-%I_TS-%N_FNO-%f_%u
对于存档重做日志的映像副本,%U表示以下内容:arch-D_%d-id-%I_S-%e_T-%h_A-%a_%u
对于控制文件的图像副本,%U表示以下内容:cf-D_%d-id-%I_%u
19. %Y
当前时间中的年,格式为YYYY。
注意:如果在BACKUP命令中没有指定 FORMAT 选项,则 RMAN 默认使用%U为备份。
4. 块跟踪技术
在Oracle数据库中,块跟踪(Block Change Tracking, BCT)是一种优化增量备份的技术。块跟踪功能通过记录自上次备份以来发生变化的数据块的位置,从而加快增量备份的速度。
4.1 块跟踪的工作原理
增量备份通常是在上次备份的基础上,备份新的数据块。如果不使用优化手段,每次都需要扫描整个数据库来判断哪些数据块是新增或修改的,这会导致备份时间变长。为了解决这个问题,Oracle引入了块跟踪功能。
当数据库中的数据块发生变化时,块跟踪功能会在一个特殊的文件中记录这些变化。在进行增量备份时,RMAN会读取这个变化记录文件,直接备份那些发生变化的数据块,而不是扫描整个数据文件。这样可以显著减少增量备份所需的时间和资源,尤其是在大型数据库中效果明显。
2.开启块跟踪(在sqlplus中操作)
步骤1:连接到数据库
sqlplus / as sysdba
步骤2:启动块跟踪
使用以下SQL命令启用块跟踪功能,并指定块跟踪文件的路径。如果省略路径,Oracle会使用默认路径
SQL> alter database enable block change tracking using file 'D:\app\backup\chtrack.log';
步骤3:验证块跟踪状态
启用块跟踪后,可以通过查询 V$BLOCK_CHANGE_TRACKING
视图来验证块跟踪的状态:
SQL> Select * from v$block_change_tracking;
5.rman备份命令详解
在Oracle的RMAN(Recovery Manager)中,BACKUP命令用于执行数据库、归档日志、控制文件等的备份。
5.1验证备份集
验证备份集的物理完整性
使用 VALIDATE 命令可以验证备份集的物理完整性,检查备份集中的文件是否存在并且没有损坏。
RMAN> backup validate database;
5.2全备数据库
使用 BACKUP DATABASE
命令进行全备:
1.备份数据库:
RMAN> BACKUP DATABASE;
2.同时备份归档日志:
RMAN> BACKUP DATABASE PLUS ARCHIVELOG;
3.全备设置备份集名称,备份集大小、默认无限制
RMAN> BACKUP DATABASE SECTION SIZE 1G FORMAT 'D:\app\backup\db_%d_%T_%s.bak';
解释
SECTION SIZE 1G:将每个备份集的大小限制为1GB。
FORMAT '/u01/backup/db_%d_%T_%s.bak':指定备份集的文件名格式,其中:
%d:数据库名
%T:日期(格式为 YYYYMMDD)
%s:备份集编号
5.3备份表空间
1.备份表空间
RMAN> backup tablespace tablespace_name;
2.备份表空间到指定位置
RMAN> backup tablespace tablespace_name format 'D:\app\backup\db_%d_%T_%s.bak'
5.4 备份控制文件
1.备份控制文件
RMAN> backup current controlfile;
2.备份控制文件到指定路径
RMAN> BACKUP CURRENT CONTROLFILE FORMAT '/u01/backup/controlfile_%d_%T_%s.bak';
5.5 备份参数文件
1.备份参数文件
RMAN> BACKUP SPFILE;
2.备份参数文件到指定路径
RMAN> BACKUP SPFILE FORMAT '/u01/backup/spfile_%d_%T_%s.bak';
5.6 备份归档日志
备份归档日志到指定路径
RMAN> BACKUP ARCHIVELOG ALL FORMAT 'D:\app\backup\arch_%d_%T_%s.bak';
6.查看备份集
1.查看备份集信息(详细)
RMAN> list backup;
2.查看备份集信息(简洁)
RMAN> list backup summary;
列出copy的文件
RMAN> list copy;
列出过期的备份文件
RMAN> list expired backup;
查看所有归档日志
RMAN> list archivelog all;
5.5 rman还原数据库
使用RMAN(Recovery Manager)进行数据库还原(Restore)是一个关键的数据库管理任务,用于从备份中恢复数据文件、控制文件和归档日志,这个命令允许指定需还原的备份集、数据文件、归档日志、控制文件等
前提条件
确保有足够的备份文件:确认你有完整的备份集,包括数据文件、控制文件和归档日志。
确保数据库处于适当的模式:根据恢复类型,数据库可能需要处于 MOUNT 或 OPEN 状态。
备份文件的验证:确保备份文件的完整性和有效性,可以使用 VALIDATE 命令进行验证
1:连接到RMAN
首先,使用RMAN连接到目标数据库。以SYSDBA身份登录:
rman target /
2:启动数据库到MOUNT状态
将数据库启动到 MOUNT 状态,这是进行恢复操作的必要步骤:
RMAN> STARTUP MOUNT;
3 还原参数文件(如果需要,以下是两种不同场景)
方式1 通过备份集恢复参数文件
RMAN>restore spfile from '/backup/full/orcl_spfile_61_1_1040095433';
方式2 自动恢复参数文件,前提‘CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default’为on,开启控制文件的自动备份,会同时备份参数、控制文件
RMAN>restore spfile from autobackup;
4:还原控制文件(如果需要,以下是3种不同场景)
如果你没有现成的控制文件,需要先还原控制文件:
方式1 通过备份集恢复控制文件
RMAN> restore controlfile from '/backup/full/orcl_ctl_60_1_1040095416';
方式2 恢复控制文件到新路径
RMAN> restore controlfile to '/data/control.ctl' from '/backup/full/orcl_ctl_60_1_1040095416';
方式3 自动恢复控制文件,首先‘CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default’为on,开启控制文件的自动备份,会同时备份参数、控制文件
RMAN>restore controlfile from autobackup ;
5 还原数据文件
方式1 还原所有数据文件:
RMAN> RESTORE DATABASE;
方式2 还原指定数据文件
RMAN> RESTORE DATAFILE 1;
6 还原归档日志
方式一:还原所有归档日志
RMAN> restore archivelog all;
方式二:还原一天内的归档日志
RMAN>
run{
ALLOCATE CHANNEL ch00 TYPE disk;
set archivelog destination to '/data/COST4/arch';
restore archivelog from time 'sysdate-1'; ###还原一天内的归档日志
release channel ch00;
}
方式三:还原线程2的归档日志序列
run{
ALLOCATE CHANNEL ch00 TYPE disk;
set archivelog destination to '/home/oracle';
RESTORE ARCHIVELOG sequence BETWEEN 5877 AND 5971 thread 2; ###还原线程2的5877到5971归档日志序列
release channel ch00;
5.6 恢复数据库(recovery)
在Oracle的RMAN(Recovery Manager)中,RECOVER命令用于恢复数据库或数据文件的完整性和一致性。它基于RMAN备份或归档日志来恢复数据,确保在故障发生后,数据库能够恢复到某个一致的状态。recover 命令用于通过归档恢复数据库。可以再rman下运行也可以在sqlplus下运行。restore和recover有本质区别,restore是从rman备份中还原文件(copy文件),而recover是通过归档恢复数据,追加到最新。
原理:recover的原理是数据库使用控制文件的scn作为恢复的终点,将数据文件block恢复到控制文件所记录的scn为止。
方式1 所有数据文件作为一个整体恢复
RMAN> recover database ###通过v$recover_file确定
方式2 数据文件单个恢复
RMAN> recover datafile file_id1,file_id2 ###通过v$recover_file确定
5.7删除备份集(delete)
在Oracle的RMAN(Recovery Manager)中,DELETE命令用于删除备份和副本,或者更改它们在恢复目录或控制文件中的状态。
备份集不是永远存在的。可以使用保存策略标记备份有效性和生存期。但是备份策略的实施不会从RMAN 目录中删除备份,而只是将这些备份标记为丢弃状态。
delete命令对备份和副本的影响很大。通过delete命令,可以删除基于保存标准被标记为丢弃的任何备份,还可以将恢复目录或控制文件中的备份从expired 状态变为deleted状态。
(1)删除某个备份集
步骤1 列出备份集。
RMAN> LIST BACKUP;
步骤2 删除指定备份集
RMAN> delete backupset 1
(2)删除所有备份集
RMAN> delete backup;
(3)删除过期的备份集
步骤1 查看备份集是否过期
RMAN> crosscheck backup;
执行 CROSSCHECK BACKUP 命令后,RMAN会更新备份集的状态。每个备份集或副本的状态码分为两种:
A(Available: 可用):RMAN 认定该备份集或副本存在于备份介质上。
X(Expired: 不可用):RMAN 认定该备份集或副本在存储的 RMAN 目录(即控制文件或恢复目录)中存在记录,但并未物理存在于备份介质上。
步骤2 删除过期的备份集
RMAN> delete noprompt expired backup;
(4)删除归档
(1)删除某个归档
RMAN> delete archivelog sequence seq_number thread 线程1 or 2; ###seq_number通过list archivelog all命令确定
(2)删除多个归档(区间)
RMAN> delete archivelog sequence between seq_number and seq_number thread 线程1 or 2; ###seq_number通过list archivelog all命令确定
(3)删除所有归档
RMAN> delete archivelog sequence between seq_number and seq_number thread 线程1 or 2; ###seq_number通过list archivelog all命令确定
(4)删除过期的归档备份
RMAN>delete noprompt expired archivelog all;
(5)验证所有备份集中过期的归档
RMAN>crosscheck archivelog all;
每个备份集或副本的状态码。 在不同的备份状态码中,分为两种状态:
(1)validation succeeded for archived log:RMAN认定该项存在于备份介质上
(2)validation failed for archived log:这个归档或副本上存储的 RMAN 目录(即控制文件或恢复目录)中,但是并没有物理存在于备份介质上