RMAN:Oracle的恢复管理器
一、RMAN备份
1、全备份
rman target /
list backupset;
backup database;
show all;
(control file的位置:$ORACLE_BASE/$ORACLE_SID/)
2、0级增量备份
rman target /
backup incremental level=0 database;
list backupset;
(备份的东西和全备份一致,并可以作为1级备份的基础)
3、1级增量备份
backup incremental level 1 database;
list backupset;
(备份的内容:datafiles,controlfile,spfile;查看controlfile内容:strings *.ctl)
4、备份archivelog,表空间,控制文件
1)备份archivelog:backup database plus archivelog delete input;(备份的内容:datafiles,controlfile,spfile,archivelog)
2)备份表空间:backup tablespace USERS; report schema;
3)备份控制文件:backup current controlfile; backup database include current controlfile;
5、备份集(backupset)和镜像备份(Image Copies)
copy datafile 5 to '/u01/rmanbak/testbak.dbf';
list copy;
6、单命令和批命令
1)单命令
backup database;
2)批命令
run{
allocate channel cha1 type disk;
backup
format '/u01/rmanbak/full_%t'
tag full_backup
database;
release channel cha1;
}
(channel通道:控制备份行为,灵活备份;并行度、I/O带宽限制、备份片大小限制)
7、备份计划
备份脚本+crontab:
rman target / msglog=/日志路径/bak.log cmdfile=/脚本路径/bak.sh
service crond restart
8、其他
1)控制文件自动备份:configure controlfile autobackup on;
2)删除备份:delete backupset 24;
二、RMAN恢复
1、spfile丢失
startup nomount;
set dbid ?;
restore spfile from autobackup;或者restore spfile from '/u01/……/*.bkp';
shutdown immediate;
startup;
2、controlfile丢失
startup nomount;
restore controlfile from autobackup;
alter database mount;
recover database;
alter database open resetlogs;
3、redolog file丢失
shutdown immediate;
startup mount;
recover database until cancel;
alter database open resetlogs;
4、datafile丢失
sql 'alter database datafile 5 offline';
restore datafile 5;
recover datafile 5;
sql 'alter database datafile 5 online';
5、表空间恢复
sql 'alter database users offline';
restore tablespace users; --restore:最近一次的全备份
recover tablespace users; --recover:最近一次全备后,利用redolog
sql 'alter tablespace users online';
6、非catalog方式完全恢复(数据库出现问题)
startup nomount;
restore controlfile from autobackup;
alter database mount;
restore database;
recover database;(找不到redolog,参照下一步先sqlplus恢复redo)
alter database open resetlogs;
7、sqlplus处理online redolog丢失
create pfile from spfile;
vi dbs/inittest.ora添加一行.allow_resetlogs_corruption='TRUE'
shutdown immediate;
startup pfile=/u01/oracle/……/dbs/inittest.ora mount;
alter database open resetlogs;
8、基于时间点的恢复
run{
set until time "to_date('07/01/02 15:00:00','mm/dd/yy hh24:mi:ss')";
restore database;
recover database;
}
alter database open resetlogs;
9、基于SCN的恢复
list backup;(查看SCN)
startup mount;
restore database until SCN 10000;
recover database until SCN 10000;
alter database open resetlogs;
10、基于日志序列的恢复
select * from v$log;(查看日志序列号)
startup mount;
restore database until SEQUENCE 100 thread 1;
recover database until SEQUENCE 100 thread 1;
alter database open resetlogs;
三、开启/关闭归档
shutdown immediate;
startup mount;
alter database archivelog/noarchivelog;
alter database open;