RMAN 备份恢复、删除归档

RMAN冷备全库

rman target /

list backup

shutdown immediate

startup mount

#不要自动备份control file

set nocfau;

#注意要先备份数据库,然后备份控制文件,因为数据库的备份位置记录在控制文件中。

#备份数据库
backup database format '/mnt/disk01/rman_backup_dir2/db_%d_%T_%U.bak';

#备份控制文件
backup current controlfile format '/mnt/disk01/rman_backup_dir2/ctl_%d_%T_%U.bak';

恢复12c的时候,要先给12c建一个库(如果12c没有库或库已经升级为19c,用dbca),再用rman恢复,否则不行。建库参考:12c DBCA建库

恢复之前的备份

(在12c的环境下,ORACLE_HOME等)

注意,只能还原相同版本Oracle的备份,即使是小版本不同,都不行。

rman target /
startup force nomount;
restore controlfile from '/mnt/disk01/rman_backup_dir2/ctl_PAAS_20221019_051am6dk_1_1.bak';

#还原控制文件后,不必指定数据库备份的位置,因为这个信息已经在备份文件中
startup force mount;
restore database;
alter database open resetlogs;


RMAN连接server process来工作。
备份策略:
CONFIGURE RETENTION POLICY TO REDUNDANCY 1;
CONFIGURE RETENTION POLICY TO recovery window of 7 days;

通过设置备份策略,决定哪些备份是obsolete,obsolete的备份并不会自动删除,需要手工删除:list backup
report obsolete
delete obsolete

使用RMAN既可以做单独的tablespace备份,datafile备份,也可以做全库备份:
backup database format '/u01/app/oracle/backup-rman/db_%d_%T_%U.bak';
或直接
backup database;
会备份到db_recovery_file_dest设置的目录。
或压缩备份
backup as compressed backupset database;

$ORACLE_HOME下的dbs中的c-2191530773-20210705-00,这样的文件是控制文件的备份。

RMAN备份的目录:
db_recovery_file_dest 也是闪回恢复区
alter system set db_recovery_file_dest_size = 10G scope=spfile;
alter system set db_recovery_file_dest='/u01/app/oracle/backup-rman' scope=both;
show parameter db_recovery_file_dest

如果手工删除了归档文件,RMAN中删除就会出错。如果要操作系统的文件和RMAN元文件中的记录相同步,在RMAN中使用
crosscheck backup;
然后执行
report obsolete

delete obsolete
delete expired backup
crosscheck archivelog all;
delete expired archivelog all;

list backup;
report need backup;

删除备份集:
对一个数据库的备份包括许多备份文件,这就是一个备份集:
delete backupset 备份集号;
delete backup;    --- 删除所有备份集;

结合体系结构、备份恢复知识,和RMAN,注意备份的文件夹和文件名的管理。
删除归档日志:
delete archivelog all completed before 'sysdate-7';  删除7天前和更早的归档
delete archivelog from time 'sysdate-7';  删除7天前到现在的归档
RMAN的元数据
RMAN的元数据记录关于备份恢复的信息,它的元数据在controlfile里。
可以手工注册备份片的元数据,或者删除某个备份片的元数据,即仅仅更改controlfile。
RMAN将数据库、数据文件、表空间,备份为数据集,一个备份集包含一个或多个备份片,备份片就是一个OS文件,不一定与数据文件一一对应。
这个注册或注销的操作通过RMAN中的catalog命令来做。
通过手工cp的数据文件,在RMAN中称为datafilecopy,也是一种备份方式。
注册一个数据文件:
catalog backuppiece '/u01/app/oracle/backup-rman/CDB/autobackup/2021_07_05/o1_mf_s_1077123949_jg5lvfby_.bkp.bad';
注册一个目录:
catalog start with '/u01/backup/prod/hot/';
注销备份片:
change backuppiece 17 uncatalog;
RMAN增量备份:
RMAN支持增量备份,基于基础备份的增量备份,基础备份称为level 0备份(不同于全量备份),在level 0备份的基础上,进行一次增量备份,称为level 1备份。
相对于level 0的增量备份,称为积累增量备份。
相对于前一次增量备份的增量备份,称为差异增量备份。
backup incremental level 0 database format '/u01/app/oracle/backup-rman/db_%d_%T_%U.bak';
backup cumulative incremental level 1 database;
backup incremental level 1 database format '/u01/app/oracle/backup-rman/db_%d_%T_%U.bak';
RMAN全量备份脚本:
run
{
allocate channel c1 type disk;
allocate channel c2 type disk;
backup database filesperset 4 format '/u01/app/oracle/backup/rman/full_%d_%T_%s_%p';
sql 'alter system archive log current';
sql 'alter system archive log current';
sql 'alter system archive log current';
backup archivelog all format '/u01/app/oracle/backup/rman/arch_%d_%T_%s_%p' delete input;
backup current controlfile format '/u01/app/oracle/backup/rman/ctl_%d_%T_%s_%p';
crosscheck backup;
crosscheck archivelog all;
delete noprompt obsolete;
delete noprompt expired backup;
delete noprompt expired archivelog all;
}
备份controlfile
backup current controlfile format '/u01/app/oracle/backup/rman/ctl_%d_%T_%s_%p';

恢复

场景1:
完全恢复,使用备份时的controlfile(使用故障时的controlfile也可以
run {
startup force nomount;
restore controlfile from '/u01/app/oracle/backup/rman/ctl_CDB_20210707_85_1';
startup force mount;
restore database;
recover database until available redo; 
alter database open resetlogs;
}
不完全恢复PITR,使用备份时的controlfile(使用故障时的controlfile失败
run {
startup force nomount;
restore controlfile from '/u01/app/oracle/backup/rman/ctl_CDB_20210707_85_1';
startup force mount;
set until scn 3707239;
restore database;
recover database; 
alter database open resetlogs;
}

场景2:

完全恢复,使用D的controlfile使用A的controlfile只能恢复到C
run {
startup force nomount;
restore controlfile from '/u01/app/oracle/backup/rman/ctl_CDB_20210707_89_1';
startup force mount;
restore database;
recover database until available redo; 
alter database open resetlogs;
}

不完全恢复PITR,使用A的controlfile,可以恢复A-C之间的状态:
run {
startup force nomount;
restore controlfile from '/u01/app/oracle/backup/rman/ctl_CDB_20210707_85_1';
startup force mount;
set until scn 3707239;
restore database;
recover database; 
alter database open resetlogs;
}
不完全恢复PITR,使用C的controlfile,可以恢复C-D之间的状态:
run {
startup force nomount;
restore controlfile from '/u01/app/oracle/backup/rman/ctl_CDB_20210707_87_1';
startup force mount;
set until scn 3707239;
restore database;
recover database; 
alter database open resetlogs;
}
按时间恢复(不完全恢复)
run {
startup force mount;
allocate channel c1 type disk;
allocate channel c2 type disk;
sql 'alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss"';
set until time '2021-07-06 11:08:16';
restore database;
recover database;
alter database open resetlogs;
}

从全备恢复spfile和controlfile

startup force nomount;
在nomount状态下:
restore spfile from '/u01/app/oracle/backup-rman/CDB/autobackup/2021_07_06/o1_mf_s_1077187429_jg7jv5cz_.bkp';
restore controlfile from '/u01/app/oracle/backup-rman/CDB/autobackup/2021_07_06/o1_mf_s_1077187429_jg7jv5cz_.bkp';

没有使用catalog时,rman所有的配置信息,都存储在controlfile中。

相关推荐

  1. rman不完全备份恢复_归档模式

    2024-03-26 14:50:05       33 阅读
  2. rman 归档备份 archived log 不重复备份

    2024-03-26 14:50:05       12 阅读
  3. ORACLE之rman备份恢复及故障处理

    2024-03-26 14:50:05       32 阅读
  4. pg_rman恢复服务器上恢复源库的备份

    2024-03-26 14:50:05       12 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-26 14:50:05       14 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-26 14:50:05       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-26 14:50:05       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-26 14:50:05       18 阅读

热门阅读

  1. 通用人工智能与人类工作的未来

    2024-03-26 14:50:05       20 阅读
  2. 高级 IO

    高级 IO

    2024-03-26 14:50:05      19 阅读
  3. oslo_policy学习小结

    2024-03-26 14:50:05       14 阅读
  4. Qt源码分析:QMetaObject实现原理

    2024-03-26 14:50:05       18 阅读
  5. MongoDB 的索引有哪些 nestjs mongoose示例

    2024-03-26 14:50:05       15 阅读
  6. 在线数据格式工具

    2024-03-26 14:50:05       14 阅读