看了篇文章:
数据库运行在ARCHIVED模式下,所以oracle会把archived log files写到initial parameter文件中log_archive_dest_1参数所指定的文件夹下,但是随着时间的推移,archived log files会越来越多,迟早会把磁盘塞满,请问oracle是否有自动监控磁盘空间所利用比例的service 或者oracle会有哪个view可以查看到这个目的文件夹磁盘空间的使用情况,以便在被写满之前做出提示。我现在紧急的问题是:arc文件是放在了 oracle目录下 ,导致该磁盘昨天是97%,今天是99%了,请问我可以先把这些arc文件直接移走吗?现在是生产数据库,不敢随便乱动啊!
请教解决方法,紧急。
数据库运行在ARCHIVED模式下,所以oracle会把archived log files写到initial parameter文件中log_archive_dest_1参数所指定的文件夹下,但是随着时间的推移,archived log files会越来越多,迟早会把磁盘塞满,请问oracle是否有自动监控磁盘空间所利用比例的service 或者oracle会有哪个view可以查看到这个目的文件夹磁盘空间的使用情况,以便在被写满之前做出提示。我现在紧急的问题是:arc文件是放在了 oracle目录下 ,导致该磁盘昨天是97%,今天是99%了,请问我可以先把这些arc文件直接移走吗?现在是生产数据库,不敢随便乱动啊!
请教解决方法,紧急。
或者使用rman来定期删除
1、配置RMAN自动管理ARCHIVELOG。也可在RMAN中将数据备份到磁带上,然后将过期的ARCHIVELOG删除;
2、可以手工来处理,步骤如下
1)将/oracle下的相关ARCHIVELOG日志文件移到别的文件系统下(保留一段时间的ARCHIVELOG日志即可,其他的可移走,用系统命令mv移走)。然后打包、压缩,备份到介质上,此时可将这些移出的文件删除。注意:别在原来的/oracle打包了,否则空间占满了就有些麻烦了。
2)以oracle用户登录,执行rman target /。如有多个实例此时执行rman target 用户名/密码@实例名,进入rman
3)在rman中执行
RMAN>list archivelog all; /*列出所有的归档日志文件
RMAN>crosscheck archivelog all; /*与物理归档日志文件保持同步,之前移走了一部分文件,因此执行此命令后会在/oracle目录下找不到的归档日志标记为expired
RMAN>list expired archivelog all; /*列出所有expired(过期)的归档日志文件,此时你就可看到移走的归档日志文件均被标记为expired
RMAN>delete expired archivelog all; /*在oracle中删除所有过期的expired文件
RMAN>list archivelog all; /*再列出所有的归档日志文件,就可发现移走的日志文件被删掉了
RMAN>exit /*退出
list backup;
report obsolete;
delete obsolete;
run {
backup archivelog all delete input;
backup database format '/backup/full%u_%s_%p' include current controlfile;}
delete archivelog until time 'sysdate-1'; //it removes the archivelog from you disk until yesterdayotherwise, you have to move these archived logs to other disk or back up the recovery area to the tape device. If you move these archived logs manually, then you execute the following commands:rman target sys/sys@dbname
crosscheck archivelog all ;It will update the information in the control files of your database.