Site icon IT Tutorial

ORA-00308: cannot open archived log with ‘string’

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 )

 

Exit mobile version