错误代码 ORA-16014的解决办法


错误代码 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;...

相关内容