rman备份和恢复oracle

利用RMAN备份压缩技术对数据库做全备并备份控制文件和归档日志后删除已备份的归档日志:

1.保证开启归档

查看数据库是否开启归档:

archive log list;

先关闭数据库

shutdown immediate;

启动数据库到mount状态,mount加载控制文件

startup mount;

开启归档

alter database archivelog

******show all命令可以显示已经配置过的有默认值的参数,其中包括通道参数

RMAN>show all;

单独备份表空间

备份USERS表空间

RMAN>backup tablespace users;

备份多个表空间

RMAN>backup filesperset=3 tablespace users,system,sysaux;

backup as compressed backupset full database format '/home/oracle/backup/full_bk1_%u%p%s.dfb'
include current controlfile
plus archivelog format '/home/oracle/backup/arch_bk1_%u%p%s.dfb'
delete all input;

执行整库备份

RMAN> BACKUP DATABASE FORMAT '/u01/backup/FUL_BAK_%T';

--数据文件被备份到的路径和备份的数据文件有哪些
RMAN> LIST BACKUP OF DATABASE;

--参数文件和控制文件被备份到默认路径。
RMAN> LIST BACKUP OF SPFILE;

--备份归档日志文件
RMAN> BACKUP ARCHIVELOG ALL FORMAT '/u01/backup/ARC_%T';


--之前自己手动用rm命令删掉了归档日志。但是controlfile中还记录着归档日志信息,oracle还会去找这些归档日志文件,因此就会报错。

解决方法:使控制文件中的归档日志信息和实际物理文件信息保持一致;
1. corsscheck archivelog all;
此命令用来检查控制文件和实际物理文件信息的差异。

2.delete expired archivelog all;
删除无效的归档日志信息,使检查控制文件和实际物理文件信息同步。

--查看上一步备份的归档日志文件,可以查看归档scn是否连续完整
RMAN> LIST BACKUP OF ARCHIVELOG ALL;

RMAN中对控制文件的几种备份方法

参考博客:http://blog.itpub.net/31444259/viewspace-2154367/

-- 开启控制文件自动备份
--设置控制文件备份路劲和备份格式,加数据文件备份
run{
configure controlfile autobackup on;
configure controlfile autobackup format for device type disk to '/u01/backup01/%F';
BACKUP DATABASE FORMAT '/u01/backup01/FUL_BAK_%T';
}

全备文件 

--数据文件和控制文件
--归档文件
--spfile文件
run{
backup as compressed backupset full database FORMAT '/u01/backup01/full_bk1_%u%p%s.bak' 
include current controlfile;
BACKUP ARCHIVELOG ALL FORMAT '/u01/backup01/ARC_%u%p%s';
backup spfile format '/u01/backup01/SPFILE_%d';
}
--和以上的区别是,控制文件是单独备份的
run{
backup as compressed backupset full database FORMAT '/u01/backup01/full_bk1_%u%p%s.bak';
backup current controlfile format '/u01/backup01/Con_%u%p%s.bak';
BACKUP ARCHIVELOG ALL FORMAT '/u01/backup01/ARC_%u%p%s';
backup spfile format '/u01/backup01/SPFILE_%d';
}

控制文件的备份

指定备份压缩

在backup后添加as compressed backupset

方法一:

backup current controlfile format '/u01/backup01/c_bk1_%u%p%s.bak';

方法二:

--执行 BACKUP 时指定 INCLUDE CURRENT CONTROLFILE 参数,例如:
RMAN> BACKUP DATABASE INCLUDE CURRENT CONTROLFILE;
如果要查看备份的控制文件,可以通过:
RMAN> LIST BACKUP OF CONTROLFILE;

OMF方式压缩备份全库(数据文件+控制文件)

backup as compressed backupset database to destination '/u01/backup01/';

--不压缩备份
backup database to destination '/u01/backup01/';

检查备份集有效性

核实备份集

RMAN> crosscheck backupset;

RMAN> crosscheck backup;

删除无效备份集

RMAN> delete obsolete;

检验归档日志有效性

RMAN> crosscheck archivelog all;

无效的归档,可以删除

有效的归档

列出所有失效的归档日志

list expired archivelog all;

删除log sequence为16及16之前的所有归档日志

delete archivelog until sequence 16;

--删除系统时间7天以前的归档日志,不会删除闪回区有效的归档日志

 delete archivelog all completed before 'sysdate-7';

--该命令清除所有的归档日志

delete noprompt archivelog all;

知识补存:

RMAN命令详解

https://www.iteye.com/blog/wallimn-1208204

RMAN命令LIST操作总结

https://www.cnblogs.com/kerrycode/p/5773050.html

猜你喜欢

转载自blog.csdn.net/weixin_41086692/article/details/103194033