rman 备份中ORA-19809、ORA-19804问题解决

本文介绍了在使用RMAN进行数据库备份时遇到的空间不足问题及其解决方法。通过调整db_recovery_file_dest_size参数值来增加flash_recovery_area的空间,成功解决了备份过程中出现的ORA-19809和ORA-19804错误。

在我的测试环境中使用rman备份数据库的时候,报如下错误(红色部分):

oracle@oracle[/oracle]> rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Sat Jan 9 09:42:36 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.

connected to target database: CNHTM (DBID=1230089073)

RMAN> backup database;

Starting backup at 09-JAN-10
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=159 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=+DATA/cnhtm/datafile/system01.dbf
input datafile fno=00003 name=+DATA/cnhtm/datafile/sysaux01.dbf
input datafile fno=00005 name=+DATA/cnhtm/datafile/example01.dbf
input datafile fno=00002 name=+DATA/cnhtm/datafile/undotbs101.dbf
input datafile fno=00004 name=+DATA/cnhtm/datafile/users01.dbf
channel ORA_DISK_1: starting piece 1 at 09-JAN-10
RMAN-03009: failure of backup command on ORA_DISK_1 channel at 01/09/2010 09:43:36
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 52428800 bytes disk space from 1073741824 limit
continuing other job steps, job failed will not be re-run
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current control file in backupset
including current SPFILE in backupset
channel ORA_DISK_1: starting piece 1 at 09-JAN-10
channel ORA_DISK_1: finished piece 1 at 09-JAN-10
piece handle=/oracle/flash_recovery_area/CNHTM/backupset/2010_01_09/o1_mf_ncsnf_TAG20100109T094250_5nhqtbys_.bkp tag=TAG20100109T094250 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:04
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================

RMAN-03009: failure of backup command on ORA_DISK_1 channel at 01/09/2010 09:43:36
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 52428800 bytes disk space from 1073741824 limit

RMAN> exit


Recovery Manager complete.

这是flash_recovery_area空间不足的提示

[@more@]

用如下方法检查flash_recovery_area使用情况

oracle@oracle[/oracle]> sqlplus / as sysdba

SQL*Plus: Release 10.2.0.1.0 - Production on Sat Jan 9 09:44:30 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.


Connected to:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

sys@CNHTM> select * from V$FLASH_RECOVERY_AREA_USAGE;

FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 0 0 0
ARCHIVELOG 0 0 5
BACKUPPIECE 63.01 .7 7
IMAGECOPY 0 0 0
FLASHBACKLOG 0 0 0

6 rows selected.

检查db_recovery_file_dest_size参数

sys@CNHTM> show parameter recovery

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /oracle/flash_recovery_area
db_recovery_file_dest_size big integer 1G
recovery_parallelism integer 0

将参数db_recovery_file_dest_size增大为20G

sys@CNHTM> alter system set db_recovery_file_dest_size=20G scope=both;

System altered.

sys@CNHTM> exit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options

再次备份,没有问题了

oracle@oracle[/oracle]> rman target /

Recovery Manager: Release 10.2.0.1.0 - Production on Sat Jan 9 09:45:43 2010

Copyright (c) 1982, 2005, Oracle. All rights reserved.

connected to target database: CNHTM (DBID=1230089073)

RMAN> backup database;

Starting backup at 09-JAN-10
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=154 devtype=DISK
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
input datafile fno=00001 name=+DATA/cnhtm/datafile/system01.dbf
input datafile fno=00003 name=+DATA/cnhtm/datafile/sysaux01.dbf
input datafile fno=00005 name=+DATA/cnhtm/datafile/example01.dbf
input datafile fno=00002 name=+DATA/cnhtm/datafile/undotbs101.dbf
input datafile fno=00004 name=+DATA/cnhtm/datafile/users01.dbf
channel ORA_DISK_1: starting piece 1 at 09-JAN-10
channel ORA_DISK_1: finished piece 1 at 09-JAN-10
piece handle=/oracle/flash_recovery_area/CNHTM/backupset/2010_01_09/o1_mf_nnndf_TAG20100109T094622_5nhqzhs0_.bkp tag=TAG20100109T094622 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:01:05
channel ORA_DISK_1: starting full datafile backupset
channel ORA_DISK_1: specifying datafile(s) in backupset
including current control file in backupset
including current SPFILE in backupset
channel ORA_DISK_1: starting piece 1 at 09-JAN-10
channel ORA_DISK_1: finished piece 1 at 09-JAN-10
piece handle=/oracle/flash_recovery_area/CNHTM/backupset/2010_01_09/o1_mf_ncsnf_TAG20100109T094622_5nhr1m8l_.bkp tag=TAG20100109T094622 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
Finished backup at 09-JAN-10

RMAN>

--end--

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22049049/viewspace-1030420/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22049049/viewspace-1030420/

在AIX系统下,Oracle数据库出现`ORA-19809`和`ORA-19804`错误通常与归档日志文件的管理有关,特别是在归档目标目录空间不足或无法成功删除过期的归档日志时。以下是这两个错误的详细解释和解决方案。 ### ORA-19809: limit exceeded for recovery files 该错误表示数据库的恢复文件(如归档日志、RMAN备份等)数量或大小超过了设定的限制。Oracle通过`db_recovery_file_dest_size`参数控制快速恢复区(Fast Recovery Area, FRA)的总大小。当FRA中存储的文件超过该限制时,数据库将无法继续生成新的归档日志或备份文件,并抛出`ORA-19809`错误[^1]。 ### ORA-19804: cannot reclaim space from recovery files 该错误通常紧随`ORA-19809`之后发生,表示Oracle无法自动回收FRA中的空间。这可能是因为过期的归档日志未能被自动删除,或者RMAN配置中未启用自动删除策略[^2]。 ## 解决方案 ### 1. 检查快速恢复区使用情况 可以使用以下SQL语句查看FRA的使用情况: ```sql SELECT NAME AS file_type, SPACE_LIMIT AS total_space, SPACE_USED AS used_space, SPACE_RECLAIMABLE AS reclaimable_space, NUMBER_OF_FILES AS num_files FROM v$recovery_area_usage; ``` ### 2. 扩展快速恢复区大小 如果发现FRA空间不足,可以通过增大`db_recovery_file_dest_size`参数来扩展空间: ```sql ALTER SYSTEM SET db_recovery_file_dest_size = 20G; ``` ### 3. 手动清理归档日志 可以手动删除不再需要的归档日志以释放空间。使用RMAN执行以下命令: ```bash RMAN> DELETE ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7'; ``` 此命令将删除7天前的所有归档日志。 ### 4. 配置RMAN归档删除策略 为防止类似问题再次发生,建议配置RMAN的归档删除策略。例如,设置归档日志保留策略为7天: ```bash RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 2 TIMES TO DISK; RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; ``` ### 5. 检查归档目标目录权限 确保Oracle数据库具有对归档目标目录的读写权限。在AIX系统中,可以通过以下命令检查和修改目录权限: ```bash ls -ld /u01/oradata/archivelog chown -R oracle:dba /u01/oradata/archivelog chmod -R 750 /u01/oradata/archivelog ``` ### 6. 检查归档进程状态 确认归档进程是否正常运行,可以使用以下命令: ```sql SELECT archiver, log_switch_wait FROM v$database; ``` 如果归档进程被阻塞,需要进一步排查归档目标路径是否可用、磁盘空间是否充足等问题。 ## 预防措施 - 定期监控FRA使用情况,确保空间充足。 - 启用并维护合理的RMAN归档删除策略。 - 设置自动清理脚本或计划任务,定期删除过期归档日志。 -数据库参数文件中配置合理的`db_recovery_file_dest`和`db_recovery_file_dest_size`值。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值