如何处理fast_recovery_area无剩余空间
一、打开数据库报错
[oracle@DB1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Tue May 23 21:45:21 2017
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> startup nomount
***********系统信息***********
SQL> alter database mount;
Database altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 13248
Session ID: 96 Serial number: 1
二、错误信息
1.alert日志内容
***********系统信息***********
2.trace文件信息(oracle_ora_13248.trc)
***********系统信息***********
----- End of Abridged Call Stack Trace -----
错误显示:因为数据库归档日志放置在fast_recovery_area中,而空间已满,导致联机日志不能被归档,数据库无法工作
三、修改db_recovery_file_dest_size,打开数据库
SQL> alter system set db_recovery_file_dest_size=20G scope=both;
System altered.
SQL> alter database open;
Database altered.
设置较大db_recovery_file_dest_size,先打开数据库,再解决问题。
四、删除历史归档日志
从日志信息中很明显看出来,数据库进行了resetlogs打开,所以前面的归档日志,在原则上已经无效(不再使用原始备份集恢复),因为数据库的控制文件中,无原归档日志信息,所以无法使用rman删除归档日志。那只能使用os命令先删除掉历史归档日志,然后再使用rman处理
[root@DB1 archivelog]# find ./ -mtime +1| xargs rm -rf
[root@DB1 archivelog]# ll
***********系统信息***********
RMAN> crosscheck archivelog all;
***********系统信息***********
Crosschecked 136 objects
RMAN> DELETE EXPIRED archivelog all;
***********系统信息***********
Deleted 124 EXPIRED objects
五、概述
1.使用os命令删除fast_recovery_area内容后,需要使用crosscheck检测
crosscheck archivelog all;
crosscheck backup;
2.然后使用 DELETE EXPIRED命令删除
DELETE EXPIRED archivelog all;
DELETE EXPIRED backup;
DELETE backupset;
3.fast_recovery_area设置合适大小+合适的策略
alter system set db_recovery_file_dest_size=20G scope=both;
(scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改。
scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了。
scope=both 内存和spfile都更改。不指定scope参数,等同于scope=both)
4.resetlogs打开数据库后,做好备份
5.fast_recovery_area无剩余空间处理思路
5.1)如果数据库不能登录:重启至mount,增大fast_recovery_area,open数据库,然后使用rman删除历史垃圾数据(备份集,日志,闪回日志等)
5.2)如果数据库可以使用sys登录,增大fast_recovery_area(使其数据库可以正常工作),然后使用rman处理垃圾数据
一、打开数据库报错
[oracle@DB1 ~]$ sqlplus / as sysdba
SQL*Plus: Release 12.1.0.2.0 Production on Tue May 23 21:45:21 2017
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL> startup nomount
***********系统信息***********
SQL> alter database mount;
Database altered.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-03113: end-of-file on communication channel
Process ID: 13248
Session ID: 96 Serial number: 1
二、错误信息
1.alert日志内容
***********系统信息***********
2.trace文件信息(oracle_ora_13248.trc)
***********系统信息***********
----- End of Abridged Call Stack Trace -----
错误显示:因为数据库归档日志放置在fast_recovery_area中,而空间已满,导致联机日志不能被归档,数据库无法工作
三、修改db_recovery_file_dest_size,打开数据库
SQL> alter system set db_recovery_file_dest_size=20G scope=both;
System altered.
SQL> alter database open;
Database altered.
设置较大db_recovery_file_dest_size,先打开数据库,再解决问题。
四、删除历史归档日志
从日志信息中很明显看出来,数据库进行了resetlogs打开,所以前面的归档日志,在原则上已经无效(不再使用原始备份集恢复),因为数据库的控制文件中,无原归档日志信息,所以无法使用rman删除归档日志。那只能使用os命令先删除掉历史归档日志,然后再使用rman处理
[root@DB1 archivelog]# find ./ -mtime +1| xargs rm -rf
[root@DB1 archivelog]# ll
***********系统信息***********
RMAN> crosscheck archivelog all;
***********系统信息***********
Crosschecked 136 objects
RMAN> DELETE EXPIRED archivelog all;
***********系统信息***********
Deleted 124 EXPIRED objects
五、概述
1.使用os命令删除fast_recovery_area内容后,需要使用crosscheck检测
crosscheck archivelog all;
crosscheck backup;
2.然后使用 DELETE EXPIRED命令删除
DELETE EXPIRED archivelog all;
DELETE EXPIRED backup;
DELETE backupset;
3.fast_recovery_area设置合适大小+合适的策略
alter system set db_recovery_file_dest_size=20G scope=both;
(scope=spfile 仅仅更改spfile里面的记载,不更改内存,也就是不立即生效,而是等下次数据库启动生效。有一些参数只允许用这种方法更改。
scope=memory 仅仅更改内存,不改spfile。也就是下次启动就失效了。
scope=both 内存和spfile都更改。不指定scope参数,等同于scope=both)
4.resetlogs打开数据库后,做好备份
5.fast_recovery_area无剩余空间处理思路
5.1)如果数据库不能登录:重启至mount,增大fast_recovery_area,open数据库,然后使用rman删除历史垃圾数据(备份集,日志,闪回日志等)
5.2)如果数据库可以使用sys登录,增大fast_recovery_area(使其数据库可以正常工作),然后使用rman处理垃圾数据