Fixed: Oracle not started-ORA-16038, ORA-19809, ORA-00312 error

When you try to start your database and it fails with the error code ORA-16038, ORA-19809, ORA-00312. You can resolve this error with the help of this tutorial.

Error Message:

ORA-16038: log 3 sequence# 572 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 3 thread 1: '/oradata2/data1/dbase/redo03.log'

Root Cause:

SQL> startup

ORACLE instance started.

Total System Global Area 178792260 bytes
Fixed Size 2116288 bytes
Variable Size 218440552 bytes
Database Buffers 42943340 bytes
Redo Buffers 6469580 bytes
Database mounted.
ORA-16038: log 3 sequence# 572 cannot be archived
ORA-19809: limit exceeded for recovery files
ORA-00312: online log 3 thread 1: '/oradata2/data1/dbase/redo03.log'

Here you can see the database is in mount stage and fails with same error ORA-16038, ORA-19809, ORA-00312. If you try it again it will give you the same error.

SQL> alter database open;

alter database open
ERROR at line 1:
ORA-16014: log 3 sequence# 572 not archived, no available destinations
ORA-00312: online log 3 thread 1: '/oradata2/data1/dbase/redo03.log'

Here oracle attempted to archive the online log-3 but could not archive the online log in the available archived log destination. If archive log destination is full then you can increase some space or delete old archive logs files.



First you need to increase space of db_recovery_file_dest_size as archive destination is full.

SQL> archive log list

Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 582
Next log sequence to archive 582
Current log sequence 590So archived log destination is DB_RECOVERY_FILE_DEST.

SQL> show parameter db_recover

------------------------------------ ----------- ------------------------------
db_recovery_file_dest string /oradata1/flash_recovery_area
db_recovery_file_dest_size big integer 10G
SQL> alter system set db_recovery_file_dest_size=30G;
System altered.

SQL> alter database open;
Database altered.


If you have not enough space in your hard disk and took the latest backup of your database along with archive log files then you can issue following command.

$rman target /

C:\> sqlplus /nolog

SQL>conn sys/password@host as sysdba

SQL> alter database open;

If  oracle database needs recovery, you can issue below command to recover the database.

SQL> recover database using backup controlfile until cancel;

SQL> alter database open resetlogs;
Database altered.

I hope any of the above methods will resolve oracle error ORA-16038, ORA-19809, ORA-00312.

Find on Google+

Leave a Reply

Your email address will not be published. Required fields are marked *