ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

RMAN备份

2021-07-05 17:03:25  阅读:172  来源: 互联网

标签:_% 备份 bak rman backup RMAN


RMAN备份

【官方文档】

Backup and Recovery Reference

Backup and Recovery User's Guide

1 备份文件类型

1.1 backupset备份集

  不备份datafile里面从未使用块、可以实现增量备份(可以备份到disk和tape)。可以使用压缩,如果只启用一个channel,默认会把所有备份的datafile放入到一个backupset里,并且生成一个备份片backup piece

  使用section size时,一个backupset中可以包含多个backup piece

1.1.1 备份全库

① RMAN> backup database format='/u01/backup/rman/prod_%s.bak' filesperset 3;

② RMAN> backup database plus archivelog delete input;

说明:备份所有数据文件及控制文件、spfile文件与所有归档日志,并删除旧的归档日志,当deleteinput后,控制文件相关信息(v$archived_log)也会被更新。archivelog物理日志也被删除

③ RMAN> backup database format '/u01/backup/rman/%U.bak' plus archivelog delete input skip inaccessible;

说明:archivelog的备份是根据控制文件中(v$archived_log)中的内容导航的,如果控制文件中记录了而实际归档中又不存在,则会报错,skip inaccessible的含义是跳过物理上缺失的日志文件

因为有了全备,随时可以还原备份,还原点之前的归档日志可以删除,如果想单独还原归档日志备份可以使用:restore archivelog all;

1.1.2 备份表空间

RMAN> backup tablespace users format '/u01/backup/rman/users_%U.bak' tag=userbak;

1.1.3 备份数据文件

RMAN> backup datafile 3,5 format '/u01/backup/rman/%d_%s.bak';

备份数据文件,可以一次备份多个,以“,” 分开

1.1.4 备份归档日志

查看当前数据库中归档日志

RMAN> list archivelog all;

备份所有归档日志,备份完成后删除库里的归档日志文件

RMAN> backup archivelog all delete input;

将归档日志文件从备份转储回库中

RMAN> restore archivelog all;

1.1.5 备份控制文件

RMAN> backup current controlfile;

1.1.6 备份参数文件

RMAN> backup spfile;

1.2 image copy(映像文件)备份

1.2.1 image copy(映像文件)

  实际上和手工cp类似的,备份datafile所有的数据块,不能作为增量备份的基础(即0级增量备份),只能备份到disk,不能备份到tape,优点是可以省略还原步骤,恢复数据库速度快

1.2.2 语法

① RMAN> copy datafile 4 to '/u01/backup/rman/users_%s.bak';

② RMAN> backup as copy tablespace 'TEST' format '/u01/backup/rman/%d_test_%s.bak';

建议使用backup语法,统一格式

backup as copy database format '/u01/backup/rman/%U.bak';
list datafilecopy all;

删除

delete datafilecopy all;

 

2 rman冷热备脚本参考

2.1 rman冷备脚本

vi /u01/backup/rman/cold.sql

写入脚本:

run{
shutdown immediate;
startup mount;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup database format '/u01/backup/rman/db_%d_%T_%U.bak';
backup current controlfile format '/u01/backup/rman/ctl_%d_%T_%U.bak';
alter database open;
release channel c1;
release channel c2;
}

2.2 rman热备

vi /u01/backup/rman/hot.sql

写入脚本:

run{
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup database format '/u01/backup/rman/db_%d_%T_%U.bak' plus archivelog format '/u01/backup/rman/ar_%d_%T_%U.bak';
backup current controlfile format '/u01/backup/rman/ctl_%d_%T_%U.bak';
release channel c1;
release channel c2;
}

 

3 增量备份incremental backup

【官方文档】

Database Backup and Recovery User's Guide ---> 8 RMAN Backup Concepts ---> Incremental Backups

3.1 概念

  只备份自某次备份以来发生变化的block。RMAN在备份时会记录data block的scn,下次备份时通过比较某次备份数据块上的scn来确定该数据块是否发生变化

0级增量备份可以理解为完全备份

1级增量备份分为两种:

  差异增量备份:只包含上次增量备份(0级或1级)到现在增加或者修改的数据块

  累计增量备份:只包含上次增量备份(0级,也就是完全备份)到现在增加或者修改的数据块

3.2 两种增量策略

差异增量备份Differential incremental backup:以某次以来同级别或低级别的备份作为基础备份

累积增量备份Cumulative incremental backup):以某次以来比自己级别低的备份作为基础备份

10g以后,增量备份只有0级和1,原来2级以上的级别可兼容,但不推荐使用

0级增量备份,省略differential描述,默认的就是差异增量备份

backup incremental level 0 database format '/u01/backup/rman/%U.bak';

1级累积增量备份

backup cumulative incremental level 1 database;

1级差异增量备份

backup incremental level 1 database format '/u01/backup/rman/%U.bak';

3.3 注意事项

① 0级增量备份不等同于全备(full backup),全备不能做为增量备份的基础备份,0级增量备份可以

② 如果没有备份过0级备份,那么第一次1级备份(差异或累计)就当做0级备份

③ 非归档情况下的恢复就只有还原备份这一步,在RMAN下的方法是:

startup force mount;

restore database;

alter database open resetlogs;

如果非归档情况下使用了增量备份,在restore第二句后,加上recover database noredo;

这个命令有两个作用:

  1. 定位所有级别为1的累计或差异增量备份并使用它们
  2. 不应用日志

3.4 块变更跟踪(block change tracking)(OCM内容)

3.4.1 概念

  增量备份总是小于完整备份,但是备份时的时间并不像想象的那样少,原因是增量备份默认的是要扫描整个要备份的数据文件块,以便确定哪些块需要提取,如果想要增量备份能快些,可以使能增量备份的块改变跟踪功能

  块改变跟踪在后台启动一个进程叫CTWR,这个进程向变更跟踪文件中记录每个已更改的块的地址。如果启用了块跟踪,增量备份时就去检查块跟踪文件,这比遍历整个数据文件块要快的多。当然缺点是数据库维护块跟踪文件会付出性能代价,所以实际工作中此特性通常不在生产库上配置

3.4.2 实战案例演示(OCM内容)

3.4.2.1 使能块改变跟踪
alter database enable block change tracking using file '/u01/app/oracle/oradata/ORCL/change_tracking';

3.4.2.2 查看视图信息

确认已启动了CTWR进程确认生成了块改变跟踪文件

col filename for a50
select * from v$block_change_tracking;

3.4.2.3 开始0级增量做为基础备份
backup incremental level 0 database format '/u01/backup/rman/%U.bak';

3.4.2.4 开始1级增量备份
backup incremental level 1 database format '/u01/backup/rman/%U.bak';

3.4.2.5 关闭块改变跟踪
alter database disable block change tracking;
select * from v$block_change_tracking;

3.4.2.6 再次执行1级增量备份对比
backup incremental level 1 database format '/u01/backup/rman/%U.bak';

考点:使能块改变跟踪后,需要一个相当于incremental level 0 backup做为基础备份

3.5 使用增量更新image copy备份

  增量更新特性是以一个image copy为基础,将增量备份应用到这个image copy,在做每日的imcremental level 1时,image copy是不断的累积的,好处是这个累积的image copy的scn越来越新,且使用它恢复数据库时不需要还原,命令如下:

run {
recover copy of database with tag 'incr_update';
backup incremental level 1 for recover of copy with tag 'incr_update' database;
}

这个例子每天执行一次,会是什么样的结果?

第一天,backup命令将创建一个的相当于level 0的image copy,因为之前没有这个备份

第二天,backup命令创建一个level 1的backupset

第三天以及以后的每一天,recovercopy命令将把level 1应用(叠加)到image copy,从而不断的更新它

最大的优势是image copy不断的累计,可以省去还原步骤,从而节省了大量恢复数据的时间

3.6 增量热备脚本参考

3.6.1 level 0

run{
crosscheck backup;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup incremental level 0 database format '/u01/ backup/rman/db_%d_%T_%U.bak' plus archivelog format '/u01 /backup/rman/ar_%d_%T_%U.bak';
backup current controlfile format '/u01/ backup/rman/ctl_%d_%T_%U.bak';
report obsolete device type disk;
delete noprompt obsolete device type disk;
delete noprompt expired backup device type disk;
release channel c1;
release channel c2;
}

3.6.2 level 1

run{
crosscheck backup;
allocate channel c1 device type disk;
allocate channel c2 device type disk;
backup incremental level 1 database format '/u01/ backup/rman/db_%d_%T_%U.bak' plus archivelog format '/u01 /backup/rman/ar_%d_%T_%U.bak';
backup current controlfile format '/u01/ backup/rman/ctl_%d_%T_%U.bak';
report obsolete device type disk;
delete noprompt obsolete device type disk;
delete noprompt expired backup device type disk;
release channel c1;
release channel c2;
}

 

4 归档备份backup ... keep

  在Oracle11g中,可以使用backup … keep命令保留比RMAN备份保留策略所指定的时间更长的备份。它可以构造能保留数年的备份(不被obsolete),归档备份之所能使备份长久保存,关键是使用keep选项覆盖掉了RMAN中缺省的保留策略

KEEP FOREVER永不过期(需要catalog)在Oracle 11g中

KEEP UNTIL TIME后跟一个时间长度,如表示一年:'sysdate+365'

RESOTRE POINT的作用记录这次备份的唯一性,rename表示的scn已被记录下来,rename不能重名

示例(备份日期2021年7月5日):

backup tablespace users format '/u01/backup/rman/users_%U.bak' keep until time 'sysdate+7' restore point orclbak;

也可以在备份列表中看到obsolete日期

可以查看RESOTRE POINT rename和scn的对应关系

list restore point all;

delete backup;

 

5 数据恢复顾问DRA实战案例(OCM)

  DRA(Data Recovery Advisor)是一个诊断和恢复数据库的工具,通过两个途径操作,一个是RMAN界面,另一个是EM,它依赖于ADR的自动诊断信息以及Health Monitor

5.1 RMAN备份sysaux表空间

backup tablespace SYSAUX format '/u01/backup/rman/sysaux_%U.bak';
list backup;

5.2 关闭数据库,将sysaux01.dbf删掉,然后启动数据库报错

shutdown abort;
cd /u01/app/oracle/oradata/ORCL/
rm sysaux01.dbf

startup

5.3 数据库在mount模式下连接rman

rman target /

5.4 看DRA列出发现的问题

list failure;

5.5 让DRA来诊断一下问题所在

advise failure;

修复脚本:/u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_3580709036.hm

cat /u01/app/oracle/diag/rdbms/orcl/orcl/hm/reco_3580709036.hm

5.6 根据报告决定让DRA修复

repair failure;

注意:

先list failure,然后再advise failure次序不能错, 修复问题的顺序是list、advise、repair

② 所有启动模式下都可以使用DRA,nomount下修复控制文件,mount或open下修复数据文件

③ DRA目前只能在单实例下运行,RAC不可以使用它

 

6 备份集状态

6.1 备份集的状态

①AVAILABLE:可用

②UNAVAILABLE:不可用

③EXPIRED:过期(RMAN元数据还在,备份文件损坏或丢失)

当备份元数据存在,但OS物理备份片已经被删除了这时备份集的状态就是Expired

RMAN的crosscheck命令检查备份片是否仍然存在于备份介质上,如不存在,则状态由AVAILABLE改为EXPIRED记录着

AVAILABLE/UNAVAILABLE的转换使用change命令

CHANGE BACKUPSET 1 UNAVAILABLE;

6.2 备份集状态实验

6.2.1 执行备份 查看状态

清理之前的备份

delete backup; 

备份保留策略为默认的redundancy 1,续备份两次users表空间

backup tablespace users format '/u01/backup/rman/users_%U.bak';
backup tablespace users format '/u01/backup/rman/users_%U.bak'; 

查看当前users表空间备份状态

list backup of tablespace users;

6.2.2 设置备份集为unavailable不可用状态

change backupset 33 unavailable;

list backup of tablespace users;

恢复备份集状态

change backupset 33 available;
list backup of tablespace users;

6.2.3 查看obsolete过时的备份

report obsolete;

第一次备份users表空间生成的备份片已经属于obsolete过时的、淘汰的备份。但这些备份依然是available状态,是有效的可以用来进行restore还原的

6.2.4 模拟备份文件丢失

cd /u01/backup/rman
ll -lnt
mv users_150372hp_1_1.bak users_150372hp_1_1.bak.bak
ll -lnt

6.2.5 crosscheck交叉校验

直接list backup查看,仍然是available,执行crosscheck backup进行校验

list backup of tablespace users;
crosscheck backup;
list backup of tablespace users;

6.2.6 查看expired状态备份

list expired backup;

6.2.7 恢复备份文件,再次查看

mv users_150372hp_1_1.bak.bak users_150372hp_1_1.bak
crosscheck backup;
list backup of tablespace users;

6.2.8 如何删除expired状态备份

delete expired backup;
delete noprompt expired backup;

delete expired不会影响磁盘上的文件,而是清除rman元数据中此备份的记录

6.3 expired和obsolete区别

expired  过期的。rman元数据中有这个备份,但磁盘上备份文件丢失不存在

obsolete  过时的,淘汰的。根据保留策略已经不需要,可以删除。但仍然是available可用状态

report obsolete     /     list expired

delete expired  不删除磁盘上的文件,只是将expired状态备份信息从rman元数据中删掉

delete obsolete  删除磁盘上过时的备份文件(归档日志)

 

7 catalog命令维护rman元数据

7.1 概念

目的是对RMAN存储库进行编目

RMAN元数据受损或者备份文件被移动到新的目录时,只有我们手里只有备份,便可以根据备份的物理路径重新编目RMAN元数据

这种方法可以将早期的老化的备份,重新(要有磁盘路径) 注册到target controlfile中,也可以完成向一个空的RMAN存储库(重做控制文件后)通过catalog命令注册元数据

7.2 常见的语法

RMAN> CATALOG DATAFILECOPY '/disk1/old_datafiles/01_01_2021/users01.dbf';

RMAN> CATALOG ARCHIVELOG '/disk1/arch_logs/archive1_731.log';

RMAN> CATALOG BACKUPPIECE '/disk1/backups/backup_820.bak';

RMAN> CATALOG START WITH '/disk1/backups/';

可以一次完成一个目录树下的所有文件的注册:通过提供一个OS路径,RMAN自动导航找到要编目的所有备份片(包括其子目录)

7.3 注册备份到元数据(controlfile)

7.3.1 构造expired状态备份并删除

cd /u01/backup/rman
mv users_150372hp_1_1.bak users_150372hp_1_1.bak.bak
crosscheck backup;
list expired backup;
delete noprompt expired backup;

7.3.2 将重命名以后的备份文件注册到rman元数据

catalog backuppiece '/u01/backup/rman/users_150372hp_1_1.bak.bak';
list backup of tablespace users;

7.4 删除元数据

change backuppiece 37 uncatalog;

37号备份片从RMAN元数据中删掉了,但物理备份users_150372hp_1_1.bak.bak还在

7.5 catalog注册手工备份文件

ll /u01/backup/orcl/hot

catalog start with '/u01/backup/orcl/hot/';

list datafilecopy all;

 

8 RMAN常用命令一览

管理备份:报告

使用以下RMAN命令可获取有关备份的信息:

LIST:显示资料档案库中记录的有关备份集、代理副本和映像副本的信息

REPORT:生成资料档案库的详细分析信息

REPORT NEED BACKUP:列出需要备份的所有数据文件

REPORT OBSOLETE:标识按照备份保留策略不再需要的文件

管理备份:交叉检查和删除

使用以下RMAN命令可管理备份:

CROSSCHECK:针对介质(如磁盘或磁带)验证在RMAN资料档案库中记录的备份和副本的状态

DELETE EXPIRED:只删除资料档案库中状态为EXPIRED的文件

DELETE OBSOLETE:删除不再需要的备份

8.1 list命令一览

RMAN> list backup;

RMAN> list backup of tablespace users;

RMAN> list backup of datafile 2;

RMAN> list backup of controlfile;

RMAN> list backup of archivelog all;

RMAN> list backup of archivelog until time ='sysdate -1';

RMAN> list backupset 56;

RMAN> list copy;  (包括归档日志)

RMAN> list datafilecopy all;

RMAN> list copy of tablespace users;

RMAN> list copy of datafile 1;

RMAN> list datafilecopy 67;

RMAN> list copy of controlfile;

RMAN>list expired backup;

RMAN> list archivelog all;

8.2 report报告命令一览

RMAN> REPORT schema;  查看目标库的物理结构

RMAN> REPORT obsolete;  根据备份保留策略来判断,那些备份是陈旧的(obsolete)

RMAN> REPORT OBSOLETE redundancy 2;

RMAN> REPORT need backup;  根据备份保留策略,列出哪些数据文件需要备份

RMAN> REPORT NEED BACKUP redundancy 2;

RMAN> REPORT NEED BACKUP recovery window of 3 days;

8.3 delete删除备份命令一览

RMAN> delete backup of datafile 2;

RMAN> delete backup of tablespace system;

RMAN> delete backupset ;

RMAN> delete backupset 30,32;

RMAN> delete backup of controlfile;

RMAN> delete noprompt backup of controlfile; noprompt;  删除不提示确认

RMAN> delete datafilecopy all;

RMAN> delete copy of datafile 10;

RMAN> delete copy of tablespace users;

RMAN> delete expired backup;  删除过期的备份

RMAN> delete expired archivelog all;  删除过期的归档,更新v$archived_log视图

RMAN> delete expired copy;

RMAN> delete obsolete;  删除陈旧的备份

RMAN> delete noprompt obsolete;  删除不加提示

标签:_%,备份,bak,rman,backup,RMAN
来源: https://www.cnblogs.com/jsxxd/p/14971144.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有