SUMSEN

Oracle&Sql爱好者,用友NC管理员

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

继续上个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备份第一步就是把当前联机日志归档

备份时候的很小归档文件

posted on 2013-01-12 13:36  sumsen  阅读(866)  评论(0编辑  收藏  举报