I got ” ORA-00308: cannot open archived log with ‘string’ ” error in Oracle database.
ORA-00308: cannot open archived log with ‘string’
Details of error are as follows.
ORA-00308: cannot open archived log 'string' Cause: The system cannot access a required archived redo log file. Action: Check that the off line log exists, the storage device is online, and the archived file is in the correct location. Then attempt to continue recovery or restart the recovery session
During point in time recovery, Oracle is not pausing to enter an archive log file to apply for recovery. Recovery continues and errors with ORA-00308. SQL> recover database using backup controlfile until cancel ; ORA-00279: change 9137878755498 generated at 02/22/2007 14:55:06 needed for thread 1 ORA-00289: suggestion : /<path>/arch_1_5379.dbf ORA-00280: change 9137878755498 for thread 1 is in sequence #5379 ORA-00308: cannot open archived log '/<path>/arch_1_5379.dbf' ORA-27037: unable to obtain file status SVR4 Error: 2: No such file or directory Additional information: 3 ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below ORA-01194: file 1 needs more recovery to be consistent ORA-01110: data file 1: '/<path>/system01.dbf' NOTE: You will see above that recovery suggests ‘/<path>/arch_1_5379.dbf, which is this case is the current online redo log. However, the recover process does not pause to enter and apply the archive. The recovery process simply continues and errors with ORA-00308.
cannot open archived log ‘string‘
This ORA-00308 error is related with the system cannot access a required archived redo log file.
Check that the off line log exists, the storage device is online, and the archived file is in the correct location. Then attempt to continue recovery or restart the recovery session
The recovery is done using a backup controlfile-clause. Therefor the recovery will skip the information of the online redologs as it is old information.
Check also if AUTORECOVERY is ON as than the recovery will continue automatically
SQL> show all; .... autorecovery ON
The following will show what the current online redo log is:
SQL> select SEQUENCE#, to_char(FIRST_CHANGE#,'999999999999999') as CHK_CHANGE, group#, archived, status from v$log; SEQUENCE# CHK_CHANGE GROUP# ARC STATUS ---------- ---------------- ---------- --- ---------------- 5379 9137878755498 1 NO CURRENT 5377 9137001021617 2 YES INACTIVE 5378 9137001135308 3 YES INACTIVE 3 rows selected. SQL> column member format a45 SQL> select group#, member from v$logfile; GROUP# MEMBER ---------- --------------------------------------------- 1 /<path>/redo01_A.log 1 /<path>/redo01_B.log 2 /<path>/redo02_A.log 2 /<path>/redo02_B.log 3 /<path>/redo03_A.log 3 /<path>/redo03_B.log
Restart the recovery again and than enter the filename of the related online redo logfile
SQL> set autorecovery off SQL> recover database using backup controlfile until cancel ORA-00279: change 9137878755498 generated at 02/22/2007 14:55:06 needed for thread 1 ORA-00289: suggestion : /<path>/arch_1_5379.dbf ORA-00280: change 9137878755498 for thread 1 is in sequence #5379 --> enter : /<path>/redo01_A.log
This will most likely reply with : “Media Recover Completed”
Continue with opening the database :
SQL> alter database open resetlogs;
Do you want to learn Oracle Database for Beginners, then read the following articles.
Oracle Tutorial | Oracle Database Tutorials for Beginners ( Junior Oracle DBA )