ORA-00257-歸檔日誌所在磁碟空間使用100%出錯解決

還不算暈發表於2013-10-05

現象:

正在進行DML操作時,操作一直無法完成。退出SQLPLUS時一直無響應--卡著不動無法正常退出。

登陸資料庫所在主機,使用SQLPLUS登陸DBA使用者時,提示歸檔出錯。
[oracle@oel-01 ~]$ sqlplus bys/bys
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jul 21 17:55:09 2013
Copyright (c) 1982, 2009, Oracle.  All rights reserved.

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

一、檢視 日誌提示一個REDO日誌不能歸檔。

[oracle@oel-01 ~]$ tail alert_bys001.log
ORA-19502: write error on file "", block number  (block size=)
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/bys001/redo03.log'
Sun Jul 21 18:01:18 2013
ARCH: Archival stopped, error occurred. Will continue retrying
ORACLE Instance bys001 - Archival Error
ORA-16014: log 3 sequence# 219 not archived, no available destinations
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/bys001/redo03.log'
Errors in file /u01/app/oracle/diag/rdbms/bys001/bys001/trace/bys001_arc1_6050.trc:
ORA-16014: log 3 sequence# 219 not archived, no available destinations
ORA-00312: online log 3 thread 1: '/u01/app/oracle/oradata/bys001/redo03.log'

二、檢視硬碟使用情況,發現ORACLE_HOME 即歸檔檔案所在目錄使用已經100%

[oracle@oel-01 ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G   18G  3.8M 100% /
/dev/sda1              99M   21M   74M  22% /boot
tmpfs                 3.0G  529M  2.5G  18% /dev/shm
/dev/sda5             4.6G  2.6G  1.9G  58% /backup

三、這裡我使用RMAN來刪除歸檔日誌

[oracle@oel-01 ~]$ rman target /
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;

----注意要用RMAN刪除,--遇到過通過手動從OS上rm時ORALCE不能及時檢測到空閒空間的情況

刪除今天之前的歸檔日誌

RMAN> delete archivelog until time 'sysdate-1' ;
也可以用

RMAN> delete  archivelog  all;  刪除所有歸檔



四、檢視磁碟空間,已經釋放出來了一部分。

[oracle@oel-01 ~]$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda2              19G   18G  588M  97% /
/dev/sda1              99M   21M   74M  22% /boot
tmpfs                 3.0G  529M  2.5G  18% /dev/shm
/dev/sda5             4.6G  1.8G  2.6G  42% /backu

五、此時使用DBA使用者登陸SQLPLUS依然出錯,使用SYSDBA使用者登陸,切換當前日誌檔案。

[oracle@oel-01 ~]$ sqlplus bys/bys
SQL*Plus: Release 11.2.0.1.0 Production on Sun Jul 21 18:03:48 2013
Copyright (c) 1982, 2009, Oracle.  All rights reserved.

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

使用SYSDBA登陸
SYS@ bys001>alter system switch logfile;   ----可能會需要較長時間。
System altered.
SYS@ bys001>select group#,status,archived from v$log;
    GROUP# STATUS           ARC
---------- ---------------- ---
         1 CURRENT          NO
         2 INACTIVE         YES
         3 ACTIVE           NO

日誌可能如下:

[oracle@bys001 ~]$ cat alert_bys1.log
Sat Oct 05 12:44:41 2013
Suspending MMON action 'metrics monitoring' for 82800 seconds
Sat Oct 05 12:45:10 2013
Archiver process freed from errors. No longer stopped
Sat Oct 05 12:45:14 2013
Archived Log entry 106 added for thread 1 sequence 111 ID 0xebe3b9d9 dest 1:
krse_arc_driver_core: Successful archiving of previously failed ORL
Sat Oct 05 12:45:14 2013
Thread 1 advanced to log sequence 114 (LGWR switch)
  Current log# 3 seq# 114 mem# 0: /u01/oradata/bys1/redo03.log
Sat Oct 05 12:45:14 2013
AUD: Audit Commit Delay exceeded, written a copy to OS Audit Trail
Sat Oct 05 12:45:21 2013
Archived Log entry 107 added for thread 1 sequence 113 ID 0xebe3b9d9 dest 1:
Archived Log entry 108 added for thread 1 sequence 112 ID 0xebe3b9d9 dest 1:


六、現在資料庫恢復正常,可以登陸並操作

SYS@ bys001>conn bys/bys
Connected.
BYS@ bys001>exit

[oracle@oel-01 ~]$ sqlplus bys/bys
BYS@ bys001>truncate table test1;
Table truncated.

最後要對歸檔日誌進行備份和刪除。

使用備份歸檔指令碼如下:
[oracle@oel-01 ~]$ cat archback.sh
#!/bin/sh
#su - oracle
source /home/oracle/.bash_profile
##########
/u01/app/oracle/product/11.2.0/dbhome_1/bin/rman   log /home/oracle/rman-arch`date +%Y%m%d-%H%M`.log <<EOF
connect target /;
run{
backup archivelog all delete input
format '/backup/archlog/arch_%d_%T_%s';
}
exit

相關文章