ora-19809: 超出了恢复文件数的限制
一、故障现象:
rman> backup database;
启动 backup 于 05-10月-14
使用目标控制文件替代恢复目录
分配的通道: ora_disk_1
通道 ora_disk_1: sid=158 devtype=disk
通道 ora_disk_1: 启动全部数据文件备份集
通道 ora_disk_1: 正在指定备份集中的数据文件
输入数据文件 fno=00001 name=d:\oracle\product\10.2.0\oradata\orcl\system01.dbf
输入数据文件 fno=00005 name=d:\oracle\product\10.2.0\oradata\orcl\hw_wh01.dbf
输入数据文件 fno=00003 name=d:\oracle\product\10.2.0\oradata\orcl\sysaux01.dbf
输入数据文件 fno=00002 name=d:\oracle\product\10.2.0\oradata\orcl\undotbs01.dbf
输入数据文件 fno=00006 name=d:\oracle\product\10.2.0\oradata\orcl\gz_data01.dbf
输入数据文件 fno=00007 name=d:\oracle\product\10.2.0\oradata\orcl\sz_data01.dbf
输入数据文件 fno=00004 name=d:\oracle\product\10.2.0\oradata\orcl\users01.dbf
通道 ora_disk_1: 正在启动段 1 于 05-10月-14
man-03009: backup 命令 (ora_disk_1 通道上, 在 12/08/2014 16:38:37 上) 失败
ora-19809: 超出了恢复文件数的限制
ora-19804: 无法回收 52428800 字节磁盘空间 (从 2147483648 限制中)
继续执行其它作业步骤, 将不重新运行失败的作业
通道 ora_disk_1: 启动全部数据文件备份集
通道 ora_disk_1: 正在指定备份集中的数据文件
备份集中包括当前控制文件
在备份集中包含当前的 spfile
通道 ora_disk_1: 正在启动段 1 于 05-10月-14
通道 ora_disk_1: 已完成段 1 于 05-10月-14
段句柄=d:\oracle\product\10.2.0\flash_recovery_area\orcl\backupset\2014_12_08\o1_mf_ncsnf_tag20141208t163642_7g0xwhoh_.bkp 标记=tag20141208t163642 注释=none
通道 ora_disk_1: 备份集已完成, 经过时间:00:00:02
rman-00571: ===========================================================
rman-00569: =============== error message stack follows ===============
rman-00571: ===========================================================
二、故障分析
在使用rman进行数据库全备份时出现ora-19809: 超出了恢复文件数的限制错误,查报错说明如下:
ora-19809: limit exceeded for recovery files
cause: the limit for recovery files specified by the db_recovery_file_dest_
size was exceeded.
action: the error is accompanied by 19804. see message 19804 for further details.
在这里我们可以看到,文档明确指出了ora-19809错误是伴随着ora-19804出现,接着我们看下ora-19804的出现原因及解决方案:
ora-19804: cannot reclaim string bytes disk space from string limit
cause: oracle cannot reclaim disk space of specified bytes from the db_recovery_file_dest_size limit.
action: there are five possible solutions: 1) take frequent backup of recovery area
using rman. 2) consider changing rman retention policy. 3) consider changing
rman archivelog deletion policy. 4) add disk space and increase db_
recovery_file_dest_size. 5) delete files from recovery area using rman.
以上已经明确给出导致这个错误的原因及五点解决方案
最简单也是最常用的办法就是扩大db_recovery_file_dest_size的设置
首先查看数据库的当前设置:
sys @ orcl(159)> archive log list
数据库日志模式 存档模式
自动存档 启用
存档终点 use_db_recovery_file_dest
最早的联机日志序列 163
下一个存档日志序列 165
当前日志序列 165
sys @ orcl(159)>
可以看到使用了数据库默认的闪回区用来存储归档,接下来我们看下闪回区的位置,大小及使用情况
sys @ orcl(159)> show parameter db_recovery_file_dest
name type value
———————————— ———– ———————————————–
db_recovery_file_dest string d:\oracle\product\10.2.0/flash_recovery_area
db_recovery_file_dest_size big integer 2g
sys @ orcl(159)> select name,space_limit/1024/1024 “total(mb)”,space_used/1024/1024 “used(mb)”
from v$recovery_file_dest;
name total(mb) used(mb)
———————————————— ———- ———-
d:\oracle\product\10.2.0/flash_recovery_area 3072 2078.77051
对于db_recovery_file_dest_size,默认设置为2g大小,当该空间不够容纳备份集则会导致上面见到的错误。
三、解决方案:
对于上面的错误我们扩大了db_recovery_file_dest_size仍出错(由2g扩大至3g),可以看出即使扩容也是不够做一次全备份的(后面能够看到这个备份集得实际大小为2.05g)
1、扩大db_recovery_file_dest_size参数设置
alter system set db_recovery_file_dest_size=5g;
2、查看当前设置情况
show parameter db_recovery_file_dest
3、重新执行rman备份
rman> backup database;
……
rman> list backupset;
bs 关键字 类型 lv 大小 设备类型 经过时间 完成时间
——- —- — ———- ———– ———— ———-
14 full 2.05g disk 00:02:19 09-12月-14
bp 关键字: 14 状态: available 已压缩: no 标记: tag20141209t141548
段名:d:\oracle\product\10.2.0\flash_recovery_area\orcl\backupset\2014_12_09\o1_mf_nnndf_tag20141209t141548_7g2zc4l2_.bkp
备份集 14 中的数据文件列表
文件 lv 类型 ckp scn ckp 时间 名称
—- — —- ———- ———- —-
1 full 5170484 09-12月-14 d:\oracle\product\10.2.0\oradata\orcl\system01.dbf
2 full 5170484 09-12月-14 d:\oracle\product\10.2.0\oradata\orcl\undotbs01.dbf
3 full 5170484 09-12月-14 d:\oracle\product\10.2.0\oradata\orcl\sysaux01.dbf
4 full 5170484 09-12月-14 d:\oracle\product\10.2.0\oradata\orcl\users01.dbf
5 full 5170484 09-12月-14 d:\oracle\product\10.2.0\oradata\orcl\hw_wh01.dbf
6 full 5170484 09-12月-14 d:\oracle\product\10.2.0\oradata\orcl\gz_data01.dbf
7 full 5170484 09-12月-14 d:\oracle\product\10.2.0\oradata\orcl\sz_data01.dbf
bs 关键字 类型 lv 大小 设备类型 经过时间 完成时间
——- —- — ———- ———– ———— ———-
15 full 6.83m disk 00:00:02 09-12月-14
bp 关键字: 15 状态: available 已压缩: no 标记: tag20141209t141548
段名:d:\oracle\product\10.2.0\flash_recovery_area\orcl\backupset\2014_12_09\o1_mf_ncsnf_tag20141209t141548_7g2zhqfo_.bkp
包括的控制文件: ckp scn: 5170574 ckp 时间: 09-12月-14
包含的 spfile: 修改时间: 09-12月-14
至此问题已成功解决。