解决这种因归档存满数据库宕掉的问题有三种办法:
1.增大db_recovery_file_dest_size值
2.更换归档日志路径
3.检查失效的归档日志文件,然后删除(或者删除N天以前的归档日志)
因为数据库无法正常进入,没有办法修改数据库的参数,所以我选择第三种。
首先找到归档日志存放路径,然后删除时间最久远的归档日志(删两个保证数据库可以开启即可)。
[oracle@YJH ~]$ cd /u01/flash_recovery_area/PROD/archivelog/
[oracle@YJH archivelog]$ ll
total 112
drwxr-x--- 2 oracle oinstall 4096 Feb 15 15:19 2018_04_09
drwxr-x--- 2 oracle oinstall 4096 Feb 15 15:19 2018_11_13
drwxr-x--- 2 oracle oinstall 4096 Feb 15 15:19 2018_11_16
drwxr-x--- 2 oracle oinstall 4096 Feb 15 15:19 2018_11_19
……复制代码第二步:数据库可以开启后进入RMAN清理失效归档(最好可以先对数据库做好备份)
[oracle@YJH ~]$ rman target /
Recovery Manager: Release 11.2.0.1.0 - Production on 星期一 2月 25 11:03:41 2019
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
connected to target database: PROD (DBID=335947904)
RMAN> backup database format='/u01/myrman/prod_%s.bak' filesperset 3;
复制代码查看全部归档日志:
RMAN> list
archivelog all;
清理失效归档日志:
RMAN> delete expired archivelog all;
RMAN> crosscheck archivelog all;
删除当前系统时间一天之前的全部归档日志:
RMAN> delete archivelog all completed before 'sysdate-1';
删除七天以内的归档日志:
RMAN> delete archivelog from time 'sysdate-7';
复制代码数据库归档整理完成。
可以使用以下方式查询归档相关信息:
1.查看归档空间占用率
select * from v$flash_recovery_area_usage;
复制代码2.查看归档日志存放位置
select * from v$recovery_file_dest;
复制代码3.修改归档存储上限
SQL> alter system set db_recovery_file_dest_size=4294967296;
4x1024x1024x1024)
System altered.
SQL> show parameter db_recovery_file
NAME TYPE VALUE
----------------------- ----------- ------------------------------
db_recovery_file_dest string /u01/arch
db_recovery_file_dest_size big integer 4G「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




