解决归档出错,ORA-00257: archiver error. Connect internal only, until freed.

[oracle@jingmin ~]$ sqlplus test1/test1

SQL*Plus: Release 11.2.0.3.0 Production on Fri Dec 21 10:08:57 2012Copyright (c) 1982, 2011, Oracle. All rights reserved.ERROR:ORA-00257: archiver error. Connect internal only, until freed.

 

原因:归档进程在归档重做日志的时候,发生了错误。如果问题不马上解决,数据库将不可用,无法进行任何事物,出现这个错误信息的最大可能是:存储重做日志的空间不足

解决办法:检查归档跟踪文件查看详细原因,检查archive_log_dest参数设置

 

查看了一下归档模式没有问题:

SQL> archive log list;



查看重做日志空间使用请况:因为每小时都备份并删除Archive Log, 没有问题:

SQL> SELECT * FROM V$RECOVERY_FILE_DEST;

NAME

--------------------------------------------------------------------------------

SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES

----------- ---------- ----------------- 

---------------

+DATA1 

6.4425E+10 3.3210E+9 0 3

SQL> select * from v$flash_recovery_area_usage;

FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE

-------------------- ------------------ -------------------------

NUMBER_OF_FILES-

--------------

CONTROL FILE 0 0 0

REDO LOG 4.04 0 3ARCHIVED LOG 0 0


因为用的是ASM统一存储管理,所以下面语句会报错,因为使用的参数不是 log_archive_dest :

SQL> alter system set log_archive_dest='+FDA1';

ERROR at line 1:ORA-02097: parameter cannot be modified because specified value is invalid

ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n orDB_RECOVERY_FILE_DEST
下面是正确的解决办法:

SQL> alter system set db_recovery_file_dest='+FDA1';
System altered.
SQL> alter system switch logfile;
System altered.
SQL> conn test1/test1Connected.

————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
下面是一篇文章的翻译:原载地址: http://www.dba-oracle.com/sf_ora_00257_archiver_error_connect_internal_only_until_freed.htm
数据库的后台进程ARCH是负责将在线重做日志归档到目标地址文件系统,详细参考一篇文章: ADRCI cannot create archive log file ORA-00257是一个Oracle常见错误,一旦数据库的闪回区域被日志占满了,或者db_recovery_file_dest_size太小,你会一直看到这个错误 第一、使用以下语句确认归档模式是否开启

SQL> archive log list;

第二、你需要去找到你存储归档日志的目标地址,如果你是用确切的目标地址的话(文件系统,不是ASM管理),即使用了db_recovery_file_dest参数

SQL> show parameter db_recovery_file_dest; (SQL> show parameter recovery)

第三、需要解决ORA-00257,你需要找到存储数据库重做日志的空间大小

SQL> SELECT * FROM V$RECOVERY_FILE_DEST; (SQL> select * from v$flash_recovery_area_usage;)

第四、通过上面的语句,可以看到使用了多少空间,最大空间限制等数值,如果可能是因为这个原因,我们应该把那些archive logs移到其他地方去 第五、,你要做的是把当前系统在线日志都归档到离线:

SQL> alter system archive log all;

请了解,执行第五步的时候,很可能会遇到这个错误: ORA-16020 in the LOG_ARCHIVE_MIN_SUCCEED_DEST,这时你应该选用正确的归档地址(如果你是用flash Recovery区域来管理的话,请记住一定要多方考虑,因为你正在试验的是Log_ARCHIVE_DEST):

SQL>alter system set LOG_ARCHIVE_DEST_.. = 'location=/archivelogpath reopen';

解决ORA-00257的最后一步是切换日志文件,从而确认是否解决

SQL> alter system switch logfile;

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ORA-00257Oracle数据库中的一个错误代码,表示归档错误。错误信息中的“connect internal only, until freed”表示只有内部连接才能解决这个问题,直到空间释放为止。这个错误通常是由于归档日志文件已满或磁盘空间不足导致的。要解决这个问题,可以通过删除旧的归档日志文件或增加磁盘空间来释放空间。 ### 回答2: ORA-00257Oracle数据库中常见的错误之一,它表示归档器发生故障,无法继续归档。这个错误经常出现在数据库空间不足或者磁盘空间不足的情况下。另外,当出现一个归档进程正在使用或者另一个归档进程正在进行数据转储时,也可能出现ORA-00257错误。 这个错误可以通过在SQLPLUS命令行界面中连接到内部(internal)以解决。连接到内部可以使用以下命令: sqlplus / as sysdba 连接到内部后,可以尝试使用以下命令释放空间并解决ORA-00257错误: 1.查看当前的归档日志: archive log list; 2.查看归档日志的状态: select * from v$archive_dest_status; 3.检查数据库的归档日志目录: select name, value from v$parameter where name like '%log_archive_dest%'; 4.手动归档当前的重做日志: alter system archive log current; 5.删除重复或无用的归档日志: RMAN> crosscheck archivelog all; RMAN> delete noprompt expired archivelog all; 当然,磁盘空间不足也是ORA-00257错误的常见原因。在这种情况下,需要增加磁盘空间或定期清理日志来避免出现这个错误。 总之,ORA-00257错误是Oracle数据库中常见的归档器错误之一。尽管出现这个错误可能有多种原因,但可以通过连接到内部,查找并释放空间以及清理无用的归档日志来解决这个问题。 ### 回答3: ORA-00257Oracle数据库中的一个错误代码,表示出现了归档器错误,只能通过内部连接访问,直到释放。 当Oracle数据库中的归档日志没有及时清空时,就可能会出现ORA-00257错误。归档日志是Oracle数据库保留的一些历史记录,用于恢复数据和保证数据一致性。每当Oracle数据库执行完一定量的事务操作后,就会将这些操作记录下来,并写入到归档日志中。但是,如果归档日志没有及时清空,就会导致存储空间不足,从而导致ORA-00257错误的发生。 解决ORA-00257错误的方法是通过内部连接访问数据库,并释放所有占用该日志的进程。首先,需要先停止所有使用归档日志的进程,然后释放归档日志,最后再启动这些进程,即可解决错误。 具体操作步骤如下: 1. 使用管理员账号登录到数据库中。 2. 执行以下SQL语句,停止所有使用归档日志的进程。 SQL> ALTER system SWITCH logfile; SQL> ALTER system SWITCH logfile; SQL> ALTER system SWITCH logfile; SQL> SHUTDOWN immidiate; 3. 使用以下命令释放归档日志。 SQL> startup mount; SQL> ARCHIVE LOG ALL; SQL> ALTER DATABASE OPEN; 4. 最后,启动之前停止的进程。 SQL> ALTER system ARCHIVELOG ALL; 以上就是解决ORA-00257错误的完整步骤。需要注意的是,在清空归档日志之前,需要备份相关的数据以保证数据的安全性。同时,也应该定期清空归档日志,避免存储空间不足导致ORA-00257错误的再次发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值