一、什么是RMAN
RMAN是Oracle提供的Recovery Manager,即恢复管理器,是一个更加智能和自动化的备份和恢复管理器。它可以帮助用户执行备份和还原数据库文件、归档日志和控制文件等操作,也可以用来执行完全或不完全的数据库恢复。
二、启动RMAN
RMAN一启动就会有两个Server process (如图)
rman target sys/123456@orcl nocatalog
## 其中,"target"指的是目标数据库,sys是用户名,/后边是密码。
## @后是数据库实例名"nocatalog"表示不使用目录或数据字典视图。
三、RMAN的使用
1.show命令
show all;
show all在当前会话中所有RMAN预定义的配置参数的设置情况。
也可以在show 后面加上参数名称来查看指定参数的配置情况。
show default device type;
2.CONFIGUE命令
(对于RMAN中预定义的参数,可以使用CONFIGURE命令进行重新设置:
CONFIGURE DEFAULT DEVICE TYPE TO sbt;
##sbt是一种磁带设备的名称,全称为"Sequential Backup Tape"。
使用show命令查看是否修改成功
已经修改成功(此时后边的#default已经消失)
此时也可以输入命令恢复到默认设置
CONFIGURE DEFAULT DEVICE TYPE CLEAR;
此时已经修改成默认
3.list命令
list incarnation:查看实例的版本和状态信息。
list backup:查看备份集的信息,包括备份集名称、类型、大小等。
list backup summary:查看备份集的摘要信息,包括备份集类型、大小、创建时间等。
list backup of database summary:查看数据库的备份集摘要信息,包括备份集类型、大小、创建时间等。
list backup of tablespace summary:查看表空间的备份集摘要信息,包括备份集类型、大小、创建时间等。
list backup of datafile n,n summary:查看指定数据文件的备份集摘要信息,包括备份集类型、大小、创建时间等。
list backup of archivelog all summary:查看所有存档日志文件的备份集摘要信息,包括备份集类型、大小、创建时间等。
list backup by file:按照文件方式查看备份集的信息,包括文件路径、大小等。
list expired backup:查看过期备份集的信息,包括过期时间、备份类型等。
list copy:查看复制的备份集的信息,包括复制时间、源路径、目标路径等。
list backup of spfile:查看SPFILE文件的备份集信息,包括备份集名称、类型、大小等。
list backup of controlfile:查看控制文件的备份集信息,包括备份集名称、类型、大小等。
list backup tablespace tablespace_name:查看指定表空间的备份集信息,包括备份集名称、类型、大小等。
list archivelog all:查看所有存档日志文件的信息,包括文件路径、大小等。
4.report命令
RMAN的report命令可以用来生成数据库的备份和恢复报告,提供有关备份的特定信息,例如最近没有备份的数据文件、备份冗余或恢复窗口等。
report need backup:查询没有备份的数据文件。
report need backup incremental:根据需要应用的增量备份数生成报告。
report need backup redundancy:确定为满足备份冗余策略而需要备份的数据文件。
report unrecoverable:报告不可恢复的数据文件。
report copy of controlfile:查看控制文件的复制信息。
report by file:按照文件方式查看备份集的信息。
report by incarnation:按照实例方式查看备份集的信息。
report expired backup:查看过期备份集的信息。
report copy:查看复制的备份集的信息。
report schema命令获取目标数据库的对象结构
report by file summary:按照文件方式查看备份集的摘要信息。
report by incarnation summary:按照实例方式查看备份集的摘要信息。
四、备份数据库
RMAN备份的format后边的参数
%c 备份片的拷贝 %D 位于该月中的第几天 (DD) %M 位于该年中的第几月 (MM) %F 一个基于DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中IIIIIIIIII 为该数据库的DBID,YYYYMMDD 为日期,QQ 是一个1-256 的序列 %d 数据库名称 %n 数据库名称,向右填补到最大八个字符 %u 一个八个字符的名称代表备份集与创建时间 %p 该备份集中的备份片号,从1 开始到创建的文件数 %U 一个唯一的文件名,代表%u_%p_%c %s 备份集的号 %t 备份集时间戳 %T 年月日格式(YYYYMMDD)
1.备份整个数据库
RMAN> backup database
2.备份特定的表空间
RMAN> backup tablespace tablespace_name;
3.run{}通道用法
在RMAN中,RUN {}
通道是一种用于执行备份和恢复操作的特殊通道。它允许您在RMAN会话中执行一系列命令,以执行备份、还原和恢复操作。
RUN {
allocate channel c1 device type disk format '/path/to/backup/%U';
MAXPIECESIZE = 4G;
BACKUP
FORMAT 'df_%t_%s_%p.bak';
datafile 1 ;
}
数据文件的编号可以通过
select file#,name from v$datafile;
allocate channel c1 device type disk format '/path/to/backup/%U';
:这一行将创建一个名为c1
的新通道,设备类型为磁盘(disk代表磁盘类型,也有其它类型比如sbt(磁带类型)),并将备份文件保存在/path/to/backup/%U
路径下。%U
是一个唯一的文件名占位符,RMAN将自动生成唯一的文件名。
具体用法可参考1、RMAN基本概念和命令-CSDN博客
4.备份归档日志文件
RMAN备份归档日志文件主要有两种方式,一种是备份所有归档日志文件,另一种是备份指定范围的归档日志文件。以下是具体的示例:
备份所有归档日志文件:可以使用“BACKUP ARCHIVELOG ALL”命令来备份所有的归档日志文件。例如:
RMAN> BACKUP ARCHIVELOG ALL;
备份指定范围的归档日志文件:如果有特定的归档日志文件需要备份,可以通过指定日志序列号或SCN号来进行备份。例如,要备份序列号为100到200的归档日志文件,可以使用以下命令:
RMAN> BACKUP ARCHIVELOG FROM SEQUENCE 100 UNTIL SEQUENCE 200;
另外,如果要备份某个SCN范围内的归档日志,可以使用类似于以下的命令:
RMAN> BACKUP ARCHIVELOG FROM SCN 1000 UNTIL SCN 2000。
5.镜像拷贝
镜像拷贝的特性:
(1)只能被写入磁盘中
(2)能够立即恢复,不需要拷贝
(3)是一个单一的数据文件,归档日志,或者控制文件的物理拷贝(源文件有一个,拷贝的文件也只有一个)
(4)是操作系统的备份
(5)可作为增量备份的基石
RMAN>copy datafile '/oradata/user_01_db01.dbf' to '/backup/user01.dbf' tag=DF3
-- tag参数用于标记特定的备份集,以便在后续的恢复操作中可以轻松识别和选择所需的备份集。
6.增量备份
RMAN增量备份在Oracle 9i中分为五个级别,分别是0、1、2、3、4。
需要注意的是,Oracle 10g和11g中只支持0级和1级增量备份
Oracle 12c的增量备份分为五级,分别是0级、1级、2级、3级和4级。
Oracle 12c之后的版本中,增量备份一般分为四个级别,包括0级、1级、2级和累积增量备份
注:0级备份和全量备份是有区别的
如下:
0级备份和全量备份在以下三个方面存在明显的区别:
(1)数据处理方式:0级备份是增量备份的基础,它备份的是整个数据库,并且记录自上次同级别或更高级别的增量备份以来数据库发生改变的数据块。而全量备份则是备份整个数据库的数据,不区分数据块的用途或重要性。
(2)备份时间和存储空间:由于0级备份只备份已经发生改变的数据块,因此相对于全量备份,它可以节省存储空间和备份时间。而全量备份会备份所有的数据块,因此需要更多的存储空间和备份时间。
(3)恢复过程:在恢复过程中,0级备份需要使用恢复命令进行恢复,而全量备份可以直接使用备份文件进行恢复。此外,如果需要恢复全部数据,全量备份可以直接满足需求,而0级备份则需要通过多次增量备份进行恢复,因此恢复过程可能会更加复杂。
0级备份可以作为增量备份的起点,全量备份不可以。
差异增量备份
它基于当前备份和上次备份之间的差异进行备份。具体来说,差异增量备份会对比当前备份和上次全量备份之间的差异,只备份有差异的文件。这种备份方式可以节省存储空间和备份时间,因为只备份发生改变的数据块。
累计增量备份
累计增量备份(Cumulative Incremental Backup)是指自上次完整数据库备份或上一次LEVEL 0差异增量备份以来所修改过的数据块进行的备份。这种备份策略是在增量备份的基础上发展而来的,备份自上次备份以来被修改过的数据块。
两者各自的优势:
备份时间和恢复时间:差异增量备份可以更快地完成备份,因为只需要备份自上次同级或上级备份以来发生变化的块。然而,在恢复时,需要应用每个增量备份,因此恢复时间可能会更长。相反,累计增量备份需要更多的备份时间,因为需要备份自上次上级备份以来所有发生变化的块,但它能减少恢复时间,因为只需要恢复最后一份增量备份。
存储空间:差异增量备份需要更少的存储空间,因为它只会备份更改过的块。然而,累计增量备份由于需要备份所有更改过的块,因此会占用更多的存储空间。
可靠性:由于差异增量备份只备份更改过的块,因此在某些情况下可能会出现数据丢失的情况。例如,如果数据库在完成一次差异增量备份后发生故障,那么在该备份之后更改过的数据将无法恢复。然而,累计增量备份可以避免这种情况,因为它备份了自上次上级备份以来所有更改过的块。
备份频率和恢复过程:由于差异增量备份只备份更改过的块,因此可以更频繁地执行备份操作。然而,在恢复时需要应用每个增量备份,这可能会使恢复过程变得复杂。累计增量备份由于备份了所有更改过的块,因此可以减少恢复过程所需的步骤,从而简化恢复过程。
异机恢复,别忘了执行cataloh start with '/backup/';(这里以备份集在/backup/下),否则恢复的时候会报错找不到备份集。