基于ORA-19815闪回空间爆满问题的处理方法
作者:yepkeepmoving 发布时间:2024-01-21 03:35:04
标签:ORA-19815,闪回,空间,爆满
闪回区爆满问题也是经常会遇到的问题,最关键的是闪回设置大小以及归档被默认存放在了闪回目录,恰巧今天又遇到了这个问题,就记录下处理步骤,仅供遇到这类问题的人参考。
一、错误现象描述
1)应用端错误信息
Error: 2016-11-26 11:45:25 ORA-00257: Archiver error. Connect AS SYSDBA only until resolved.
Error: 2016-11-26 11:45:25 ORA-00257: Archiver error. Connect AS SYSDBA only until resolved.
Error: 2016-11-26 11:45:25 init connpool:one or more conn open error.
2)数据库端错误信息
Sat Nov 26 12:13:14 2016
Errors in file /home/U01/app/oracle/diag/rdbms/testdb/testdb/trace/testdb_arc2_929.trc:
ORA-19815: WARNING: db_recovery_file_dest_size of 42949672960 bytes is 100.00% used, and has 0 remaining bytes available.
Sat Nov 26 12:13:14 2016
************************************************************************
You have following choices to free up space from recovery area:
1. Consider changing RMAN RETENTION POLICY. If you are using Data Guard,
then consider changing RMAN ARCHIVELOG DELETION POLICY.
2. Back up files to tertiary device such as tape using RMAN
BACKUP RECOVERY AREA command.
3. Add disk space and increase db_recovery_file_dest_size parameter to
reflect the new space.
4. Delete unnecessary files using RMAN DELETE command. If an operating
system command was used to delete files, then use RMAN CROSSCHECK and
DELETE EXPIRED commands.
************************************************************************
Sat Nov 26 12:13:14 2016
Errors in file /home/U01/app/oracle/diag/rdbms/testdb/testdb/trace/testdb_arc2_929.trc:
ORA-19809: limit exceeded for recovery files
ORA-19804: cannot reclaim 524288000 bytes disk space from 42949672960 limit
二、错误分析
从应用日志看,是由于不能归档导致的DB连接池不能被初始化打开,基本可以判断是由于数据库的归档文件所在磁盘空间满导致。
从数据库日志查看发现确实是由于闪回空间已经爆满,通过查看服务器磁盘空间以及闪回空间大小即可再次验证。
三、详细处理过程
1)登陆数据库服务器,查看磁盘空间使用信息
[oracle@teststd trace]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda5 9.9G 2.6G 6.9G 28% /
tmpfs 32G 18M 32G 1% /dev/shm
/dev/sda1 388M 62M 307M 17% /boot
/dev/sda6 1.6T 506G 1017G 34% /home
/dev/sda2 20G 508M 19G 3% /var
2)查看数据库错误日志,发现闪回空间爆满
cd /home/U01/app/oracle/diag/rdbms/testdb/testdb/trace
tail -n 35 alert_testdb.log
ORA-19815: WARNING: db_recovery_file_dest_size of 42949672960 bytes is 100.00% used, and has 0 remaining bytes available.
3)登陆数据库,查看闪回路径以及闪回空间使用情况
查看闪回空间设置大小
SQL> 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查看闪回路径
Col name for a60;
Set line 200;
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
查看闪回空间所在磁盘大小
SQL> !df -h /home/U01/app/oracle/fast_recovery_area
Filesystem Size Used Avail Use% Mounted on
/dev/sda6 1.6T 504G 1019G 34% /home
查看闪回目录使用大小
SQL> !du -hs /home/U01/app/oracle/fast_recovery_area
40G /home/U01/app/oracle/fast_recovery_area
查看闪回空间使用情况
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 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)删除归档、调整闪回区大小
从上面看确实是闪回空间满了,而占用闪回区满的罪魁祸首就是归档日志。要解决的方法有两个:
方案1:删除多余的归档
最佳删除归档的途径是通过rman工具做,如果直接删除文件数据库是识别不到闪回区释放的。
[oracle@teststd trace]$ rman target /
Recovery Manager: Release 12.1.0.2.0 - Production on Sat Nov 26 13:00:28 2016
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
connected to target database: TESTDB (DBID=2708971821)
RMAN> crosscheck archivelog all;
RMAN> delete expired archivelog all;
RMAN> DELETE NOPROMPT ARCHIVELOG ALL COMPLETED BEFORE 'SYSDATE-7' ;
或者利用下面的语句删除七天前的归档日志
RMAN> DELETE NOPROMPT ARCHIVELOG UNTIL TIME 'SYSDATE-7' ;
注意:(一般删除归档腾出足够的闪回区后,建议调整归档路径或者调整足够闪回区大小)
方案2:调整闪回区大小
SQL> 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)查看闪回区使用情况和其大小
[oracle@teststd trace]$ du -hs /home/U01/app/oracle/fast_recovery_area
27G /home/U01/app/oracle/fast_recovery_area
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)通知系统管理员启动应用,正常启动
至此问题得以彻底解决
来源:http://blog.itpub.net/27067062/viewspace-2129130/


猜你喜欢
- 1.在Server端添加Silverlight-enabled WCF service [ServiceContract(Namespace
- 大致效果安装方式 IDEA插件官网地址:material theme ui GITHUB地址:material theme ui 下载之后选
- 在团队意见PK中,运用对方的知识背景说服对方,这就是技术性击倒。这样通常能把对方驳得哑口无言,我经常被这样击倒,甚至觉得怎么那么多牛逼的设计
- 在 CodeBit.cn 的论坛中,有人问 Javascript 中如何截取小数位并实现四舍五入,这是一个很常用的 js 技术,帖子中也有网
- 一、LeetCode——125.验证回文串1.问题描述给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:
- 分组小括号() 有直接分组和命名分组直接分组: ()分组只显示小括号括起来的内容re.findall(r"(name)+
- 因此,在我接触那么多种语言当中,asp是最不严格的一种,是对程序员要求最低的一种。 昨天测试了asp.net、php和asp的运行速度比较,
- 本文总结分析了selenium2.0中常用的python函数。分享给大家供大家参考,具体如下:新建实例driver = webdriver.
- 目录1.变量的引用的底层原理2.变量的分类Python的变量,简单来说有数值型,布尔型,字符串类型,列表,元组,字典等6大类。那么不同变量类
- class Helper_Page{ /** 总信息数 */ var $infoCount; /** 总页数 */ var $pageCou
- Image模块Image模块是在Python PIL图像处理中常见的模块,对图像进行基础操作的功能基本都包含于此模块内。如ope
- 近段时间由于修改一个ASP程序(有SQL注入漏洞),在网上找了很多相关的一些防范办法,都不近人意,所以我将现在网上的一些方法综合改良了一下,
- 这个东西算是我被这个shuffle坑了的一个总结吧!首先我得告诉你一件事,那就是pytorch中的tensor,如果直接使用random.s
- if条件分支1. if语句基本用法if boolean_value:子代码模块11)判断条件 boolean_value是if语句判断条件
- 这篇文章主要介绍了简单了解python装饰器原理及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要
- 本文实例讲述了Python自动登录126邮箱的方法。分享给大家供大家参考。具体实现方法如下:import sys, urllib2, url
- 背景本文主要给大家介绍了关于在Python一段程序中使用多次事件循环的相关内容,我们在Python异步程序编写中经常要用到如下的结构impo
- 前言双端队列deque支持从任意一端增加和删除元素。其中,栈和队列就是双端队列的退化形式,它们的输入输出被限制在某一端。基本用法首先,我们来
- 认识模块对于模块,在前面的一些举例中,已经涉及到了,比如曾经有过:import random (获取随机数模块)。为了能够对模块有一个清晰的
- 国 * 公司安全团队开发出利用赛门铁克数据库安全与审计(SDSA)设备监视数据库的一系列客户化的政策。他们是如何在已有安全策略基础上做优