💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨
💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️
💖💖💖大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注💖💖💖
今天作为rman(Recovery Manager)相关内容第二篇——rman工具实用指南:常用命令详解与实践。那么从这篇开始就进入到了rman实践部分了,所以各位小伙伴们可以打起十二分的精神了。在系统层面输入 rman target / 就可以进入到rman工具内部了,进入到工具内部后的参数如同繁星点点,所以各种参数的使用真的需要大家好好研究一番,那么带着这个问题让我们进入今天的内容。
然而,RMAN所涉及的内容之广、之深,使得难以在单篇文章中全面涵盖。所以我将理论、命令、备份策略、异机恢复、坏块处理等分成八篇文章去讲,即使分为八篇也有不少内容没有涵盖到,但是这八篇文章都是精华,看完这八篇就可以解决95%以上的RMAN相关工作内容了。八篇文章的内容分别如下:
- 第一篇:rman物理备份工具的基础理论概述
- 第二篇:rman工具实用指南:常用命令详解与实践(当前篇)
- 第三篇:rman标准化全库备份策略:完整备份or增量备份
- 第四篇:rman全库异机恢复:从RAC环境到单机测试环境的转移
- 第五篇:rman全库异机恢复:从单机环境到RAC测试环境的转移
- 第六篇:rman时间点异机恢复:从RAC环境到单机测试环境的转移
- 第七篇:Oracle数据库坏块处理:rman修复坏块实践与案例分析
- 第八篇:逻辑备份工具expdp(exp)/impdp(imp)和物理备份工具rman的区别和各自的使用场景总汇
目录
1.1 rman常用命令之backup(进行备份)
1.2 rman常用命令之list(查看实例备份的信息)
1.3 rman常用命令之restore(从RMAN备份中还原文件,为恢复做准备)
1.4 rman常用命令之recover(用于恢复数据库)
1.5 rman常用命令之delete(删除备份)
1.6 rman常用命令之report(用于判断实例当前可恢复状态、以及已有备份的信息)
1.7 rman常用命令之configure(设置和修改RMAN的配置参数)
1.8 rman常用命令之set(定义或更改当前RMAN会话的某些设置)
1.9 rman常用命令之crosscheck(交叉效验RMAN备份)
1.10 rman常用命令之validate(查看给定的备份集和进行验证以确保这个备份集能够被还原)
1.11 rman常用命令之Switch(更新数据文件、表空间、数据库或临时文件在控制文件中的位置信息)
1.12 rman常用命令之blockrecover(通过RMAN备份修复坏块)
1.13 rman常用命令之catalog(将未识别的RMAN备份集注册到控制文件)
1.14 rman常用命令之convert(对数据文件进行字节格式转换)
首先在系统层面输入rman --help,就可以查看rman工具的使用了。
参数选项
描述
target
目标数据库的连接字符串catalog
catalog恢复目录的连接字符串
nocatalog
如果指定,则没有恢复目录
cmdfile
输入命令文件的名称log
输出消息日志文件的名称使用rman命令进到终端,首先连到target目标实例,然后连接到catalog/nocatalog数据库:
1)本地连接:
本地连接nocatalog数据库(常用):
本地连接catalog数据库:
2)客户端连接:
客户端连接nocatalog数据库(常用):
客户端连接catalog数据库:
3)进入rman命令里面连接:
[oracle@lf ~]$ rman
连接nocatalog数据库(常用):
连接catalog数据库:
备份文件的格式介绍:
使用format参数时可使用的各种替换变量,如下(注意大小写)所示。
%a
Oracle数据库的activation ID即RESETLOG_ID。
%c
指定一组双重备份条目中备份条目的副本号。如果未进行备份双工,则备份集的该变量为1,代理副本的该变量为0(从1开始编号,最大不超过256)。
%d
oracle数据库的名称
%D
当前时间中的日,格式为DD。
%e
指定存档的日志序列号。
%f
绝对文件编号。
%F
基于"DBID+时间"确定的唯一名称,格式的形式为c-IIIIIIIIII-YYYYMMDD-,其中:
IIIIIIIIII代表DBID。DBID以十进制格式打印,因此很容易与目标数据库关联。
YYYYMMDD是生成备份当天的公历时间戳
以16进制数表示的序列,从00开始,最大值为“FF”(256)
注意:%F仅在中有效CONFIGURE CONTROLFILE AUTOBACKUP FORMAT命令。
%h
指定归档重做日志线程号。
%I
Oracle数据库的DBID。
%M
当前时间中的月,格式为MM。
%n
指定数据库的名称,在右边用x字符的总长度为八个字符。例如,如果prod1是数据库名称,则填充名称是prod1xxx。
%N
指定表空间名称。此替代变量仅在将数据文件备份为映像副本时有效。
%p
指定备份集内的条目编号。该值始于1每创建一个备份条目,增量为1。
注意:如果您指定PROXY,然后是%p变量必须包含在FORMAT字符串中显式或隐式%U.
%s
指定备份集编号。此数字是控制文件中的计数器,每个备份集都会递增。计数器值从1开始,在控制文件的生存期内是唯一的。如果恢复备份控制文件,则可能会产生重复的值。另外,CREATE CONTROLFILE会将计数器初始化回1。
%t
指定备份集时间戳,该时间戳是一个4字节值,是从固定参考时间起经过的秒数。您可以结合使用%s和%t以形成备份集的唯一名称。
%T
当前时间中的年月日,格式为YYYYMMDD。
䯹an>
指定8个字符的名称,由备份集或映像副本编号的压缩表示形式以及备份集或映像副本的创建时间组成。
%U
指定系统生成的唯一文件名(默认值)。
%U的含义对于映像副本和备份件是不同的。对于备份项,%U为%U_%p_%c指定了一个方便的简写,以确保生成的备份文件名的唯一性。
对于数据文件的图像副本,%U表示以下内容:data-D-%d_id-%I_TS-%N_FNO-%f_䯹an>
对于存档重做日志的映像副本,%U表示以下内容:arch-D_%d-id-%I_S-%e_T-%h_A-%a_䯹an>
对于控制文件的图像副本,%U表示以下内容:cf-D_%d-id-%I_䯹an>
%Y
当前时间中的年,格式为YYYY。
注意:1)如果在BACKUP命令中没有指定 FORMAT 选项,则 RMAN 默认使用%U为备份。
rman可用的命令:
在Oracle的RMAN(Recovery Manager)中,BACKUP命令用于执行数据库、归档日志、控制文件等的备份。
1)验证备份
2)全备(默认备份全部数据、控制、参数文件,不包括归档日志)
3)全备设置备份集大小,默认无限制
4)表空间备份
5)控制文件备份
6)参数文件备份
7)归档备份
在Oracle的RMAN(Recovery Manager)中,LIST命令用于查询和显示与备份和恢复相关的各种信息。这个命令在数据库控制文件或恢复目录中查询备份的历史信息。
1)查看数据库对应物
2)查看所有归档日志
3)查看备份集信息(详细)
4)查看备份集信息(简洁)
5)列出过期的备份文件
6)列出copy的文件
在Oracle的RMAN(Recovery Manager)中,RESTORE命令用于从RMAN备份中还原文件,为恢复做准备。这个命令允许你指定要还原的备份集、数据文件、归档日志、控制文件等。从RMAN备份中还原文件,为恢复做准备。restore和recover有本质区别,restore是从rman备份中还原文件(copy文件),而recover是通过归档恢复数据,追加到最新。
使用restore命令,该命令会在没有认识提示的情况下会重写已经存在的任何文件,除非使用set newname命令可以设置还原文件的新路径
1)参数文件的恢复
2)控制文件的恢复
3)归档日志的恢复
方式一:还原所有归档日志
方式二:还原一天内的归档日志
方式三:还原线程2的归档日志序列
在Oracle的RMAN(Recovery Manager)中,RECOVER命令用于恢复数据库或数据文件的完整性和一致性。它基于RMAN备份或归档日志来恢复数据,确保在故障发生后,数据库能够恢复到某个一致的状态。recover 命令用于通过归档恢复数据库。可以再rman下运行也可以在sqlplus下运行。restore和recover有本质区别,restore是从rman备份中还原文件(copy文件),而recover是通过归档恢复数据,追加到最新。
该命令可以执行数据库的完全恢复或者时间点恢复。 Recover 命令确定需要哪些归档的重做日志,并且析取和应用他们。一旦完成重做的应用,我们就只需要使用 alter database open 命令打开数据库即可。
原理:recover的原理是数据库使用控制文件的scn作为恢复的终点,将数据文件block恢复到控制文件所记录的scn为止。
1)所有数据文件作为一个整体恢复
2)数据文件单个恢复
在Oracle的RMAN(Recovery Manager)中,DELETE命令用于删除备份和副本,或者更改它们在恢复目录或控制文件中的状态。
备份集不是永远存在的。可以使用保存策略标记备份有效性和生存期的结束。但是备份策略的实施不会从RMAN 目录中删除备份,而只是将这些备份标记为丢弃状态。
delete命令对备份和副本的影响很大。通过delete命令,可以删除基于保存标准被标记为丢弃的任何备份,还可以将恢复目录或控制文件中的备份从expired 状态变为deleted状态。
1)删除某个备份集
2)删除所有备份集
3)删除过期的备份集
执行delete backup命令时,rman只会删除available可以的备份集,而expired不可用的需要加上expired参数,显示expired的备份集表示没有物理存在于备份介质上。注意:在删除过期的备份之前需要先执行crosscheck backup验证,不然只执行删除过期的备份,就算有过期的备份,执行之后也是不会删除相关信息的
4)删除某个归档
5)删除多个归档(区间)
6)删除所有归档
7)删除过期的归档备份
执行delete archivelog all;命令时,rman只会删除validation succeed ed for archived log可以的归档,而validation failed不可用的需要加上expired参数,显示expired的备份表示没有物理存在于备份介质上。注意:在删除过期的归档之前需要先执行crosscheck archivelog all验证,不然只执行删除过期的归档,就算有过期的归档,执行之后也是不会删除相关信息的(亲测)
8)删除废弃的备份集
删除已废弃的备份集。configure retention policy to redundancy默认值是1,设置备份文件保留多长时间,超出备份次数的文件标识为废弃(obsolete)。命令REPORT OBSOLETE和DELETE OBSOLETE分别用来查看废弃的文件和删除废弃的文件。RMAN不自动删除废弃的备份文件。废弃与过时(expired)不同。备份是否废弃由备份保留策略确定,废弃的备份文件是在介质还原中不再需要的(not needed)。过时的文件是不再存在的文件(not found),可用CROSSCHECK命令查看过时信息。注意:在删除废弃的备份集之前需要先执行report obsolete;验证,不然只执行删除废弃的备份集,就算有废弃的备份集,执行之后也是不会删除相关信息的(亲自测试后这点和过期的备份集和过期的归档备份集不一样,前者都需要先验证;而删除废弃的备份集是不需要report obsolete验证的可以直接执行delete noprompt obsolete就可以删除相关信息,但是为了统一理解,在delete noprompt obsolete前也加上report obsolete)
在Oracle的RMAN(Recovery Manager)中,REPORT命令用于生成与备份和恢复相关的报告。这些报告提供了关于数据库备份、恢复窗口、备份冗余等方面的信息。
1)报告目标数据库实例的信息
2)报告已丢弃的备份集
3)报告当前数据库中不可恢复的数据文件
4)报告需要备份的数据文件
在Oracle的RMAN(Recovery Manager)中,命令用于设置和修改RMAN的配置参数。这些配置参数控制RMAN的行为和备份策略。
1)保存策略 (retention policy)
2)备份优化(backup optimization)
3)默认设备(default device type)
4)控制文件(controlfile autobackup)
5)快照控制文件(SNAPSHOT CONTROLFILE)
6)并行数(通道数) device type disk|stb pallelism n
7)排除选项(exclude)
在Oracle的RMAN(Recovery Manager)中,SET命令用于定义或更改当前RMAN会话的某些设置。这些设置通常影响RMAN命令的行为或输出,但它们不是永久性的,仅在当前RMAN会话中有效。注意:set命令的这个选项需要在运行块中使用,不然会报RMAN-03031
1)定义基于时间点的恢复
2)定义基于scn的恢复
3)定义归档日志的新路径,并恢复10天
4)定义数据文件、日志组、临时文件的新路径(undo属于set newname for datafile)
在Oracle的RMAN(Recovery Manager)中,CROSSCHECK命令用于核对磁盘和磁带上的备份文件,以确保RMAN资料库与备份文件保持同步。这个命令会检查RMAN资料库所记载的备份文件,并验证这些文件在物理存储介质上的实际状态。每个备份集或副本的状态码。 在不同的备份状态码中,分为两种状态:
(1)A(Available:可用):RMAN认定该项存在于备份介质上
(2)X(Expired:不可用):这个备份集片或副本上存储的 RMAN 目录(即控制文件或恢复目录)中,但是并没有物理存在于备份介质上
1)验证所有备份集
2)验证归档备份集
在Oracle的RMAN(Recovery Manager)中,VALIDATE命令用于验证备份集、数据文件或归档日志文件的完整性和可恢复性。这个命令会检查数据文件或备份文件中的块是否有物理损坏或逻辑损坏,确保它们在需要时可以成功恢复。
1)验证备份
2)验证备份片,验证之前使用list backup summary查看key值(validate 命令必须要获得主键ID。这个可以用 list backup summary命令获取)
在Oracle的RMAN(Recovery Manager)中,SWITCH命令用于更新数据文件、表空间、数据库或临时文件在控制文件中的位置信息,以反映它们的新位置。这通常在移动或替换数据文件后使用,以确保RMAN和Oracle数据库知道数据文件的新位置。
1)通知控制文件将已发出SET NEWNAME for DATAFILE命令的所有数据文件切换为其新名称
2)通知控制文件中数据文件位置的新路径
在Oracle的RMAN(Recovery Manager)中,命令用于恢复单个或多个数据块,而不需要恢复整个数据文件或数据库。这在某些情况下非常有用,特别是当只有少量数据块受到损坏时。那么出现数据块错误时,都会有错误消息:ORA-01578: ORACLE data block corrupted (file #18,block #88) 。
如果没有BMR时,我们必须从一个备份中恢复这个数据文件,在恢复过程中,用户不能使用该数据块文件中的所有数据。用BMR恢复就很简单,只需要执行blockrecover命令即可。
如果在备份时提示ORA-19566: exceeded limit of 0 corrupt blocks for file +DATA01/orcl/datafile/system.256.那么表示有坏块,需要修复
在Oracle的RMAN(Recovery Manager)中,CATALOG命令用于将备份文件、归档日志、数据文件副本等添加到RMAN的资料库(repository)中,以便RMAN可以识别、跟踪和管理这些备份。当备份文件或归档日志被存放在RMAN不直接监控的位置(例如,通过操作系统命令手动备份或第三方备份工具创建的备份)时,CATALOG命令就显得尤为重要。
1)注册备份片:
2)注册归档:
3)注册目录(多用于批量注册归档,也可以用于注册备份片):
4)注册文件:
5)注册整个恢复区:
在Oracle的RMAN(Recovery Manager)中,CONVERT命令用于跨平台迁移整个数据库或数据库的一部分(如表空间、数据文件等)。这个命令特别有用,当你想将一个Oracle数据库从一个操作系统或硬件平台迁移到另一个平台时,而这两个平台可能具有不同的字节顺序、文件系统格式或其他特性。使用CONVERT命令进行跨平台迁移时,你需要确保源平台和目标平台之间的Oracle版本是兼容的。此外,如果两个平台具有不同的字节顺序(例如,一个大端字节序平台到一个小端字节序平台),RMAN将自动处理数据转换。
1)使用convert datafile完成ASM和本地文件系统间的拷贝(只做拷贝,不会通知控制文件设置为新的路径):
虽然convert这个命令主要用于跨平台传输表空间,但它也可以完成ASM和本地文件系统间拷贝文件,并且是不会通知控制文件设置为新的路径,只做拷贝。
convert datafile完成ASM和本地文件系统间的拷贝的案例可以参考我之前文章,这里就不再介绍啦!!!(直通车👉Oracle篇—数据文件在ASM磁盘和本地系统之间的互相拷贝_asm转换成本地文件-CSDN博客👈)
呼,目前已经14869个字了,用时2小时+,在此过程中,涉及了RMAN的14个主要命令类别,旨在为广大小伙伴提供一份详尽的rman工具命令参考指南。然而,必须承认的是,RMAN的命令远不止于此,它的广度远超过我的这篇文章所能涵盖的范围。因此,尽管我已经尽力将所知的内容呈现给大家,但难免会有所遗漏或不足。
在此,诚挚地邀请各位经常使用RMAN工具,并熟悉其他未在本文中提及的命令的小伙伴们,不吝赐教,各位的每一个建议、每一个补充,都将为我们这篇文章的完善提供极大的帮助。那么各位我们下篇全库备份策略见!
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/2912.html