错误代码 16014
进行了检查,发现磁盘空间已满,于是删除了磁盘多余的空间,问题暂时得到解决。好景不长半小时后问题再次发生。
经分析,是recovery区域的大小超过了参数db_recovery_file_dest_size的大小,造成DB挂起,关闭重启后,仍不能解决。
解决过程
1.select status from v$instance; 会发现mounted
alter database open; 开不了,报错。
2.show parameter db_recovery_file
SQL> show parameter db_recovery_file
NAME TYPE VALUE
------------------------------------ ----------- -------
db_recovery_file_dest string d:bk
db_recovery_file_dest_size big integer 2G
alter system set db_recovery_file_dest_size = 3G scope = both;
alter database open;开
反思:
1检查flash recovery area的使用情况
select * from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
------------ ------------------ ------------------------- ---------------
CONTROLFILE 0 0 0
ONLINELOG 0 0 0
ARCHIVELOG 74.27 0 65
BACKUPPIECE 1.77 0 9
IMAGECOPY 0 0 0
FLASHBACKLOG 3.63 3.5 29
2计算flash_recovery area 已经占用的空间
select sum(percent_space_used)*3/100 from v$flash_recovery_area_usage;
SUM(PERCENT_SPACE_USED)*3/100
-----------------------------
2.4345
这说明刚开始的2G不足,导致online redo log无法归档,只有设置参数解决问题。
3也可以通过删除 flash recovery area 中不必要的备份来释放flash recovery area的空间
delete obsolete;
crosscheck backupset...
delete expired backupset;...