今天下午剛啟動程序,就報以下錯誤:
Caused by: java.sql.SQLException: ORA-00257: 歸檔程序錯誤。在釋放之前僅限於內部連接。
經查,是oracle數據庫日志滿了,標記以下!
一、簡要介紹
首先數據庫日志文件有兩種:
聯機日志文件和歸檔日志文件,聯機日志文件會將之前的覆蓋,不會做備份。
而歸檔日志文件會做備份,這樣就造成了歸檔日志空間已滿,解決方法:
如果真的是歸檔日志空間已滿的話,把舊的歸檔日志導到其他磁盤,騰出磁盤空間。也可以添加新的歸檔目的盤。
解決方法1:
先手工刪除D:\oracle\product\10.2.0\flash_recovery_area裡面的日志,然後用戶用rman進入把歸檔日志刪除
1)#rman target/
2)rman>crosscheck archivelog all;
3)rman>delete expired archivelog all;
4)rman>exit
解決方法2:改變了FLASH_RECOVERY_AREA的大小
sql>alter system set db_recovery_file_dest_size=8G scope=both;
sql>show parameter db_recovery_file_dest_size
二、詳細過程介紹
1.連接
$sqlplus /as sysdba
SQL*Plus: Release10.2.0.1.0 - Production on Mon Jan 17 10:00:24 2011
Copyright (c) 1982, 2005, Oracle. All rights reserved.
Connected to:
Oracle Database10gRelease10.2.0.1.0 - 64bit Production
2.查看正在歸檔的狀態
SQL>select * from v$log;
發現ARC狀態為NO,表示系統沒法自動做歸檔。
3.查看歸檔日志所在位置
SQL>show parameter recover;
SQL> exit
$ exit
4.進入日志存入目錄
# cd
# ls
.TTauthority cdrom proc
.Xauthority configassist.log sbin
.dt dev smit.log
.dtprofile etc smit.script
.java home smit.transaction
.mh_profile lib sqlnet.log
.sh_history lost+found tftpboot
.vi_history lpp tmp
.wmrc mnt u
Mail nmo42_aix5L_64.tar.gz unix
TT_DB nsr usr
audit opt ......余下全文>>
10g並不多啊,很快就會用光的,建議可以再設置多一些。
另外檢查你的備份和歸檔日志,無用的信息可以刪除掉,避免占用這麼多空間。
在RMAN中可以運行命令檢查有無多余的備份:
report obsolete
然後刪除之:
delete obsolete