文章目录
- 一、基础知识
- 1、RMAN Backup Concepts RMAN备份概念
- 2、RMAN Backup Modes RMAN备份的类型
- 3、Backup File Types 备份文件类型
- 4、RMAN Backup Destinations RMAN备份目标
- 5、Backup Constraints 备份约束
- 6、Recovery Manager Backups 恢复管理器备份
- 7、Characteristics of BS BS的特点
- 8、Backup Piece 备份片
- 9、Backup Issues 备份问题
- 10、Control File and SP File 控制文件和SP文件
- 11、Backing Up the SP File 备份SP文件
- 12、Archived Redo Log Back Sets 归档重做日志的备份集
- 13、Backup Database Plus Archivelog 备份数据库和归档日志
- 14、Duplexed Backup Sets 双重备份集
- 15、Characteristics of lmage Copy 镜像拷贝特性
- 16、Making Incremental Backups 进行增量备份
- 17、Monitoring RMAN Backups 监控RMAN备份
- 二、基础操作
- 1、完整备份数据库
- 2、查看数据库结构并指定数据文件备份
- 3、备份控制文件的方法
- 方法1.修改RMAN参数
- 方法2.直接使用命令备份
- 方法3.在备份其他文件的时候使用子句备份
- 方法4.修改控制文件数据
- 4、备份spfile文件
- 方法1.在RMAN中执行命令
- 方法2.修改RMAN参数
- 5、备份归档日志文件
- 方法1.使用命令备份
- 方法2.在备份其他文件是附加备份
- 6、并发备份数据库的实现
- 方法1.使用命令实现多通道并发备份
- 方法2.修改参数实现多通道并发
- 7、双重备份的实现
- 方法1.RMAN命令实现
- 方法2.修改RMAN参数
- 8、镜像拷贝实现
- 9、增量备份
- 做0级备份
- 做1级备份
- 累积性差量备份
- 总结
- 10、自定义标签
RMAN Backups RMAN 备份
目标:
- 了解RMAN特定备份的类型
- 使用RMANBACKUP命令创建备份集
- 备份控制文件
- 备份存档的重做日志文件
- 使用RMAN copy命令创建映像副本
一、基础知识
1、RMAN Backup Concepts RMAN备份概念
- 恢复管理器备份是服务器管理的备份
- 恢复管理器使用Oracle服务器会话备份操作
- 可以备份整个数据库、表空间中的所有数据文件、选定的数据文件、控制文件、存档的重做日志文件
- 封闭式数据库备份(冷备份)
- 必须装入目标数据库(未打开)
- 包括数据文件、控制文件、归档重做日志文件
- 开放式数据库备份(缺点)
- 不应将表空间置于备份模式
- 包括数据文件、控制文件、归档重做日志文件
2、RMAN Backup Modes RMAN备份的类型
- 完全备份与增量备份:完全备份是数据文件的备份,其中包括该文件中的每个已分配块。请注意,数据文件的映像副本备份将始终包括该文件中的每个块。但是,将数据文件备份为备份集时,可能会跳过未使用的数据块。增量备份可以是两个不同级别中的一个:0级备份包括数据文件中的所有块(因从未使用而被压缩的块除外) ,或1级备份仅包括自父备份以来更改过的块。
- 一致性与不一致性备份:在数据库完全正常关闭 (与使用shutdownabort命令或在数据库突然崩溃后关闭相反)并在装入状态下重新启动后进行的备份称为一致性备份。在还原数据库后,一致备份不需要恢复。在数据库联机时或在数据库突然关闭后进入装入状态后执行的备份称为不一致备份。不一致的备份始终需要恢复以使备份一致。
3、Backup File Types 备份文件类型
- Tablespaces 表空间
- Datafiles (current or copy) 数据文件 (当前或副本)
- Control file (current or copy) 控制文件 (当前或副本)
- Spfiles
- Archived logs 归档日志文件
- Backup sets 备份集
4、RMAN Backup Destinations RMAN备份目标
- 任何磁盘目录,包括自动存储管理 (ASM)磁盘组。
- 一个介质管理库 (磁带设备)。
- 闪存恢复区域,这是Oracle基于磁盘的备份和恢复策略的核心。闪回恢复区是一个完全保留的磁盘区域,用于备份和恢复,以及存储闪回日志,闪回日志用于支持闪回数据库特性。
5、Backup Constraints 备份约束
- 必须置数据库于mount或open状态。
- 不支持联机重做日志备份。
- 只有“干净”备份可用于NOARCHIVELOG模式。
- 只有当前的数据文件备份可以在ARCHIVELOG模式下使用。
6、Recovery Manager Backups 恢复管理器备份
7、Characteristics of BS BS的特点
- BACKUP命令创建备份集
- 备份集通常包含多个文件
- 备份集可以写入磁盘或磁带
- 需要执行还原操作才能从备份集中提取文件
- 数据文件备份集可以是增量备份集,也可以是完全备份集
- 备份集不包括从未使用过的块
8、Backup Piece 备份片
- 备份片段是备份集中的文件
- 备份片段可以包含来自多个数据文件的块
- Backup Piece Size 备份片的大小
- 备份片大小可以限制如下:
RUN {
ALLOCATE CHANNEL t1 TYPE 'SBT'
MAXPIECESIZE = 4G;
BACKUP
FORMAT 'df_ %t_%s_%p' FILESPERSET 3
(tablespace users); }
9、Backup Issues 备份问题
- Backup datafiles
- Backup tablespaces
- Backup the control file
- Backup the server parameter file
- Backup the archived log files
10、Control File and SP File 控制文件和SP文件
- 使用CONFIGURE CONTROLFILE AUTOBACKUP命令来启用
- 当启用时,RMAN在BACKUP或COPY命令后自动执行控制文件和当前服务器参数文件的备份
- 对数据库进行结构性更改后也会进行备份
- 备份具有默认名称
11、Backing Up the SP File 备份SP文件
- 配置时自动备份 CONTROLFILE AUTOBACK = ON
- 使用BACKUPSPFILE显式备份:
BACKUP COPIES 2 DEVICE TYPE sbt SPFILE;
12、Archived Redo Log Back Sets 归档重做日志的备份集
- 仅包括归档的重做日志文件
- 始终是完整备份:
BACKUP
FORMAT '/u01/app/oracle/backup/ar_%t_%s_%p'
ARCHIVELOG ALL DELETE ALL INPUT;
- 联机重做日志文件切换是自动的
- 执行归档日志故障转移
- 备份需要备份的归档日志
13、Backup Database Plus Archivelog 备份数据库和归档日志
- 在我们备份归档日志的时候,我们的数据库干了如下的事情
1.运行alter system archive log current 命令
2.运行 backup archivelog all 命令
3.备份backup database命令指定的其余数据文件
4.运行 alter system archive log current命令
5.备份备份操作期间生成的新归档日志
14、Duplexed Backup Sets 双重备份集
15、Characteristics of lmage Copy 镜像拷贝特性
- 只能写入磁盘
- 可立即用于恢复;不需要恢复
- 是单个数据文件、归档日志或控制文件的物理副本
- 镜像是操作系统备份 (包含所有块)
- 可以是增量策略的一部分
16、Making Incremental Backups 进行增量备份
- 完整备份包含所有数据文件块
- 差异增量备份仅包含级别n或更低的修改块
- 累积增量备份仅包含级别n-1或更低的已修改块
- 增量备份分为0-4五个级别
- 0级备份相当于全备
17、Monitoring RMAN Backups 监控RMAN备份
- 使用SET COMMAND ID命令将服务器会话与通道关联起来
- 查询V$PROCESS和V%SESSION,以确定哪些会话对应于哪些RMAN信道。
- 查询V&SESSION_LONGOPS 来监视备份和副本的进度。
- 使用操作系统实用程序监视进程或线程
二、基础操作
1、完整备份数据库
进入RMAN
rman target sys/123@orcl nocatalog
开始备份
格式:
backup database format 要备份的地址目录/md_%U
backup database format '/u01/app/oracle/backup/md_%U';
注意这里的备份命令只是备份了数据库,没有备份归档日志文件
正常做全备我们还需要备份归档日志文件,经常使用以下命令:
backup database plus archivelog format '/u01/app/oracle/backup/db_%U';
进入到备份目录下查看备份文件(这里做的是没有备份归档日志那个命令的展示效果,如果是使用备份归档日志文件的命令,文件名会以db开头)
查看备份记录
list backup;
删除备份
# 删除所有备份
DELETE BACKUP;
删除指定片的备份
格式:delete backupset 片号(也就是list backup查询记录最前边显示的BS值)
delete backupset 1,2;
2、查看数据库结构并指定数据文件备份
report schema;
我们可以查看到当前数据库结构如图所示
然后我们对其中任何一个都可以进行单独备份
backup datafile 4 format '/u01/app/oracle/backup/md_%U';
这里的4就是上面我们查看数据库结构文件序号,如果将这里的4换成文件路径也是可行的
backup datafile '/u01/app/oracle/oradata/orcl/users01.dbf' format '/u01/app/oracle/backup/md_%U';
3、备份控制文件的方法
方法1.修改RMAN参数
show all;
默认是关闭,我们需要打开就行了
CONFIGURE CONTROLFILE AUTOBACKUP ON;
这样在每次备份的时候都会对参数文件进行备份
方法2.直接使用命令备份
这里有两种方法,一种是用cp命令拷贝控制文件,这种没什么说的
第二种就是在RMAN下执行命令:
backup current controlfile;
可以看到已经备份到这里了
cd /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2023_12_03
我们切换到这里目录查看一下(每个人的可能不一样,根据备份完成之后的信息提示进行切换)
我们可以看到已经备份完成
方法3.在备份其他文件的时候使用子句备份
我们需要在备份其他文件的时候加上include current controlfile
backup datafile 4 include current controlfile;
我们可以看到在备份数据文件4的时候同时备份了控制文件
方法4.修改控制文件数据
sql "alter database backup controlfile to ''/tmp/wilson.bin''";
这里两个单引号是转义符的作用
切换到tmp目录下查看备份的控制文件
4、备份spfile文件
方法1.在RMAN中执行命令
backup spfile format '/u01/app/oracle/backup/md_%U';
- 其实通过上图和控制文件备份图片我们可以看出,当我们备份控制文件时也会默认备份spfile,我们备份spfile时也会默认备份控制文件,并且将他们两个打包成一个备份文件
方法2.修改RMAN参数
CONFIGURE CONTROLFILE AUTOBACKUP ON;
这里和控制文件自动备份是通一个参数,因为spfile和控制文件默认是一起进行备份的
5、备份归档日志文件
方法1.使用命令备份
BACKUP ARCHIVELOG
FORMAT '/u01/app/oracle/backup/ar_%t_%s_%p';
DELETE ALL INPUT
的作用是删除原来的东西,对于我这个命令而言就是删除/u01/app/oracle/backup/
目录下的东西,然后在将归档日志文件备份到里面,all命令就是备份所有的归档日志文件,增加完参数就是下面这条命令:
BACKUP ARCHIVELOG ALL
FORMAT '/u01/app/oracle/backup/ar_%t_%s_%p'
DELETE ALL INPUT;
我们可以看到归档日志文件已经备份完成
方法2.在备份其他文件是附加备份
backup database plus archivelog format '/u01/app/oracle/backup/db_%U';
- 以上示例是在对数据库备份的时候对归档日志文件备份
6、并发备份数据库的实现
方法1.使用命令实现多通道并发备份
三通道备份实现
run {
allocate channel c1 type disk;
allocate channel c2 type disk;
allocate channel c3 type disk;
backup incremental level=0
format '/u01/app/oracle/backup/p_%u'
(datafile 1 channel c1 tag='sys')
(datafile 2 channel c2 tag='aux')
(datafile 3,4,5 channel c3 tag='other');
sql 'alter system archive log current';
}
在操作的过程中我们能明显的感觉到速度比单通道备份快了许多。
关于数据文件编号查询:
我们需要进入数据库
然后执行select file#, name from v$datafile;
查看编号
对于格式比较乱我们可以进行一些整理col name format a50;
前边的这些就是我们进行并发备份时数据文件的编号
方法2.修改参数实现多通道并发
我们先查看一下当前参数
show all;
通过查看参数我们可以看到当面默认并发度是1
修改参数为3:
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
这个时候我们在做一次完备进行测试
backup database plus archivelog format '/u01/app/oracle/backup/db_%U';
发现启动了3个通道进行备份,说明修改参数实现了并发备份
最后测试完成之后我从新关闭了并发,这里不关也可以
7、双重备份的实现
方法1.RMAN命令实现
这里首先需要创建两个文件,我直接新创两个文件b1,b2作为两个备份文件的存放地点
mkdir /u01/app/oracle/b1;
mkdir /u01/app/oracle/b2;
开始备份
backup copies 2 datafile 5 format '/u01/app/oracle/b1/d_%U','/u01/app/oracle/b2/d_%U';
代码解释copies 2
表示双重备份,如果要备份三个就需要将2改成3就可以了,
datafile 5
表示对数据文件5进行备份
我们可以看到我们对数据文件进行了双重备份
方法2.修改RMAN参数
参看RMAN参数
show all;
我们可以看到当前默认只备份一份
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
将参数修改成2就可以实现双重备份了
8、镜像拷贝实现
copy datafile 5 to '/u01/app/oracle/b2/wilson.dbf' tag='example';
查看拷贝历史
list copy;
9、增量备份
做0级备份
run {
allocate channel c1 type disk;
backup incremental level 0 database format '/u01/app/oracle/backup/l0_%u';
}
可以看到我们刚刚做的备份级别是0级备份,大小1.08G
做1级备份
run {
allocate channel c1 type disk;
backup incremental level 1 database format '/u01/app/oracle/backup/l1_%u';
}
我们发现1级备份大小小于0级备份
注意:当我们从来没有做过0级备份时,做1级备份时会首先自动做一次0级备份
累积性差量备份
累积性需要在级别后边加cumulative
run {
allocate channel c1 type disk;
backup incremental level 1 cumulative database format '/u01/app/oracle/backup/l1c_%u';
}
我们可以发现l1c文件比l1文件大,因为累积性差量备份多了一些重复的数据
总结
备份类型:
- 完全备份包含所有使用的数据文件块。
- 0 级增量备份等同于标记为 0 级的 完全备份。 累积 1 级增量备份只包含自上次 0 级增量备份以来修改过的块。
- 差异 1 级增量备份只包含自上次增量备份以来修改过的块。(默认1级备份就是差异备份)
- 2级累积增量备份上次任意级别备份至今的增量(任意一次备份至今)
10、自定义标签
backup incremental level 1 cumulative database format '/u01/app/oracle/backup/l1_%u' tag='zidingyibiaoqian';
我们查看我们备份的备份集
list backup;
查到标签之后我们可以进行标签查询备份信息
list backup tag='zidingyibiaoqian';
灵活运用标签能够很好的管理备份集