一、简要介绍
首先数据库日志文件有两种:
联机日志文件和归档日志文件,联机日志文件会将之前的覆盖,不会做备份。
而归档日志文件会做备份,这样就造成了归档日志空间已满,解决方法:
如果真的是归档日志空间已满的话,把旧的归档日志导到其他磁盘,腾出磁盘空间。也可以添加新的归档目的盘。
解决方法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 var
bin oradata
# cd oradata
# ls
flash_recovery_area misdata
lost+found orabak
# cd flash_recovery_area
# ls
MISDATA
# cd MISDATA
# ls
archivelog autobackup onlinelog
# cd archivelog
# ls
2011_01_01 2011_01_04 2011_01_07 2011_01_10 2011_01_13 201
2011_01_02 2011_01_05 2011_01_08 2011_01_11 2011_01_14 201
2011_01_03 2011_01_06 2011_01_09 2011_01_12 2011_01_15 202
#
5.查看FLASH_RECOVERY_AREA空间使用情况
# cd oradata
# ls
6.查看flash recovery area已经占用的空间
SQL>select * from v$flash_recovery_area_usage;
7.转移或清除对应的归档日志,删除一些不用的日期目录的文件,注意保留最后几个文件
注意:在删除归档日志后必须用RMAN维护控制文件,否则空间显示仍然不释放。
在rman里删除过期日志
$rman target /
Recovery Manager: Release11.2.0.1.0 - Production on Wed Feb 24 08:13:00 2010
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: ****
RMAN>crosscheck archivelog all; 检查一些无用的archivelog
RMAN>delete expired archivelog all; 删除过期archivelog
8.登录oracle增大闪回区大小
SQL>alter system set db_recovery_file_dest_size=8G scope=both;
SQL>select * from V$FLASH_RECOVERY_AREA_USAGE;