Ошибка ora 00257 archiver error

6 Answers

In SQL*Plus, can you

SQL> show parameter log_archive
  • If LOG_ARCHIVE_START is FALSE,
    you’ll want to set it to TRUE.
  • If
    LOG_ARCHIVE_DEST points to an
    invalid directory, you’ll want to
    change it to point to a valid
    directory.

answered Apr 26, 2011 at 6:39

Justin Cave's user avatar

Justin CaveJustin Cave

228k24 gold badges368 silver badges384 bronze badges

3

  • I get no output when I run show parameter log_archive. I have a read-only permission to the db. Is that the reason why I get no output?

    Apr 26, 2011 at 9:11

  • You’ll need to be a DBA in order to fix the error. If you just have a read-only account, you’ll need to contact the DBA.

    Apr 26, 2011 at 9:17

  • Thanks Justin! I will contact the DBA for this.

    Apr 26, 2011 at 9:44

ORA-00257:archiver error is occured when your archivelog reached the FRA limit. So you have to clear the archivelogs or you may increase the FRA limit.

To clear the archivelogs, connect to the command prompt and follow steps below:

rman target /
RMAN> delete archivelog all;

It will ask for confirmation and you have to give ‘yes’.

answered Jun 19, 2018 at 11:54

Enthusiastic learner's user avatar

1

  • At first, It can solve the problem immediately! But … you are putting your DB into dangerous situation (have gap in archivelog). :(

    Sep 4, 2021 at 20:12

please note that you can only access SQL*PLUS if you login as
sqlplus / as sysdba

Plus, I think the problem here is space quota for archiving
reaching its max limit.

So its best to clear the logs after making backup on a flash or something

answered Dec 7, 2011 at 6:10

nikunj jain's user avatar

ORA-00257: archiver error. Connect internal only, until freed. problem can be solved as following:
copy archivelog folder to a new destination and empty this directory.

The real problem is that online-backup limit increased what was set as n GB and that become full when you empty this archivelog folder then it will start working fine

answered Apr 6, 2017 at 10:29

Ghayel's user avatar

GhayelGhayel

1,1132 gold badges10 silver badges19 bronze badges

I have encountered this error couple of times, it simply tells that archivelog space has exhausted and need to be freed.

run cmd as administrator

> set oracled_sid=write_oracle_sid_here
> rman target sys/put_sys_password_here
> crosscheck archivelog all;
> delete noprompt expired archivelog all;
>exit;

answered Aug 13, 2019 at 6:01

Sadeq Aramideh's user avatar

Sadeq AramidehSadeq Aramideh

431 gold badge2 silver badges7 bronze badges

Open rman or cmd, then type:
connect target sys/live; press enter
then:
delete archivelog all; press enter

Ask for confirmation press y then enter.
Your issue will be solved.

Dennis Kozevnikoff's user avatar

answered Aug 17, 2021 at 8:48

user16686736's user avatar

6 Answers

In SQL*Plus, can you

SQL> show parameter log_archive
  • If LOG_ARCHIVE_START is FALSE,
    you’ll want to set it to TRUE.
  • If
    LOG_ARCHIVE_DEST points to an
    invalid directory, you’ll want to
    change it to point to a valid
    directory.

answered Apr 26, 2011 at 6:39

Justin Cave's user avatar

Justin CaveJustin Cave

228k24 gold badges368 silver badges384 bronze badges

3

  • I get no output when I run show parameter log_archive. I have a read-only permission to the db. Is that the reason why I get no output?

    Apr 26, 2011 at 9:11

  • You’ll need to be a DBA in order to fix the error. If you just have a read-only account, you’ll need to contact the DBA.

    Apr 26, 2011 at 9:17

  • Thanks Justin! I will contact the DBA for this.

    Apr 26, 2011 at 9:44

ORA-00257:archiver error is occured when your archivelog reached the FRA limit. So you have to clear the archivelogs or you may increase the FRA limit.

To clear the archivelogs, connect to the command prompt and follow steps below:

rman target /
RMAN> delete archivelog all;

It will ask for confirmation and you have to give ‘yes’.

answered Jun 19, 2018 at 11:54

Enthusiastic learner's user avatar

1

  • At first, It can solve the problem immediately! But … you are putting your DB into dangerous situation (have gap in archivelog). :(

    Sep 4, 2021 at 20:12

please note that you can only access SQL*PLUS if you login as
sqlplus / as sysdba

Plus, I think the problem here is space quota for archiving
reaching its max limit.

So its best to clear the logs after making backup on a flash or something

answered Dec 7, 2011 at 6:10

nikunj jain's user avatar

ORA-00257: archiver error. Connect internal only, until freed. problem can be solved as following:
copy archivelog folder to a new destination and empty this directory.

The real problem is that online-backup limit increased what was set as n GB and that become full when you empty this archivelog folder then it will start working fine

answered Apr 6, 2017 at 10:29

Ghayel's user avatar

GhayelGhayel

1,1132 gold badges10 silver badges19 bronze badges

I have encountered this error couple of times, it simply tells that archivelog space has exhausted and need to be freed.

run cmd as administrator

> set oracled_sid=write_oracle_sid_here
> rman target sys/put_sys_password_here
> crosscheck archivelog all;
> delete noprompt expired archivelog all;
>exit;

answered Aug 13, 2019 at 6:01

Sadeq Aramideh's user avatar

Sadeq AramidehSadeq Aramideh

431 gold badge2 silver badges7 bronze badges

Open rman or cmd, then type:
connect target sys/live; press enter
then:
delete archivelog all; press enter

Ask for confirmation press y then enter.
Your issue will be solved.

Dennis Kozevnikoff's user avatar

answered Aug 17, 2021 at 8:48

user16686736's user avatar

A scheduler job which is refreshing materialized views threw an error ORA-00257 in the alert log like this:

ORA-12012: error on auto execute of job 78450
ORA-00257: archiver error. Connect internal only, until freed.
...

Rationale on ORA-00257

The first action we should take is to check all the archived log destinations LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST to make sure they have enough space. If they are in good conditions, the possible causes could be from the remote database that is connected by local database links for refreshing local materialized views. Either local or remote database could cause the error, you should release some space to make the database move.

Solutions to ORA-00257

1. Remove ALL Archived Logs in RMAN

If you’re in an urgent situation, you can delete all archived logs without asking anything.

$ rman target /
...
RMAN> delete noprompt archivelog all;

This RMAN command will delete all archived logs without prompting you the confirmation. That is to say, we keep none of online archived logs.

2. Remove Some Archived Logs in RMAN

The following command will keep archived logs only latest 3 days.

RMAN> delete archivelog until time 'sysdate - 3';

The following command will keep archived logs only 1 hour.

RMAN> delete archivelog until time 'sysdate - 1/24';

The following command will keep archived logs only 5 minutes.

RMAN> delete archivelog until time 'sysdate - 5/1440';

3. Remove Some Archived Logs at OS-level

Sometimes, you might be not able to access RMAN in the first place, to free up the space of archived log destinations manually, you can refer to following steps in order to solve ORA-00257.

Find Candidates

List and make sure all the target files are available to move or delete.

For example, we’d like to keep the files newer than 7 days. The following Unix command find will list 7 and 7+ days old files.

$ cd /path/to/archived_log_destination
$ find . -mtime +6 -exec ls -l {} ;

Please make sure the listed file are allowed to be moved or deleted. Furthermore, you should make sure the standby databases have received or applied the archived logs.

Remove Files

Remove all the target files.

$ find . -mtime +6 -exec rm {} ;

So far, the database is not aware of the resulting free space that you just did on OS-level. So we need to notify the database.

Connect RMAN

Connect to the backup database.

$ rman target / catalog sys/password@backupdb

Find Expired Archive Logs

Notify RMAN to check the current status of all archived log files.

RMAN> crosscheck archivelog all;

RMAN will mark the deleted backups as EXPIRED, but their records are not removed from the catalog automatically, this is because some DBA might move these backups back to the original destination at a later time. Their status will be back to AVAILABLE again.

Now, the database knows that the space is freed up, it should be no more ORA-00257. If the database is still unresponsive, you can decide to delete these records.

Delete Expired Archive Logs

Delete the records of non-existent archived log files from the catalog.

RMAN> delete expired archivelog all;

Same procedure can apply to the following error: How to Resolve ORA-19809 Limit Exceeded for Recovery Files

January 27, 2020

Sometimes you can get ” ora-00257: archiver error. connect as sysdba only until resolved  ” error, while connecting to Oracle database.

ORA-00257: archiver error. connect as sysdba only until resolved

Details of error are as follows.

ORA-00257: archiver error. Connect internal only, until freed

00257, 00000, "Archiver error. Connect AS SYSDBA only until resolved."
// *Cause: The archiver process received an error while trying to archive
// a redo log. If the problem is not resolved soon, the database
// will stop executing transactions. The most likely cause of this
// message is that the destination device is out of space to store the
// redo log file. Another possible cause is that a destination marked
// as MANDATORY has failed.
// *Action: Check the alert log and trace files for detailed error
// information.

ORA-00257 archiver error. connect as sysdba

Here is output of Alertlog

Errors in file /u01/app/oracle/diag/rdbms/MSD/MSD/trace/MSD_tt00_12641.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 53477376 bytes disk space from 107374182400 bytes limit
2020-01-27T13:45:36.261480+03:00
Errors in file /u01/app/oracle/diag/rdbms/MSD/MSD/trace/MSD_tt00_12641.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 107374182400 bytes is 100.00% used, and has 0 remaining bytes available.
2020-01-27T13:45:36.261565+03:00
************************************************************************
You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************
2020-01-27T13:45:36.262505+03:00
Errors in file /u01/app/oracle/diag/rdbms/MSD/MSD/trace/MSD_tt00_12641.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 53477376 bytes disk space from 107374182400 bytes limit

Archiver error connect as sysdba

If you got this ORA-00257: archiver error, it means Archivelog and Redolog file destination disk is out of space to store these files.

You have 2 option to solve this problem.

Firstly, connect RMAN and Delete Old archivelogs if you have already backed up them Or you don’t need their backups.

Use delete archivelog command to delete Archivelogs, you can delete them until time sysdate -1 ( Keep Last 1 day Archivelog, delete older than 1 day ) or sysdate-1/8 ( Keep Last 3 hours Archivelogs, delete older than 3 hours ) according to your need.

delete noprompt force archivelog until time 'sysdate -1';
[MSD]/home/oracle $ rman target /

Recovery Manager: Release 18.0.0.0.0 - Production on Mon Jan 27 13:58:09 2020
Version 18.3.0.0.0

Copyright (c) 1982, 2018, Oracle and/or its affiliates. All rights reserved.

connected to target database: MSD (DBID=1475860412)

RMAN> delete noprompt force archivelog until time 'sysdate -1';

If you cannot delete archivelogs, then you need to increase the size of either Recovery_dest_size or Log_archive_dest_size as follows.

Connected to:
Oracle Database 18c Enterprise Edition Release 18.0.0.0.0 - Production
Version 18.3.0.0.0

SQL> show parameter recovery

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest string +DATA
db_recovery_file_dest_size big integer 100G
recovery_parallelism integer 0
remote_recovery_file_dest string
SQL>
SQL>
SQL> alter system set db_recovery_file_dest_size=200G scope=both sid='*';

System altered.

Problem will be solved.

Do you want to learn Oracle Database for Beginners, then Click and read the following articles.

Oracle Database Tutorials for Beginners ( Junior Oracle DBA )

About Mehmet Salih Deveci

I am Founder of SysDBASoft IT and IT Tutorial and Certified Expert about Oracle & SQL Server database, Goldengate, Exadata Machine, Oracle Database Appliance administrator with 10+years experience.I have OCA, OCP, OCE RAC Expert Certificates I have worked 100+ Banking, Insurance, Finance, Telco and etc. clients as a Consultant, Insource or Outsource.I have done 200+ Operations in this clients such as Exadata Installation & PoC & Migration & Upgrade, Oracle & SQL Server Database Upgrade, Oracle RAC Installation, SQL Server AlwaysOn Installation, Database Migration, Disaster Recovery, Backup Restore, Performance Tuning, Periodic Healthchecks.I have done 2000+ Table replication with Goldengate or SQL Server Replication tool for DWH Databases in many clients.If you need Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS Consultancy and Training you can send my email adress [email protected].-                                                                                                                                                                                                                                                 -Oracle DBA, SQL Server DBA, APPS DBA,  Exadata, Goldengate, EBS ve linux Danışmanlık ve Eğitim için  [email protected] a mail atabilirsiniz.

This post has been updated from the original content here.

The ORA-00257 error is a very common Oracle database error. The error is basically trying to tell us that we have run out of logical or physical space on our ASM diskgroup, mount, local disk, or db_recovery_file_dest location where our archivelogs are being stored.

When this issue crops up it usually prevents all connections to the database except for admin level access to allow for the DBA to fix the problem. Usually this is easily resolved in most cases and the below steps outline exactly how to fix the problem.

The first step is to determine where the archivelogs are being stored. Once we know the location we will be able to confirm if this is a logical or physical space shortage.

To find out where our archivelogs are being stored let’s log into SQLPLUS and run a few commands.

Note: Depending on configuration, there could be multiple destinations for archivelogs, each one will need to be checked if there are more than one destination set.

From the first command we run here, we can see that the archiver is indeed enabled and the archivelog destination for this particular database is being derived from another parameter called db_recovery_file_dest.

SQL> archive log list
Database log mode          	Archive Mode
Automatic archival         	Enabled
Archive destination        	USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 	8190
Next log sequence to archive   8192
Current log sequence       	8192

When we look at the db_recovery_file dest parameter we see that the archivelogs are being written to the +RECO diskgroup and the size of that space is 20TB. This means it can hold up to 20TB of space before filling up.

SQL> show parameter db_recovery_file

NAME                             	TYPE    	VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest            	string  	+RECO
db_recovery_file_dest_size       	big integer 20T

In this particular database we can see that the value of the log_archive_dest parameter is empty because we are using the db_recovery_file_dest parameter to state where the logs are being stored.

SQL> show parameter log_archive_dest

NAME                             	TYPE    	VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                 	string

If we were using a regular filesystem location on a local disk or mount it might look something like the below.

SQL> archive log list
Database log mode          	Archive Mode
Automatic archival         	Enabled
Archive destination        	/u02/oracle/db01/archivelogs/
Oldest online log sequence 	8190
Next log sequence to archive   8192
Current log sequence       	8192
SQL> show parameter db_recovery_file

NAME                             	TYPE    	VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest            	string  	/u02/oracle/db01/archivelogs/
db_recovery_file_dest_size       	big integer 20T

You will see at least these two parameters on Oracle 10g, 11g, 12c, or 19c. The first parameter ‘db_recovery_file_dest’ is where our archivelogs will be written to and the second parameter is how much logical space we’re allocating for not only those files, though also other files like backups, redo logs, controlfile snapshots, and a few other files that could be created here by default if we don’t specify a specific location.

SQL> show parameter log_archive_dest
NAME                             	TYPE    	VALUE
------------------------------------ ----------- ------------------------------
log_archive_dest                	 string  	/u02/oracle/db01/archivelogs/

So now that we know the location(s) of our archivelogs we can now check to see if it’s a logical or physical space issue. For physical this is easy enough as the diskgroup, disk, or mount point where the archivelogs are being stored would be at 100% capacity.

Physical – If it’s a physical issue, we can take one of the below steps to fix the issue

  1. Add more space to the mount where the logs are going.
  2. Take a backup of the logs via RMAN and have it delete input. (Note: If your backups are going to the same place your archivelogs are going, we will need to take a backup on a different mount point/drive.)
  3. Move the archivelog location to another mount/drive/location temporarily while you do one of the above.
  4. Delete the archivelogs if we don’t need the ability to restore the database. This could be useful for a dev instance that is refreshed nightly or something similar.

Anyone of the above three will clear the error and allow users to log into the database again almost instantly.

Logical – If it’s a logical issue we simply need to take one of the below actions.

  1. increase the db_recovery_file_dest_size to a larger size to allow for more archivelogs to be written to the archivelog location. (Note: Be sure to check the underlying disk/mount point before increasing this parameter to ensure there is proper space on the disk/mount.)
  2. As with the physical issue, simply take an RMAN backup of the logs and have it delete input to clear space.
  3. Change the db_recovery_file_dest or log_archive_dest to another location that has space
  4. Delete the archivelogs if they are not needed for recovery

I would recommend using rman for either the backup or delete methods as this will keep your catalog of backups up to date and clean. Also just to point out, that we if we need to ever recover this database we should be taking regular scheduled RMAN backups with a retention policy that also include archivelogs to help keep the archivelog location free for writing of more logs.

Please comment below if this helped you fix your ORA-00257: archiver error. Connect internal only, until freed issue. If you require more help please contact us to speak with a certified Oracle DBA support expert.

Понравилась статья? Поделить с друзьями:
  • Ошибка jsonexception no value for type что это
  • Ошибка ora 00060
  • Ошибка jsonexception no value for type вконтакте
  • Ошибка ora 00028
  • Ошибка json что это