ORA-19809: exceeded limit the number of files to restore fault handling example

2011-02-28  来源:本站原创  分类:Database  人气:95 

ORA-19809: exceeded limit the number of files to restore troubleshooting examples collection Author: thirty http://blog.csdn.net/inthirties/archive/2009/09/05/4521793.aspx
Time: September 5, 2009 0:44:18
This article comes from "inthirties (thirty)" blog, reproduced sure to include the author and source http://blog.csdn.net/inthirties/archive/2009/09/05/4521793.aspx reserved
Not thrilling, but also fresh. ORA-19809: exceeded limit the number of files to restore troubleshooting instance receives the client's request, his database is broken, will not start,
Immediately connected to a remote database, start the database
SQL> startup;
Database tips have started.
SQL> select status from v $ instance;
mount state
SQL> shutdown immediate;
SQL> startup
Total System Global Area 1.0435E +10 bytes
Fixed Size 2021512 bytes
Variable Size 2466252664 bytes
Database Buffers 7952400384 bytes
Redo Buffers 14753792 bytes
Database load is completed.
ORA-16038: log 1 sequence number 865 can not file
ORA-19809: exceeded limit the number of files to restore
ORA-00312: online log 1 thread 1:
'E: ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG'
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-16014: log 1 sequence number 865 is not archived, no available destination
ORA-00312: online log 1 thread 1:
'E: ORACLEPRODUCT10.2.0ORADATAORCLREDO01.LOG'
Through this error message, you can see the archive can not be filed, and immediately see the archive path
SQL> archive log list;
Database archive log mode Archive Mode Automatic to enable archiving destination USE_DB_RECOVERY_FILE_DEST
The earliest online log sequence 23
Next archived log sequence 25
Current log sequence 25
Using DB_RECOVERY_FILE_DEST the path of the.
Estimate is encountered before the error.
Oracle official information about 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-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.
Here is the official information and solutions, and encountered this error before, also remember how to get the course you remember, experience is the best way of learning. This error recovery is certainly remember how did yo.
Basically, the reason is, db_recovery_file_desc have size restrictions, the default is 2G, if the user does not set off, it should file is archived here over the size, which led to the archive failed,
First look of it
SQL> archive log list;
Database archive log mode Archive Mode Automatic to enable archiving destination USE_DB_RECOVERY_FILE_DEST
The earliest online log sequence 23
Next archived log sequence 25
Current log sequence 25
SQL> select * from v $ recovery_file_dest;
NAME
-------------------------------------------------- --------------
SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES
----------- ---------- ----------------- ------------ ---
F: developeroracleproduct10.2.0 lash_recovery_area
2147483648 2547483848073
This has all the db_recovery_file_dest have accounted for over capacity.
Solution,
Remove the extra archive.
Then set a large db_recovery_file_dest_size
Assigned to the log_archive_destx elsewhere, do not put db_recovery_file_dest here to begin our journey to recovery, data recovery is like traveling in general, let the oracle of knowledge in tourism as an archive open to remove the extra RMAN
rman target /
RMAN> crosscheck archivelog all;
Run this command to invalid archivelog standard out, so we know which is expired in the
RMAN> delete expired archivelog all;
Can also use a specified date to remove
RMAN> delete noprompt archivelog until time "sysdate -3";
I use the above method delete expired archivelog all; this is basically a low-key low-key get, the database should be started,
Try to know
SQL> alter database open;
Familiar with the start of the information out.
But this end, a little knowledge is not the attitude of learning, because you are a temporary solution this way,
Customers will be because of this problem at any time, a week, a month later to find you, because here archivelog, may be too limited because they speak here archivelog is still growing, since it is so that there will be such a problem.
To solve him,
We should address the nature of this issue a knife.
action
Specified retention policy, such increase will not make archivelog
RMAN> configure retention policy to recovery window of 7 days;
RMAN> configure retention policy to redundancy 3;
Ha ha ha the customer does not use RMAN to back up, the next opportunity to introduce to the customer, but also take a multi-business, customers have not yet because of data corruption and crashes before, so now he did not know this value, if that day there This day, the customers think I gave him the RMAN, estimates he will come to think of me. Hee hee specify larger db_recovery_file_dest_size
SQL> alter system db_recovery_file_dest_size = 4G scope = both;
This method is also, a temporary solution, like, now is now the reservoir spillway, you expand the reservoir size is one way, but simply relying on this method, one day, or the overflow of. What we need is to put a drain on a regular basis to increase capacity, while the best place unlimited reservoir so there is a way to not forget, that is assigned to this archivelog_dest places no restrictions
SQL> alter system log_archive_dest = 'F: oracleproduct10.2.0archivelog_area';
OK,

相关文章