00257 archiver error. 错误解决方法一例

在此发现一个Oracle漏动,eg:
 
DELETE JEW_LOG WHERE C_ID IN (SELECT C_ID FROM BAS_BATCHNO WHERE C_WARID='028' AND C_BATCHNOTYPE='P')

在这个DELETE 语句中子查询是报错的因为没有C_ID这个字段、所以JEW_LOG这张表就糟殃了数据98292条记录直接被删除、幸亏一直以来养成的好习惯(First delete, after commit).不至于损失数据。赶紧rollback;结果一直在等、发现在连接其他用户进不去了
 
ORA-00257: archiver error. Connect internal only, until freed……
 
这是因为archive log 日志已满

Linux-6-64下安装Oracle 12C笔记

CentOS 6.4下安装Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虚拟机中安装步骤

Debian 下 安装 Oracle 11g XE R2
 
提供下ORA-00257: archiver error. Connect internal only, until freed 错误解决方法

1. 用sys用户登录
  sqlplus sys/pass@ORCL as sysdba
 2. 看看archiv log所在位置
 SQL> show parameter log_archive_dest;
 NAME                                    TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 log_archive_dest                  string
 log_archive_dest_1              string
 log_archive_dest_10            string
 3. 一般VALUE为空时,可以用archive log list;检查一下归档目录和log sequence
 SQL> archive log list;
 Database log mode                Archive Mode
 Automatic archival                  Enabled
 Archive destination                  USE_DB_RECOVERY_FILE_DEST
 Oldest online log sequence    360
 Next log sequence to archive  360
 Current log sequence              362
 4. 检查flash recovery area的使用情况,可以看见archivelog已经很大了,达到96.62
 SQL> select * from V$FLASH_RECOVERY_AREA_USAGE;
 FILE_TYPE    PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
 ------------ ------------------ ------------------------- ---------------
 CONTROLFILE                .13                        0              1
 ONLINELOG                  2.93                        0              3
 ARCHIVELOG                96.62                      0              141
 BACKUPPIECE                  0                        0              0
 IMAGECOPY                      0                        0              0
 FLASHBACKLOG                0                        0              0
 5. 计算flash recovery area已经占用的空间
 SQL> select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
 SUM(PERCENT_SPACE_USED)*3/100
 -----------------------------
                        2.9904
                     
 6. 找到recovery目录, show parameter recover
 SQL> show parameter recover;
 NAME                                TYPE        VALUE
 ------------------------------------ ----------- ------------------------------
 db_recovery_file_dest                string          /u01/app/oracle/flash_recovery_area
 db_recovery_file_dest_size        big integer  5G
 recovery_parallelism                  integer        0
                     
 7 上述结果告诉我们,归档位置用的是默认值,放在flash_recovery_area下(db_recovery_file_dest目录=/u01/app/oracle/flash_recovery_area)
 [root@sha3 10.2.0]# echo $ORACLE_BASE
 /u01/app/oracle
 [root@sha3 10.2.0]# cd $ORACLE_BASE/flash_recovery_area/ORCL/archivelog
 转移或清除对应的归档日志, 删除一些不用的日期目录的文件,注意保留最后几个文件(比如360以后的)
 ---------------------------------------------------------------------------------------
 注意:
 在删除归档日志后,必须用RMAN维护控制文件,否则空间显示仍然不释放。
 ---------------------------------------------------------------------------------------
 8. rman target sys/pass
 [root@sha3 oracle]# rman target sys/pass
 Recovery Manager: Release 10.2.0.4.0 - Production on Tue Jan 20 01:41:26 2009
 Copyright (c) 1982, 2007, Oracle.  All rights reserved.
 connected to target database: tt (DBID=4147983671)
 
 9. 检查一些无用的archivelog
 RMAN> crosscheck archivelog all;
 10. 删除过期的归档
 RMAN> delete archivelog until time 'sysdate-1' ; --删除截止到前一天的所有archivelog
 
delete expired archivelog all;----删除所有archivelog
 Do you really want to delete the above objects(yes or no) yes

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/f970cee8799149135a92962c15653f1a.html