1.热备份
1)全备份
c:/>rman target "username/password@SID"
--RMAN performs automatic log switches at the end of any backup or copy operations
run{
allocate channel c1 type disk format 'D:/oracle/oradata/SID/archive/full_%d_%T_%U';
backup (database include current controlfile);
}
注意:rman在备份时,会首先备份CF(其中包含有备份集的信息),然后对数据库进行备份。而我们没有使用catalog进行备份恢复,我们用的是CF,所以问题出现了,CF比备份集旧!所以不能恢复数据库!所以如果采用上述备份方法的话,可以备份两次,恢复时使用备份2的控制文件,其他使用备份1的。
否则还原时出现以下错误:ORA-19505: 无法识别文件。
或者,no catalog模式下采用如下方式备份(再备份数据库结束后备份CF)!
run {
allocate channel Channel1 type disk format 'D:/ORACLE/ORADATA/SID/full_%d_%T_%U';
backup database;
backup current controlfile;
}
2)归档日志备份
sql 'alter system archive log current';
run{
allocate channel c1 type disk format 'D:/oracle/oradata/SID/archive/arclog_%d_%T_%U';
backup (archivelog all delete input);
}
2.过期的备份应该通过rman来删除.若通过操作系统删除了过期的备份,要在rman中做如下处理:
1)热备,不要backup (archivelog all delete input):
2)查看
list copy
list backup
3)同步并删除过期的备份集和归档日志(可能多次执行)
change archivelog all crosscheck;
delete obsolete (或者delete noprompt obsolete);
crosscheck backup;
delete expired backup;
注意:中文状态下,crosscheck返回的信息可能不正确,这是oracle的bug,通过设置客户端环境变量在英文状态下操作较好(set lang=American_America.zhs16gbk,只是改变显示语言而不是更改字符集)
差异增量是备份上级或同级备份以来变化的块,累计增量是备份上级备份以来变化的块
RMAN 的整个恢复过程可以分为还原(restore)与恢复(recover),他们在含义上是有很大差别的,一个是指物理意义的文件的还原与拷贝,一个是指数据库一致性的恢复,所以,正确的理解这两个概念,有助于正确的恢复数据库
3.其他
1)修改默认的备份路径,一次搞定,用configure来改变default 值
CONFIGURE CHANNEL DEVICE TYPE DISK FORMAT 'D:/oracle/oradata/SID/archive/%d_%T_%U' MAXPIECESIZE 30G;
2)修改默认的备份路径,当次有效,指定format参数
backup format 'D:/oracle/oradata/SID/archive/%d_%T_%U' ...
3)自动备份控制文件
CONFIGURE CONTROLFILE AUTOBACKUP ON
4)全备份几天后继续备份归档日志文件(注意,如果不分配通道oracle可能采用并行方式,将导致OSD-04010错误)
run{
allocate channel c1 type disk format 'D:/oracle/oradata/SID/archive/%d_%T_%U';
backup archivelog all ;
}
5)删除指定的备份集与备份片
RMAN> DELETE BACKUPPIECE 101;
6)删除过期或者废弃了的备份
RMAN> DELETE EXPIRED BACKUP;
RMAN> DELETE NOPROMPT OBSOLETE;
7)删除指定的备份归档
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 300;
8)最好定期执行数据库全备份,每天执行归档日志的备份
4.rman 将备份在另外一台机子B上恢复的步骤
1)将B的oracle启动到nomount
sqlplus> shutdown immediate
sqlplus> startup nomount
2)还原spfile,controlfile
RMAN> Restore spfile to 'D:/oracle/ora92/database/SPFILESID1.ORA' from 'D:/oracle/oradata/GPS/Archive/FULL_SID_20061128_10I3H2S7_1_1'
因为SPFILESID正在使用,所以fpfile还原成SPFILESID1,否则无法还原;
然后关闭数据库,将原来的SPFILESID.ORA作个备份,再将文件SPFILESID1.ORA改名为SPFILESID.ORA,重新
RMAN> Restore controlfile from 'D:/oracle/oradata/SID/Archive/FULL_SID_20061128_10I3H2S7_1_1'
3)生成密码文件
D:/oracle/ora92/bin>orapwd file=D:/oracle/ora92/database/PWDSID.ora password=mypassword entries=10
4)启动到mount
sqlplus> shutdown immediate
sqlplus> startup mount
5)还原并恢复数据库
RMAN> restore database
RMAN> recover database
RMAN> sql 'alter database open resetlogs'