基于ORA-19815闪回空间爆满问题的处理方法

前端之家收集整理的这篇文章主要介绍了基于ORA-19815闪回空间爆满问题的处理方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

闪回区爆满问题也是经常会遇到的问题,最关键的是闪回设置大小以及归档被默认存放在了闪回目录,恰巧今天又遇到了这个问题,就记录下处理步骤,仅供遇到这类问题的人参考。

一、错误现象描述

1)应用端错误信息

2)数据库错误信息

二、错误分析

从应用日志看,是由于不能归档导致的DB连接池不能被初始化打开,基本可以判断是由于数据库的归档文件所在磁盘空间满导致。

数据库日志查看发现确实是由于闪回空间已经爆满,通过查看服务器磁盘空间以及闪回空间大小即可再次验证。

三、详细处理过程

1)登陆数据库服务器,查看磁盘空间使用信息

2)查看数据库错误日志,发现闪回空间爆满

3)登陆数据库,查看闪回路径以及闪回空间使用情况

查看闪回空间设置大小

show parameter recover;

NAME TYPE VALUE


db_recovery_file_dest string /home/U01/app/oracle/fast_recovery_area
db_recovery_file_dest_size big integer 40G
db_unrecoverable_scn_tracking boolean TRUE
recovery_parallelism integer 0

或者利用sql查看闪回路径

select * from v$recovery_file_dest ;

NAME SPACE_LIMIT SPACE_USED SPACE_RECLAIMABLE NUMBER_OF_FILES CON_ID


/home/U01/app/oracle/fast_recovery_area 4.2950E+10 2.1538E+10 0 89 0

查看闪回空间所在磁盘大小

!df -h /home/U01/app/oracle/fast_recovery_area Filesystem Size Used Avail Use% Mounted on /dev/sda6 1.6T 504G 1019G 34% /home

查看闪回目录使用大小

!du -hs /home/U01/app/oracle/fast_recovery_area 40G /home/U01/app/oracle/fast_recovery_area

查看闪回空间使用情况

select * from V$RECOVERY_AREA_USAGE;

FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES CON_ID


CONTROL FILE 0 0 0 0
REDO LOG 7.45 0 7 0
ARCHIVED LOG 100 0 76 0
BACKUP PIECE 0 0 0 0
IMAGE COPY 0 0 0 0
FLASHBACK LOG 0 0 0 0
FOREIGN ARCHIVED LOG 0 0 0 0
AUXILIARY DATAFILE COPY 0 0 0 0

4)删除归档、调整闪回区大小

从上面看确实是闪回空间满了,而占用闪回区满的罪魁祸首就是归档日志。要解决方法有两个:

删除多余的归档

最佳删除归档的途径是通过rman工具做,如果直接删除文件数据库是识别不到闪回区释放的。

crosscheck archivelog all; RMAN> delete expired archivelog all; RMAN> DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7' ;

或者利用下面的语句删除七天前的归档日志

DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-7' ;

注意:(一般删除归档腾出足够的闪回区后,建议调整归档路径或者调整足够闪回区大小)

alter system set db_recovery_file_dest_size=100G scope=both; alter system set db_recovery_file_dest_size=100G scope=both * ERROR at line 1: ORA-65040: operation not allowed from within a pluggable database ###数据库为12c,不允许在pdb下操作,需要切换到sys下操作 sql> conn /as sysdba; Connected. sql> alter system set db_recovery_file_dest_size=100G scope=both;

System altered.

5)查看闪回区使用情况和其大小

SQL> select * from V$RECOVERY_AREA_USAGE;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES CON_ID


CONTROL FILE 0 0 0 0
REDO LOG 2.98 0 7 0
ARCHIVED LOG 17.08 0 82 0
BACKUP PIECE 0 0 0 0
IMAGE COPY 0 0 0 0
FLASHBACK LOG 0 0 0 0
FOREIGN ARCHIVED LOG 0 0 0 0
AUXILIARY DATAFILE COPY 0 0 0 0

8 rows selected.

6)通知系统管理员启动应用,正常启动

至此问题得以彻底解决

以上这篇基于ORA-19815闪回空间爆满问题的处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持编程之家。

猜你在找的Oracle相关文章