RMAN Backups RMAN 备份
目标:
- 了解RMAN特定备份的类型
- 使用RMANBACKUP命令创建备份集
- 备份控制文件
- 备份存档的重做日志文件
- 使用RMAN copy命令创建映像副本
- Backup Piece Size 备份片的大小
- 备份片大小可以限制如下:
RUN {
ALLOCATE CHANNEL t1 TYPE 'SBT'
MAXPIECESIZE = 4G;
BACKUP
FORMAT 'df_ %t_%s_%p' FILESPERSET 3
(tablespace users); }
BACKUP COPIES 2 DEVICE TYPE sbt SPFILE;
BACKUP
FORMAT '/u01/app/oracle/backup/ar_%t_%s_%p'
ARCHIVELOG ALL DELETE ALL INPUT;
1.运行alter system archive log current 命令
2.运行 backup archivelog all 命令
3.备份backup database命令指定的其余数据文件
4.运行 alter system archive log current命令
5.备份备份操作期间生成的新归档日志
进入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;
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';
show all;
CONFIGURE CONTROLFILE AUTOBACKUP ON;
这里有两种方法,一种是用cp命令拷贝控制文件,这种没什么说的
第二种就是在RMAN下执行命令:
backup current controlfile;
cd /u01/app/oracle/fast_recovery_area/ORCL/autobackup/2023_12_03
我们切换到这里目录查看一下(每个人的可能不一样,根据备份完成之后的信息提示进行切换)
我们可以看到已经备份完成
我们需要在备份其他文件的时候加上include current controlfile
backup datafile 4 include current controlfile;
sql "alter database backup controlfile to ''/tmp/wilson.bin''";
这里两个单引号是转义符的作用
切换到tmp目录下查看备份的控制文件
backup spfile format '/u01/app/oracle/backup/md_%U';
CONFIGURE CONTROLFILE AUTOBACKUP ON;
这里和控制文件自动备份是通一个参数,因为spfile和控制文件默认是一起进行备份的
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;
backup database plus archivelog format '/u01/app/oracle/backup/db_%U';
三通道备份实现
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;
前边的这些就是我们进行并发备份时数据文件的编号
我们先查看一下当前参数
show all;
CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
backup database plus archivelog format '/u01/app/oracle/backup/db_%U';
发现启动了3个通道进行备份,说明修改参数实现了并发备份
最后测试完成之后我从新关闭了并发,这里不关也可以
这里首先需要创建两个文件,我直接新创两个文件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进行备份
我们可以看到我们对数据文件进行了双重备份
参看RMAN参数
show all;
CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 2;
copy datafile 5 to '/u01/app/oracle/b2/wilson.dbf' tag='example';
list copy;
run {
allocate channel c1 type disk;
backup incremental level 0 database format '/u01/app/oracle/backup/l0_%u';
}
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文件大,因为累积性差量备份多了一些重复的数据
备份类型:
backup incremental level 1 cumulative database format '/u01/app/oracle/backup/l1_%u' tag='zidingyibiaoqian';
list backup;
list backup tag='zidingyibiaoqian';