关于数据库无法登录的问题反思(r6笔记第49天)

昨天接到了同事的一个电话,说有一个数据库无法访问了,希望能够让我来看看,赶紧连过去,发现错误还是一个看似很简单的ora错误。 $ sqlplus / as sysdba Copyright (c) 1982, 2011, Oracle. All rights reserved. ERROR: ORA-09817: Write to audit file failed. Linux-x86_64 Error: 28: No space left on device Additional information: 12 ORA-01075: you are currently logged on 这种问题想必大家都或多或少碰到过,从错误日志来看还是因为审计日志写不进去了,再进一步来说,就是空间不足了。 无论怎么判断,一个df -h命令足以说明,可以看到空间确实是不够了。 Filesystem Size Used Avail Use% Mounted on /dev/sda7 5.9G 633M 4.9G 12% / ... /dev/sdb1 3.1T 3.0T 0 100% /data 这个时候还是有个小诀窍,数据库无法登录,那么就查看不了审计日志的地方。我们可以直接到$ORACLE_HOME/dbs下的参数文件里面来看,多多少少能发现一些相关的信息。 简单评估之后,发现有一个临时文件大概有100M可以先挪到其它的目录下,然后再次尝试tns连接就没有问题了。 问题其实在这个时候看似已经基本解决了。但是过了不到一分钟,自己再次尝试,似乎又登录不了了。再次查看,几百M的空间已经用完了。马上做了处理,问题的处理暂时告一段落。 但是我们的分析和解释才刚刚开始。 首先这个问题为什么会发生,空间问题导致的数据库无法登录还是不应该犯的错误。对于这个问题,查看前几天的空间使用情况,可以看到还剩下好几百M的空间。 按照一个阀值来参考,还是基本够用的。 那就说明数据库层面还是有一些和平常不同的地方,简单查看,得到了下面的报告。这个能够看出一个数据库的负载情况,能够看到在一个小时内redo的切换频率。

可以看到在问题发生的时间段内,redo的切换频率极高,数据库负载是在近两天才可以上升的,但是对于数据库redo切换如此频繁,是否从应用层面有一些大的变更目前还没有相关的通知,但是可以看到问题问题就是这么积累下来,结果导致近两天的redo切换极为频繁,归档一下子撑爆了磁盘空间。 关于是否应用有大的变更,还需要进一步确认,但是对于DBA来说,着实需要结合这些信息作为检查的一个基准。 目前的环境使用中dataguard还是使用比较频繁,所以在11g的环境中,有了active dataguard,数据的变更到备库还是很快的,所以对于归档的保留也就采用了一些延时。目前的归档延时删除是保留在2天,也就是删除两天之前的归档,但是可以从归档的删除情况可以看到,偏偏就是这两天内归档频率极高,最后还是把空间给占满了。简单修改一些crontab中的删除策略就可以了。 所以对于这个问题的反思如下: 归档路径还是最好在fast_recovery_area_dest下,在11g中,会有一个空间阀值,超过了80%会自动删除,详细请看之前的博文。http://blog.itpub.net/23718752/viewspace-1761853/ 对于文件系统的监控,采用OEM监控还是没有zabbix那么直接,系统级的监控在zabbix中还是能够更加统一,而在gc中监控系统级的情况还是有一定的欠缺,至少没有zabbix针对性更强。 对于归档的删除,还是需要最好能够做些前瞻性的处理,比如对于归档产生较多,但是又不希望直接删除归档的情况,对归档进行定时压缩,然后定时删除过期的归档就是一个相对来说可行的方案,即节省了空间又能够保留尽可能多的归档。 最后也是最重要的,数据库级的变更和应用关系极为紧密,如果有什么大的变更或者批量处理还是能够让DBA知晓,在这种问题上DBA还是能够做到先知先觉,把问题都解决在还没发生之前。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2015-09-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术栈

为什么说Redis是单线程的?

近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据” ,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓...

16620
来自专栏Albert陈凯

终极 Shell-MacTalk-池建强的随想录Customize to your needs…

终极 Shell Posted on 2013 年 7 月 23 日 http://macshuo.com/?p=676 ? zsh 在开始今天的 Mac...

34580
来自专栏令仔很忙

令仔学Redis(二)----单线程架构

Redis是一种基于键值对(key-value)的NoSQL数据库,包含多种数据结构。官网上给出的数字是读写性能可以达到10万/秒,可见速度之快。

9410
来自专栏腾讯大数据的专栏

大型web系统数据缓存设计

1. 前言 在高访问量的web系统中,缓存几乎是离不开的;但是一个适当、高效的缓存方案设计却并不容易;所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些...

49960
来自专栏后端技术探索

基于Redis实现分布式消息队列(一)

1、为什么需要消息队列? 当系统中出现“生产“和“消费“的速度或稳定性等因素不一致的时候,就需要消息队列,作为抽象层,弥合双方的差异。

45530
来自专栏F-Stack的专栏

F-Stack Q&A 第三期

Q1:如果在一个阻塞型的socket上执行recv,会不会把相应的线程卡死,调用recv时该socket中没有数据包,导致sleep,sleep导致该线程没办法...

71490
来自专栏何俊林

美团猫眼电影Android模块化实战总结

首先一句话概括:我想把这几个月做的事情记录下来,并且希望尽量详细,希望读者读了这篇文章能够知道项目进行模块化,项目改业务框架可能会遇到哪些问题,具体每个步骤都做...

34920
来自专栏MongoDB中文社区

完美数据迁移-MongoDB Stream的应用

尽管如此,目前还是有许多企业踏上了服务化改造的道路,这其中则免不了”旧改”的各种繁杂事。

12820
来自专栏蓝天

apache thrift的不足

thrift作为RPC优点明显,那些还在坚持使用消息排斥RPC的同学,都应当亲自接触体验一下。 

10710
来自专栏坚毅的PHP

node.js进阶学习

简介 如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:“Node 究竟是什么东西?”尽管不是针对所有人的,但 Nod...

45870

扫码关注云+社区

领取腾讯云代金券