Oracle教程(7)RMAN 物理备份教程与实战
一、RMAN 介绍
RMAN 是 Oracle 自带的物理备份工具,它的核心作用是保护数据库的物理完整性,确保在发生磁盘损坏、误删数据文件、服务器整体故障等灾难场景下能够将数据库恢复到某个可用的状态。RMAN 处理的是整个数据库、表空间文件或数据文件这样的物理对象。除了对整个实例进行全量备份外,还可以单独备份控制文件、spfile、归档日志等关键文件,保护整个数据库的物理完整性;备份期间数据库可以正常读写,并且支持增量备份,只处理自上次备份以来发生变化的部分,在处理TB级别的大型数据库时非常有用;配合归档模式,理论上可以把数据库恢复到发生故障前的任意一个时间点。
二、RMAN 使用方法
1、连接 RMAN
· 操作系统认证
通过数据库服务器本地连接RMAN时最常用的方式,不需要在命令行明文写密码。关键词 target 后面跟上需要连接的数据库目标, / 表示用操作系统当前登录用户的身份进行认证(通常直接用 oracle 用户就会满足这个条件)
[oracle@ftxsdb ~]$ rman target / connected to target database: FTXS (DBID=2207681056) RMAN>
· 指定用户名密码连接
该方式可以连接本地数据库也可以连接到远程数据库,orcl 是 tnsnames.ora 里配置的连接标识符(网络服务名)
SQL> show parameter service_names; #服务名是ftxsprdu NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ service_names string ftxsprdu #命令格式:rman target 用户名/密码@服务名 rman target adg_user/ADGuser#202609@ftxsprdu connected to target database: FTXSPRDU (DBID=2207681056) RMAN>
· 交互式连接
会提示交互式输入密码,密码不会明文暴露,更安全
#命令格式:rman target 用户名@服务名 [oracle@ftxsdb ~]$ rman target adg_user@ftxsprdu target database Password:
· 带上恢复目录
在 / 后面加关键词 catalog 用户/密码@服务名,可以同时连接 target 库和 catalog 库
rman target / catalog 用户名/密码@服务名
· 进入 RMAN 后再连接
等效于上面几种,只是分两步执行
rman RMAN> connect target /
2、RMAN 备份策略说明
连接上RMAN后执行show all可以打印出当前针对RMAN进行的配置,比如保留策略、并行度、控制文件自动备份是否开启等,每一项配置后面如果有 #default 代表没有被人为修改过的默认配置,没标的则是特意配置过的
#查看当前备份策略 RMAN> show all; using target database control file instead of recovery catalog RMAN configuration parameters for database with db_unique_name FTXSPRDU are: CONFIGURE RETENTION POLICY TO REDUNDANCY 7; CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default CONFIGURE CONTROLFILE AUTOBACKUP ON; # default CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 4 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 COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; # default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/oracle/app/oracle/product/19.10/db_1/dbs/snapcf_ftxsprdu.f'; # default
· CONFIGURE RETENTION POLICY TO <策略> :全备/0级备份的保留策略,可以按份数保留也可以按时间保留,只能二选一,后者覆盖前者。超过限额后最早的备份会在下次 DELETE OBSOLETE 时被标记为过期
CONFIGURE RETENTION POLICY TO REDUNDANCY 7; -- 按份数:保留7份 CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; -- 按时间窗口保证7天内任意点可恢复
· CONFIGURE BACKUP OPTIMIZATION OFF:开启后如果某个文件跟上次备份相比没有变化就会跳过不重复备份。默认关闭,表示每次备份都会处理所有文件
· CONFIGURE DEFAULT DEVICE TYPE TO DISK:默认备份介质是磁盘,通常不用修改
· CONFIGURE CONTROLFILE AUTOBACKUP ON:控制文件自动备份,需要保持开启,这样每次 BACKUP 执行完以及每次影响到备份元数据的操作都会自动备份控制文件和 spfile
CONFIGURE CONTROLFILE AUTOBACKUP ON;
· CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F':控制文件自动备份的文件名格式,默认会写到 db_recovery_file_dest(也就是 FRA)下
· CONFIGURE DEVICE TYPE DISK PARALLELISM <n> BACKUP TYPE TO <BACKUPSET|COPY>:备份并行度和格式。PARALLELISM数字越大,并发越高,备份速度越快,但是对 CPU 和 I/O 消耗也越大;BACKUP TYPE 备份格式用 backup set表示只备份已用块,COPY是镜像拷贝,占空间更多,但恢复速度快
CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET;
· CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1:每个数据文件只保留 1 份备份
· CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1:归档日志只保留 1 份
· CONFIGURE MAXSETSIZE TO UNLIMITED:不限制单个备份集大小
· CONFIGURE ENCRYPTION FOR DATABASE OFF:关闭加密备份
· CONFIGURE COMPRESSION ALGORITHM 'BASIC' ...:压缩算法
· CONFIGURE ARCHIVELOG DELETION POLICY TO <策略>:NONE表示执行 DELETE ARCHIVE LOG 或者磁盘空间不足需要 RMAN 自动清理归档日志时,没有"至少备份过 N 次才能删"的约束。如果有备库建议配置 TO APPLIED ON ALL STANDBY,表示备库都应用过才允许删,避免归档被误删导致备库断档或者恢复链断裂
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK; -- 至少成功备份1次才能删 CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; -- 无限制(默认)
· CONFIGURE SNAPSHOT CONTROLFILE NAME TO '...snapcf_ftxsprdu.f':快照控制文件路径,备份控制文件时会先在这里做一个一致性快照再去备份,通常保持默认即可
· CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '<路径模板>':备份文件默认存放路径
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/%d_%T_%U.bkp';
3、RMAN 备份策略修改
如果要对RMAN默认配置进行修改或者重置,需要使用 CONFIGURE 命令,不管是修改还是重置,RMAN都会把改动前的值打印出来,方便修改后了后快速重置
#修改参数 CONFIGURE 参数名 TO 值; #重置参数 CONFIGURE 参数名 CLEAR;
配置示例
CONFIGURE RETENTION POLICY TO REDUNDANCY 7; -- 保留 7 份 CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; -- 改成按时间窗口保留7天,和 REDUNDANCY 互斥,配了会自动取消前者 CONFIGURE RETENTION POLICY CLEAR; -- 改回默认 REDUNDANCY 1 CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET; CONFIGURE DEVICE TYPE DISK CLEAR; CONFIGURE CONTROLFILE AUTOBACKUP ON; CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DISK; -- 至少备份过1次才允许删 CONFIGURE ARCHIVELOG DELETION POLICY CLEAR; CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT '/backup/rman/%d_%T_%U.bkp'; CONFIGURE CHANNEL DEVICE TYPE DISK CLEAR;
4、RMAN 备份语法
BACKUP [备份格式] [增量级别] 备份对象 [FORMAT ...] [TAG ...] [其他选项]; --命令骨架 BACKUP [格式: AS BACKUPSET / AS COMPRESSED BACKUPSET / AS COPY] [级别: INCREMENTAL LEVEL 0 / LEVEL 1 / LEVEL 1 CUMULATIVE] [对象: DATABASE / TABLESPACE xx / DATAFILE n / ARCHIVELOG ALL] [FORMAT ...] [TAG ...] [PLUS ARCHIVELOG ...] [DELETE INPUT]; --示例 BACKUP AS COMPRESSED BACKUPSET INCREMENTAL LEVEL 0 DATABASE FORMAT '/backup/%d_%T_%U_lvl1.bkp' TAG 'DAILY_L1' PLUS ARCHIVELOG FORMAT '/backup/%d_%T_%U.arc';
· 备份格式
BACKUPSET表示只备份已使用的块,备份可压缩,是最常用的格式;COMPRESSED BACKUPSET在基础上增加压缩,默认压缩算法是 BASIC;COPY 逐字节复制整个数据文件,体积和原文件一样大,恢复时可以用 SWITCH TO COPY 直接切换使用,不需要restore,速度最快
BACKUP AS BACKUPSET DATABASE; -- 备份集(默认,可省略AS BACKUPSET) BACKUP AS COMPRESSED BACKUPSET DATABASE; -- 备份集+压缩 BACKUP AS COPY DATABASE; -- 镜像拷贝
· 增量级别
不带 INCREMENTAL 的全备不能被后续的 LEVEL 1 增量当作基线使用。要建立增量链第一次必须显式写 INCREMENTAL LEVEL 0。如果在没有基线备份的情况下又使用了增量备份,RMAN 会自动把这次操作当成一次 0 级备份来执行。差异增量每次只备"上一次备份以来"的变化,每次备份的体积小,但恢复时要应用的增量片多;累积增量备的是"从最近一次0级以来"的全部变化,体积会逐渐变大,恢复时只需要 0级+最后一次累积
BACKUP INCREMENTAL LEVEL 0 DATABASE; -- 增量备份基线,等同全备但能作为增量起点 BACKUP INCREMENTAL LEVEL 1 DATABASE; -- 差异增量:备份自上次0级或1级以来变化的块 BACKUP INCREMENTAL LEVEL 1 CUMULATIVE DATABASE; -- 累积增量:备份自上次0级以来变化的块 BACKUP DATABASE; -- 不写级别 = 普通全备,但是不能作为增量基线
· 备份对象
BACKUP DATABASE; -- 整个数据库 BACKUP TABLESPACE users; -- 指定表空间,可以逗号加多个 BACKUP DATAFILE 4; -- 指定数据文件号(用REPORT SCHEMA能查到号) BACKUP CURRENT CONTROLFILE; -- 当前控制文件 BACKUP SPFILE; -- 参数文件 BACKUP ARCHIVELOG ALL; -- 所有归档日志
· 其他选项
-- PLUS ARCHIVELOG 备份同时带上归档日志 BACKUP DATABASE PLUS ARCHIVELOG; -- FORMAT指定文件名,%d表示数据库名;%T为日期(YYYYMMDD);%U是系统生成的唯一标识,必须包含;%F只用于控制文件自动备份,格式固定 BACKUP DATABASE FORMAT '/backup/%d_%T_%U.bkp'; -- TAG 给备份打标签 BACKUP DATABASE TAG 'WEEKLY_FULL'; --只用在归档日志备份上,备份完把原文件删除 BACKUP ARCHIVELOG ALL DELETE INPUT;
5、RMAN 备份结果
LIST BACKUP SUMMARY 命令会直接从 RMAN 的记录里查看备份历史,用于查看数据库现在到底有没有可用的备份、最近一次成功的备份是什么时候等信息,这也是评估如果数据库出问题了能恢复到多久之前的数据的依据。LIST BACKUP SUMMARY 里每行是一个 backup set,一次 level 0 全备会按通道数、MAXSETSIZE 等参数拆成十几个甚至几十个备份集,这些备份集共用同一个 Tag
RMAN>LIST BACKUP SUMMARY; using target database control file instead of recovery catalog List of Backups =============== Key TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag ------- -- -- - ----------- ------------------- ------- ------- ---------- --- 13828 B F A DISK 2026/09/08 02:08:38 1 1 NO TAG20260908T020838 13839 B F A DISK 2026/09/09 02:08:38 1 1 NO TAG20260909T020838 13850 B F A DISK 2026/09/10 02:08:48 1 1 NO TAG20260910T020848 13861 B F A DISK 2026/09/11 02:08:38 1 1 NO TAG20260911T020838 13872 B F A DISK 2026/09/12 02:08:28 1 1 NO TAG20260912T020828 13883 B F A DISK 2026/09/13 02:08:48 1 1 NO TAG20260913T020848 13884 B A A DISK 2026/09/14 02:00:13 1 1 YES TAG20260914T020010 13885 B A A DISK 2026/09/14 02:00:20 1 1 YES TAG20260914T020010 13886 B A A DISK 2026/09/14 02:00:20 1 1 YES TAG20260914T020010 13887 B A A DISK 2026/09/14 02:00:20 1 1 YES TAG20260914T020010 13888 B 0 A DISK 2026/09/14 02:01:03 1 1 YES TAG20260914T020025 13889 B 0 A DISK 2026/09/14 02:03:31 1 1 YES TAG20260914T020025 13890 B 0 A DISK 2026/09/14 02:05:29 1 1 YES TAG20260914T020025 13891 B 0 A DISK 2026/09/14 02:08:24 2 1 YES TAG20260914T020025 13892 B A A DISK 2026/09/14 02:08:26 1 1 YES TAG20260914T020826 13893 B F A DISK 2026/09/14 02:08:28 1 1 NO TAG20260914T020827 13894 B F A DISK 2026/09/14 02:08:30 1 1 NO TAG20260914T020830
· Key:备份记录自增编号,主要用来在 DELETE、CROSSCHECK 时进行指定
· TY:备份类型,B表示 backup set(备份集),如果是 AS COPY 镜像拷贝会显示别的标识
· LV:备份级别,F表示全备(full backup,但不能作为增量基线);0表示增量 0 级(可作为增量基线);1表示增量 1 级;A表示归档日志备份
· S:备份状态,A 表示 Available(可用);X 表示 Expired(过期);D 是 Deleted
· Device Type:备份介质,通常为 DISK
· Completion Time:备份完成时间点
· #Pieces:备份集包含几个物理文件备份片
· #Copies:备份保留了几份冗余拷贝
· Compressed:是否压缩
· Tag:备份标签,默认格式是 TAG + 时间戳,没有手动指定的话系统会自动生成
6、RMAN 维护类命令
· CROSSCHECK:核对 RMAN 备份记录所对应的物理文件还在磁盘上,检查是否有备份文件有被 rm 命令删除过的情况,
文件还在就把状态标记为 AVAILABLE,文件不在了就标记为 EXPIRED
CROSSCHECK BACKUP; CROSSCHECK ARCHIVELOG ALL; CROSSCHECK BACKUPSET; CROSSCHECK COPY;
· LIST:查看现有的备份记录
LIST BACKUP [OF <对象>] [SUMMARY]; #备份摘要,适合看备份整体情况 LIST BACKUP SUMMARY # LIST BACKUP OF <对象>——按对象过滤,看某一类的详细信息 LIST BACKUP OF DATABASE; LIST BACKUP OF ARCHIVELOG ALL; LIST BACKUP OF DATAFILE 4; LIST BACKUP OF CONTROLFILE;
· DELETE:删除备份文件与记录, NOPROMPT 参数可以取消人工确认的交互,用于脚本自动化
DELETE [NOPROMPT] <过滤条件>; DELETE NOPROMPT EXPIRED BACKUP; #删掉失效的备份记录(配合CROSSCHECK使用),不会产生实际的磁盘释放,因为文件本来就没了 DELETE NOPROMPT EXPIRED ARCHIVELOG ALL; DELETE NOPROMPT OBSOLETE; -- 删掉按保留策略已经多余的备份文件,可以释放磁盘 DELETE NOPROMPT BACKUP OF DATABASE; -- 删掉数据库本体的所有备份 DELETE NOPROMPT BACKUPSET 13828; -- 按具体Key号精确删除某一条
· REPORT:基于策略做分析、给结论,和 LIST 的本质区别在于LIST 只是把数据展示出来,而 REPORT 是给出一个判断结论
#列出当前库所有数据文件的编号、大小、路径,常用来查 DATAFILE n 里的 n 对应哪个文件 REPORT SCHEMA; #按保留策略算出哪些文件的备份不够新了,需要重新备份 REPORT NEED BACKUP; #如果现在执行 DELETE OBSOLETE 会删掉哪些内容,是 DELETE 前的安全预览 REPORT OBSOLETE;
RMAN 维护命令使用实例
#先核实每条记录对应的文件是否还在磁盘,然后刷新 RMAN 内部状态,已经不存在了的文件会被标记成 EXPIRED RMAN> CROSSCHECK BACKUP; RMAN> CROSSCHECK ARCHIVELOG ALL; #把 EXPIRED 的记录从 RMAN 里删掉。这一步不会释放任何磁盘空间(文件本来就已经不在磁盘上了),只是清理记录 RMAN> DELETE NOPROMPT EXPIRED BACKUP; RMAN> DELETE NOPROMPT EXPIRED ARCHIVELOG ALL; #删除前先看一眼会删掉什么 RMAN> REPORT OBSOLETE; #按配置的保留策略(比如 REDUNDANCY 7)把多余的备份连文件带记录一起删掉 RMAN> DELETE NOPROMPT OBSOLETE; #查看清理后的现状 RMAN> LIST BACKUP SUMMARY; #健康检查 RMAN> REPORT SCHEMA; RMAN> REPORT NEED BACKUP;
猜你喜欢
MySQL | Oracle Oracle教程(8)Oracle 19C 单实例调整为 ADG 架构
一、ADG架构介绍Active Data Guard 简称ADG,是 Oracle Data Guard 架构下给物理备库(Physical Standby)追加的一个功能,非ADG模式下的物理备库只...
MySQL | Oracle Oracle运维管理——修改用户密码过期时间
在 Oracle 数据库中,用户的密码有效期通过PROFILE(资源限制配置文件)中的 PASSWORD_LIFE_TIME 参数控制。如果没有为用户单独创建 PROFILE,默认使用一个...
MySQL | Oracle Oracle教程(6)SGA\PGA\REDO核心参数调优
一、Oracle核心参数介绍1、SGASGA(System Global Area)是 Oracle 实例启动时分配的共享内存区域,所有连接到该实例的会话都共用这块内存,是整个数据库实例对外提供服务的...
MySQL | Oracle Oracle教程(5)数据泵逻辑备份教程与实战
一、数据泵介绍数据泵(Data Pump)是 Oracle 10g 开始引入的命令行逻辑备份与恢复工具。通过 expdp / impdp ,可以对所有数据库对象(模式、表数据、表空间等)进行高效导出和...
MySQL | Oracle MySQL教程(13)基于Position或GTID实现主从复制
一、MySQL主从复制概述主从复制是MySQL高可用与横向扩展的基础方案,其核心依赖于 MySQL 自身的 Binlog 机制。主节点的 Binlog 记录了数据库上所有的 DDL 与 DML 操作(...
文章评论