继续上个RMAN>干掉热备份#OCP试验1#时候全局备份的错误
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 01/12/2013 10:01:34 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 52428800 字节磁盘空间 (从 4039114752 限制中)
继续执行其他作业步骤, 将不重新运行失败的作业
通道 ORA_DISK_1: 正在启动全部数据文件备份集
通道 ORA_DISK_1: 正在指定备份集内的数据文件
备份集内包括当前控制文件
备份集内包括当前的 SPFILE
通道 ORA_DISK_1: 正在启动段 1 于 12-1月 -13
通道 ORA_DISK_1: 已完成段 1 于 12-1月 -13
段句柄=C:\APP\DELL\FLASH_RECOVERY_AREA\NCBETA\BACKUPSET\2013_01_12\O1_MF_NCSNF_TAG20130112T095737_8H
1JZZSD_.BKP 标记=TAG20130112T095737 注释=NONE
通道 ORA_DISK_1: 备份集已完成, 经过时间:00:00:01
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup 命令 (ORA_DISK_1 通道上, 在 01/12/2013 10:01:34 上) 失败
ORA-19809: 超出了恢复文件数的限制
ORA-19804: 无法回收 52428800 字节磁盘空间 (从 4039114752 限制中)
1,查看和删除备份(因为之前的没有成功)
RMAN> list backup;
RMAN> delete backup;
2,配置rman的备份设置(控制文件和存放路径)
RMAN> show all;
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP on;
备份的时候自动带上控制文件
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO 'd:\xs\rmanback\controlback\%F';
上面的控制文件备份存放路径,%F是自动名称
RMAN> configure channel device type disk format 'd:\xs\rmanback\%d_%u_%t';
除去控制文件(spfile文件)之外的数据和归档存放路径设置,上面show all没有这个参数,需要自己手工录入
3,向scott.t1插入一条新的数据‘before rman’
SYS@ncbeta>insert into scott.t1 values(6,'be rman');
commit之后创建检查点
SYS@ncbeta>alter system checkpoint;--数据写入数据文件
alter system checkpoint的作用
1.checkpoint 由ckpt进程触发oracle进行checkpoint动作,将data buffer中的脏块(已经写在redo里记录但是没有写到datafile里的)的内容写入到data file里并释放站用的空间,由dbw后台进程完成,并修改controlfile和datafile的scn.
一般手工执行是由于要删除某个日志但是该日志里还有没有同步到data file里的内容,就需要手工check point来同步数据,然后就可以drop logfile group n.
4,rman下执行完全备份
RMAN> backup database plus archivelog; --加上归档日志
如果报表空间损坏,执行set maxcorrupt fro datafile xx to 10 --xx是report schema时候前面数据文件的序号
数据文件和归档日志产生了三个文件(合计大小7.1G,比起exp产生的2G大多了),9M左右的控制和参数文件
5,再次插入一下数据
SYS@ncbeta>insert into scott.t1 values(7,'af rman');
insert 之后,没有写检查点
6,copy好联机日志之后(尽量copy,后来插入的af rman在里面),dbca删除数据库ncbeta
spfile 也会删除
7,创建实例ncbeta
C:\Documents and Settings\dell>oradim -new -sid ncbeta
8,rman下连接
nomount状态下启动(检测参数文件spfile)
恢复spfile(备份数据和controlfile在一个文件下)
RMAN> restore spfile from 'D:\xs\rmanback\controlback\C-3184901590-20130112-00';
9,查看恢复好的spfile文件,创建下一步恢复需要的目录(和手工建库差不多)
我没有复制另外实例的目录,直接新建空的,不知道是否有问题
10,上面的startup nomount并没有成功,只是“欺骗”oracle,因此这里执行shutdown immediate 然后startup nomount(真正的成功)
恢复控制文件
RMAN> restore controlfile from 'D:\xs\rmanback\controlback\C-3184901590-20130112-00';
11,启动mount状态恢复数据文件(mount下检查controlfile,上面已经恢复)
RMAN> restore database; --还原数据库(相当于imp),通过上面的控制文件和参数文件,oracle已经知道了rman下的备份,这里还原不需要指定路径
12,将之前copy的联机日志copy到数据文件夹
执行recover(恢复)操作,报错了
未处理数据文件 11, 因为文件是只读的
RMAN-03002: recover 命令 (在 01/12/2013 13:59:45 上) 失败
RMAN-06054: 介质恢复正在请求未知的线程 1 序列 177 的归档日志以及起始 SCN 3345287
1 上面说了, 恢复到当前在线日志,则不会报此错误。
2 可以查看归档日志的结束日期,粗略估计出要恢复的时间点。
3 有无问题,自己才知道,你可以先 READ ONLY 打开,若发现恢复不足,再MOUNT,继续往前恢复。
刚才看了,原来测试的时候,我把日志文件数据文件和控制文件一起删除了,
当前那个日志的redo是丢失了,所以恢复的时候用recover database才会提示找不到序列。
执行重做日志文件
RMAN> alter database open resetlogs;
红色箭头是重做日志之后产生的文件。
查询表t1,因为上面的recover失败,后面insert的数据没有找到,下次课问题老师
15:10 更新:
网上查询到:1、RMAN> RESTORE DATABASE CHECK READONLY;
对于存在只读表空间的情况,如果我们是在有效备份之前把表空间设置为只读的情况,RMAN会跳过只读表空间的恢复。
我查询到我果然有一个表空间是只读的
alter tablespace TBS read write;
修改之后就onlie了,不是直接alter tablespace TBS onlie(这是联机);
重新操作
并且在restore database之前copy redolog
这次成功了
完全恢复
2013-01-23 10:33:46 更新:
RMAN备份归档日志的注意要点
backup database plus archivelog delete all input; --备份数据库
backup archivelog all delete all input;--all delete all input是对数据库归档日志进行备份
delete input和delete all input的区别
(1)如果归档日志目录只是一个时,即归档时只有一份归档日志时,上面的两种写法是没有区别的;
(2)如果归档日志目录有多个时,即归档时保存有多份归档日志时,那么:
delete input当备份了归档日志后,会删除第一个归档目录(如:log_archive_dest_1)下的所有归档日志;
delete all input则在备份了归档日志后,所有所有log_archive_dest_n中的备份的archivelog都会被删除。
14:02:34 更新删除操作:
》rman里面删除指定日期的备份
delete backup completed after "to_date('2013-01-22','yyyy-mm-dd')";
delete backup completed after 'sysdate-1';
这里可以用before,after,between,删除之后备份的物理文件也一并删除。
也可以
首先物理删除 然后再
RMAN> crosscheck archivelog all;
RMAN> delete expried archivelog all;
》rman备份时候增加tag,但是数据文件和controlfile并没有tag
RMAN> backup database plus archivelog tag=xxx;
单独列出tag xx的备份
RMAN> list backup tag=xx;
》plus archivelog的rman备份第一步就是把当前联机日志归档
备份时候的很小归档文件