How to Fix RMAN Backup Failure Due to ORA-19809 and ORA-19804 Errors
If you are using RMAN to backup your Oracle database, you may encounter the following errors:RMAN-03009: failure of backup command on ORA_DISK_1 channel at 05/26/2017 11:53:47
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 882983936 bytes disk space from 5368709120 bytes limit
These errors indicate that the disk space allocated for the recovery files (such as archived logs) has been exhausted and RMAN cannot perform the backup operation. In this post, I will show you how to resolve this issue by increasing the size of the recovery file destination.
Step 1: Check the value of db_recovery_file_dest_size
The parameter db_recovery_file_dest_size
specifies the maximum disk space that can be used for the recovery files. You can check its current value by running the following SQL command:
SQL> show parameter db_recovery
The output will look something like this:
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /archive/TESTDB
db_recovery_file_dest_size big integer 5G
In this example, the recovery file destination is set to /archive/TESTDB
and the size limit is 5 GB.
Step 2: Check the space usage in recovery_dest
To see how much space is actually used and available in the recovery file destination, you can run the following SQL command:
SQL> select SPACE_USED/1024/1024/1024 "SPACE_USED(GB)" ,SPACE_LIMIT/1024/1024/1024 "SPACE_LIMIT(GB)" from v$recovery_file_dest;
The output will look something like this:
SPACE_USED(GB) SPACE_LIMIT(GB)
---------- -----------
4.5 5
In this example, out of 5 GB, 4.5 GB is already used. This means that there is not enough space left for the RMAN backup to complete.
Step 3: Increase db_recovery_file_dest_size
To fix the problem, you need to increase the value of db_recovery_file_dest_size
to a higher value. You can do this by running the following SQL command:
SQL> alter system set db_recovery_file_dest_size=8G;
This will increase the size limit to 8 GB. You can verify the new value by running the show parameter
command again.
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /archive/TESTDB
db_recovery_file_dest_size big integer 8G
You can also check the space usage again by running the select
command:
SQL> select SPACE_USED/1024/1024/1024 "SPACE_USED(GB)" ,SPACE_LIMIT/1024/1024/1024 "SPACE_LIMIT(GB)" from v$recovery_file_dest;
The output will look something like this:
SPACE_USED(GB) SPACE_LIMIT(GB)
-------------- ---------------
5.31985807 8
Now, you have more space available for the recovery files and you can retry the RMAN backup operation.