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 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
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
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
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 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.
answered Aug 17, 2021 at 8:48
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 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
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
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
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 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.
answered Aug 17, 2021 at 8:48
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
- Add more space to the mount where the logs are going.
- 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.)
- Move the archivelog location to another mount/drive/location temporarily while you do one of the above.
- 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.
- 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.)
- As with the physical issue, simply take an RMAN backup of the logs and have it delete input to clear space.
- Change the db_recovery_file_dest or log_archive_dest to another location that has space
- 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.