How to solve ORA-00257 archiver error
In order to solve the above error the solutions are (considering database 10g and above.)
1.) Increase the free space where archiver archives the archivelog. The location where archiver archives the log is determined by parameter file pfile or spfile.
This can be determined by loging into sqlplus and issuing
SQL> show parameter log_archive_dest
If archive destination is defined by USE_DB_RECOVERY_FILE_DEST, find the archive destination by :
SQL> show parameter db_recovery_file_dest;
Find the space used in flash recovery area by :
SQL> SELECT * FROM V$RECOVERY_FILE_DEST;
It is possibile in case of free space on diskgroup or filesystem to add logical space for archive destination issueing
SQL>alter system set DB_RECOVERY_FILE_DEST_SIZE = <size_to_permitt_new_archive_generation>;
2.) In case it is not possible to increase free space at the same location but if free space is available at other location then the parameter log_archive_dest (or log_archive_dest_1 in some cases) can be changed so that the new archives are produced at new location specified which has free space.
this can be done by modify init.ora file or using alter system if spfile is present
SQL> alter system set log_archive_dest_1='<path_to_new_destination>’;
3.) The option which is often used is to take a backup of the archives from the existing place and delete those archives from that place so that
new archives can generated at that place the backup can be OS level backup and OS level deletion but the recommended method which is compulsory to be used with ASM
in place is taking any RMAN backup and delete using RMAN. as shown
rman target sys/sys
RMAN> backup archive log all device type disk format ‘/oracle/arch_%U’;
RMAN> delete archive until time ‘trunc(sysdate)’;
This will delete all the archive logs until today and space will freed and the archiver will start archiving redo logs.
It’s a good idea to crosscheck archivelog , espacially if we are moving archive destination to a non previously defined path
RMAN> crosscheck archivelog all;