Oracle Error Description:
When you try to startup your database and it fails with the error code ORA-16038, ORA-19809, ORA-00312.
Just follow the below mentioned procedure to get the solution of above problem.
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'
Now your 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'
Root cause of the problem:
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 to free some space in the archived log destination.
Solution of Problem:
Solution 1: First increase enough space on the hard drive
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 NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ db_recovery_file_dest string /oradata1/flash_recovery_area db_recovery_file_dest_size big integer 10G
3) Increase the size of db_recovery_file_dest_size as archive destination is full.
SQL> alter system set db_recovery_file_dest_size=30G; System altered.4)Open the database now. SQL> alter database open; Database altered.
Solution 2: If you haven’t enough space on your hard drive
If you haven’t enough space in your hard disk and you have recent backup of your database and archive log is not needed then you can issue following command.
$rman target / RMAN>DELETE ARCHIVELOG UNTIL TIME 'SYSDATE-2';
If you don’t need archive logs then you can issue above command.
C:\> sqlplus /nolog SQL>conn sys/password@host as sysdba SQL> alter database open;
If oracle database needs recovery then you can issue below command to recover the database.
SQL> recover database using backup controlfile until cancel; C:\oracle\oradata\NORTH\REDO03.LOG SQL> alter database open resetlogs; Database altered.
I hope it will resolve oracle error ORA-16038, ORA-19809, ORA-00312.
Comment below If you find this information useful.