RMAN 是 Oracle 官方提供的备份恢复工具。
在实际生产环境里,RMAN 命令很多,但真正天天会碰、最常用的,其实就那么几类:
-
连接与查看配置
-
查看备份信息
-
核查备份状态
-
清理过期或陈旧备份
-
调整常用配置
-
验证备份是否可用
这篇文章不讲"大而全",只整理企业生产环境里最常用的 RMAN 命令。
一、先连接 RMAN
以 oracle 用户执行:
rman target /
这是进入 RMAN 的基础命令。
后面的所有 RMAN 命令,基本都在这个提示符下执行。
二、最常用的查看类命令
1)查看 RMAN 当前配置
show all;
这个命令非常常用。
主要看这些内容:
-
保留策略
-
控制文件自动备份
-
备份优化
-
默认备份设备类型
-
归档删除策略
生产环境里,很多判断都要先从 show all; 开始。
2)查看数据库物理结构
report schema;
用于查看数据库中有哪些数据文件、表空间等信息。
在做备份、恢复、核查时,经常会先看这个。
3)查看哪些备份已经陈旧
report obsolete;
这个命令用来查看哪些备份已经被当前保留策略判定为过时。
注意,它只是报告,不会自动删除。
三、最常用的备份查看命令
1)查看所有备份
list backup;
这是最常见的查询命令之一。
用来查看当前数据库有哪些备份集。
2)查看备份摘要
list backup summary;
如果只想快速看备份概况,不想看太细的内容,这条很实用。
3)查看数据库备份
list backup of database;
主要看数据文件备份是否存在。
4)查看控制文件备份
list backup of controlfile;
控制文件备份很关键,恢复时经常会用到。
5)查看 SPFILE 备份
list backup of spfile;
参数文件备份是否存在,也建议一起确认。
6)查看归档日志备份
list backup of archivelog all;
如果要确认归档日志有没有备份,这条最直接。
7)查看归档日志信息
list archivelog all;
这个命令也很常用,主要看归档日志记录情况。
四、最常用的核查命令
1)核查所有备份集
crosscheck backup;
用来核对 RMAN 记录里的备份是否真实存在。
如果备份文件被手工删除了,但 RMAN 里还有记录,就要靠这个命令同步状态。
2)核查所有归档日志
crosscheck archivelog all;
这条在生产里也非常常见。
归档日志多、变化快,定期核查很有必要。
五、最常用的清理命令
1)删除陈旧备份
delete obsolete;
这条命令是按 RMAN 保留策略 删除已经陈旧的备份。
比如你配置的是:保留策略只负责判断,不会自动删除。
CONFIGURE RETENTION POLICY TO REDUNDANCY 2;
那么超出保留范围的旧备份,就会被认定为 obsolete。
注意两点:
-
只配置保留策略,不会自动删除
-
真正执行删除,还得靠
delete obsolete;
超出保留范围的旧备份,就会被认定为 obsolete。
2)删除过期备份记录
delete expired backup;
这个命令删除的是已经失效的备份记录。
一般会配合下面这句一起使用:
crosscheck backup;
先核查,再清理,思路更稳。
3)删除过期映像副本
delete expired copy;
如果环境里有用到映像副本,这条也会用到。
但相较于备份集,这条在日常里没有前两条高频。
六、最常用的配置命令
1)设置保留策略为冗余度
configure retention policy to redundancy 2;
表示保留 2 份可用备份。
2)设置保留策略为恢复窗口
configure retention policy to recovery window of 7 days;
表示备份至少要满足"可以恢复到过去 7 天内任意时间点"的要求。
生产环境里,更常见也更推荐这种方式。
一般常见值是:
-
普通生产库:7 天
-
重要生产库:14 天
3)恢复默认保留策略
configure retention policy clear;
恢复后,默认是:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
4)开启备份优化
configure backup optimization on;
对于归档日志、只读表空间这类变化不大的对象,可以减少重复备份。
5)开启控制文件自动备份
configure controlfile autobackup on;
这条在生产环境中很常用,也很建议开启。
控制文件和 SPFILE 的自动备份,很多时候就是救命绳。
七、最常用的验证命令
1)验证数据库备份是否可还原
restore validate database;
这条命令不会真正恢复数据库,
只是验证当前备份是否可用于恢复。
2)验证控制文件备份
restore validate controlfile;
3)验证 SPFILE 备份
restore validate spfile;
这两条也不会真恢复,只是做校验。
正式生产环境里可以执行,但建议放在业务低峰期,因为会读取备份片,带来一定 I/O。
八、生产环境里最常见的一套组合
如果只记最常用的一套,通常就是下面这些:
1)先看配置
show all;
2)看有没有备份
list backup summary;
list backup of database;
list backup of controlfile;
list backup of spfile;
list backup of archivelog all;
3)核查记录是否真实有效
crosscheck backup;
crosscheck archivelog all;
4)看是否有陈旧备份
report obsolete;
5)按策略清理旧备份
delete obsolete;
delete expired backup;
6)验证备份是否可用
restore validate database;
restore validate controlfile;
restore validate spfile;
九、几个生产环境里的实用提醒
1)show all; 一定要会看
尤其是:
-
CONFIGURE RETENTION POLICY -
CONFIGURE CONTROLFILE AUTOBACKUP -
CONFIGURE ARCHIVELOG DELETION POLICY
2)delete obsolete; 不会自己跑
保留策略只是判定规则,不是自动删除开关。
要不要删,还是得你自己执行命令。
3)restore validate 不是真恢复
它只是校验,不会把生产库真的恢复回去。
但会读备份片,所以别在高峰期乱跑全库验证。
十、总结
RMAN 命令很多,但在 Linux 生产环境里,真正最常用的命令,核心就是这几类:
-
show all; -
list backup ... -
crosscheck backup; -
crosscheck archivelog all; -
report obsolete; -
delete obsolete; -
delete expired backup; -
configure retention policy ... -
configure controlfile autobackup on; -
restore validate database; -
restore validate controlfile; -
restore validate spfile;
不用一上来把 RMAN 命令大全全背下来。
先把最常用的这几条用熟,生产里的大多数日常备份巡检和核查工作,基本就够用了。