返回顶部
首页 > 资讯 > 数据库 >数据库突然宕机的问题及分析
  • 690
分享到

数据库突然宕机的问题及分析

2024-04-02 19:04:59 690人浏览 八月长安
摘要

昨天晚上,某个环境的数据库在做一个压力测试的时候突然宕机了。这个问题比较急。马上查看日志文件。 看到了如下的一段,报了os级的linux错误。提示没有空间了。 Fri Mar 14 19:16:47 20

昨天晚上,某个环境的数据库在做一个压力测试的时候突然宕机了。这个问题比较急。马上查看日志文件。
看到了如下的一段,报了os级的linux错误。提示没有空间了。

Fri Mar 14 19:16:47 2014
ArcHived Log entry 192 added for thread 1 sequence 192 ID 0x1ed7a02c dest 1:
Fri Mar 14 19:39:24 2014
Incremental checkpoint up to RBA [0xc0.2aa5fb.0], current log tail at RBA [0xc1.5d29f.0]
Fri Mar 14 19:46:37 2014
Completed checkpoint up to RBA [0xc1.2.10], SCN: 252702724
Fri Mar 14 20:09:32 2014
Incremental checkpoint up to RBA [0xc1.5d36a.0], current log tail at RBA [0xc1.b8498.0]
Fri Mar 14 20:13:15 2014
KCF: read, write or open error, block=0xa6b82 online=1
        file=1 '/TEST1/db05/oradata/PRDTEST1/TEMP_1.dbf'
        error=27061 txt: 'Linux-x86_64 Error: 28: No space left on device
Additional infORMation: -1
Additional information: 8192'
Errors in file /test01/oracle/adm/PRDTEST1/diag/rdbms/prdTEST1/PRDTEST1/trace/PRDTEST1_dbw7_19235.trc:
Errors in file /test01/oracle/adm/PRDTEST1/diag/rdbms/prdTEST1/PRDTEST1/trace/PRDTEST1_dbw7_19235.trc:
ORA-63999: data file suffered media failure
ORA-01114: IO error writing block to file 5001 (block # 682882)
ORA-01110: data file 5001: '/TEST1/db05/oradata/PRDTEST1/TEMP_1.dbf'
ORA-27061: waiting for async I/Os failed
Linux-x86_64 Error: 28: No space left on device
Additional information: -1
Additional information: 8192
DBW7 (ospid: 19235): terminating the instance due to error 63999
Fri Mar 14 20:13:16 2014
System state dump requested by (instance=1, osid=19235 (DBW7)), summary=[abnormal instance termination].
System State dumped to trace file /test01/oracle/adm/PRDTEST1/diag/rdbms/prdTEST1/PRDTEST1/trace/PRDTEST1_diag_19213.trc
Termination issued to instance processes. Waiting for the processes to exit
Fri Mar 14 20:13:31 2014
Instance termination failed to kill one or more processes
Instance terminated by DBW7, pid = 19235
Fri Mar 14 22:55:44 2014
Starting ORACLE instance (normal)

马上开始查看文件系统的空间,确实是不够了。紧急resize了下文件,把库先起来,然后再协调系统的资源了。
问题虽然马上解决了。但是对于文件写入(报错异步io)的情况,数据库实例会同然down掉。确实是一件很敏感的事情。
在metalink上查找有一个类似的错误,但是是基于NAS环境的,那个Unix环境做了一些系统变更导致了这个错误和这个问题还是有一些不同。(文档 ID 1557694.1)
我在想对于如果数据文件写入失败,有没有一些措施来控制,保证不会把库给down掉。发现在11.2.0.2版本之后,发现了一个隐含参数(_datafile_write_errors_crash_instance)
查看隐含参数的脚本如下。

set linesize 132 column name format a30 column value format a25 
select
x.ksppinm name,
y.ksppstvl value,
y.ksppstdf isdefault, 
decode(bitand(y.ksppstvf,7),1,'MODIFIED',4,'SYSTEM_MOD','FALSE') ismod, 
decode(bitand(y.ksppstvf,2),2,'TRUE','FALSE') isadj 
from sys.x$ksppi x, sys.x$ksppcv y 
where x.inst_id = userenv('Instance') 
and y.inst_id = userenv('Instance') 
and x.indx = y.indx 
and x.ksppinm like '%_%' 
order by translate(x.ksppinm, ' _', ' ') 
/


默认这个参数_datafile_write_errors_crash_instance的值是true的。
oracle给出的解释如下,还有一个相关的bug(文档 ID 7691270.8)已经在11.2.0.2做了修复。
If _datafile_write_errors_crash_instance = TRUE (default) then
  any write to a datafile which fails due to an IO error causes 
  an instance crash. 


 If _datafile_write_errors_crash_instance = FALSE then the behaviour
  reverts to the previous behaviour (before this fix) such that
  a write error to a datafile offlines the file (provided the DB is
  in archivelog mode and the file is not in SYSTEM tablespace in 
  which case the instance is aborted)
简单的测试
大家可能想如果表空间不够了,数据文件空间不够了,数据库是不是也会down掉。我简单在本地做了测试来看在并行插入的时候如果文件空间不够会不会把库down掉。但是要模拟数据文件的错误,可能需要借助bbed等工具来模拟了。
step 1.首先为了先把隐含参数设置为默认值true
alter system set "_datafile_write_errors_crash_instance"=TRUE;
step 2.然后创建了一个dummy文件,保证文件系统中的空间只剩下很少的一部分。
dd if=/dev/zero of=/u02/ora11g/hello.txt bs=1000M count=1
-rw-r--r--  1 ora11g dba    1048576000 Mar 15 04:09 hello.txt


/dev/sdb2             7.6G  7.2G   45M 100% /u02
只剩下很小的一部分空间了,45M的样子。
step 3.创建两个个表空间。让数据文件自动增长。
sql> create tablespace test_data1 datafile '/u02/ora11g/testdata1.dbf' size 2M autoextend on;
Tablespace created.

SQL> create tablespace test_data2 datafile '/u02/ora11g/testdata2.dbf' size 2M autoextend on;
Tablespace created.

step 4:创建两个表属于不同的表空间
SQL> create table test1 tablespace test_data1 as select *from cat;
Table created.

SQL> create table test2 tablespace test_data2 as select *from user_objects;
Table created.

step 5:简单核查一下表里的数据。保证数据量在可控范围内。
SQL> select count(*)from test1;
  COUNT(*)
----------
         4
SQL> select count(*)from test2;
  COUNT(*)
----------
         5


step 6:然后写了如下的3个脚本来往两个表里分别不断的插入和commit
脚本1 a.sh
sqlplus test/test <<EOF
begin
for i in 1..10000 loop
insert into test1 select *from test1 where rownum<5;
commit;
end loop;
end;
/
EOF
exit

脚本2 b.sh
sqlplus test/test <<EOF
begin
for i in 1..10000 loop
insert into test2 select *from test2 where rownum<10;
commit;
end loop;
end;
/
EOF
exit

脚本3 c.sh ,可以基本保证两个执行是并行的。
ksh a.sh &
ksh b.sh &

step 7,执行脚本3以后查看日志内容
马上看到alert里面马上又了如下的信息
Sat Mar 15 07:40:22 2014
ORA-1653: unable to extend table TEST.TEST2 by 128 in                 tablespace TEST_DATA2 
ORA-1653: unable to extend table TEST.TEST2 by 128 in                 tablespace TEST_DATA2 
由以上的简单测试可以看出表空间不够的时候,实例还是能够保证open的。
您可能感兴趣的文档:

--结束END--

本文标题: 数据库突然宕机的问题及分析

本文链接: https://lsjlt.com/news/49592.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 数据库突然宕机的问题及分析
    昨天晚上,某个环境的数据库在做一个压力测试的时候突然宕机了。这个问题比较急。马上查看日志文件。 看到了如下的一段,报了os级的linux错误。提示没有空间了。 Fri Mar 14 19:16:47 20...
    99+
    2024-04-02
  • tomcat 宕机问题分析及解决
    Tomcat 宕机问题的分析和解决方法可以从以下几个方面来考虑:1. 日志分析:首先需要查看 Tomcat 的日志文件,特别是 ca...
    99+
    2023-09-20
    tomcat
  • 独立解决数据库宕机问题
    1. 发现数据库宕机,(ps -ef | grep smon )首先考虑是不是RAC,是否影响正常的生成环境。确定大概修复时间。    如果是RAC,那么到到另一台数据库上输入操作命令。...
    99+
    2024-04-02
  • 生产SQL语句突然变慢问题的示例分析
    这篇文章主要为大家展示了“生产SQL语句突然变慢问题的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“生产SQL语句突然变慢问题的示例分析”这篇文章吧。 ...
    99+
    2024-04-02
  • ElasticSearch突然采集不到日志问题解决分析
    目录0-前言1-解决2-延展0-前言 组内同学反馈,kibana上最新的k8s日志看不到了。由于我们是采用elk(elastic search+logstash+kibana)的方...
    99+
    2023-05-15
    ElasticSearch采集不到日志 ElasticSearch日志采集
  • oracle数据库CPU过高问题分析
    这篇文章主要讲解了“oracle数据库CPU过高问题分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“oracle数据库CPU过高问题分析”吧!一、执行一条...
    99+
    2024-04-02
  • 12C数据库连接ORA-28040的问题分析
    本篇文章给大家分享的是有关12C数据库连接ORA-28040的问题分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 ...
    99+
    2024-04-02
  • 新建立的数据库相关问题分析
    本篇文章给大家分享的是有关新建立的数据库相关问题分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。建立数据库后遇...
    99+
    2024-04-02
  • 数据库中谓词越界问题分析
    这篇文章主要介绍“数据库中谓词越界问题分析”,在日常操作中,相信很多人在数据库中谓词越界问题分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”数据库中谓词越界问题分析”的疑惑...
    99+
    2024-04-02
  • 如何解决Oracle备库宕机启动的问题
    这篇文章给大家分享的是有关如何解决Oracle备库宕机启动的问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。简介ORA-10458: standby database requ...
    99+
    2024-04-02
  • 如何分析MySQL数据库的Web安全问题
    本篇文章为大家展示了如何分析MySQL数据库的Web安全问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。数据安全是现在互联网安全非常重要一个环节。而且一旦数据出现...
    99+
    2024-04-02
  • redis宕机后数据一致性问题怎么解决
    当Redis宕机后导致数据不一致的问题,可以通过以下几种方式解决:1. 持久化机制:Redis提供了RDB和AOF两种持久化机制。R...
    99+
    2023-09-05
    redis
  • Oracle RAC一节点宕机导致另一节点HANG的问题分析
            正所谓“福无双至,祸不单行”,生产上有套2节点Oracle 11.2.0.4数据库,其中2节点因硬件故障宕机,...
    99+
    2024-04-02
  • oracle数据库CPU过高问题定位分析
    本篇内容介绍了“oracle数据库CPU过高问题定位分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、...
    99+
    2024-04-02
  • oracle数据库CPU过高问题举例分析
    本篇内容介绍了“oracle数据库CPU过高问题举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、...
    99+
    2024-04-02
  • 时序数据库TDengine写入查询的问题分析
    目录写入问题必须为每个Tag组合起一个表名Tag支撑与管理不支持乱序写入查询问题求topN的groupdownsampling和aggregation查询聚合架构写入问题 必须为每个...
    99+
    2024-04-02
  • MySQL数据库之Purge死锁问题的示例分析
    小编给大家分享一下MySQL数据库之Purge死锁问题的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Purge死锁场景说明Purge死锁说明表中存在记录(unique key) 10,20,30,40 (且有 自...
    99+
    2023-05-30
    mysql purge
  • 如何解决电脑突然断电开不了机的问题
    这篇文章将为大家详细讲解有关如何解决电脑突然断电开不了机的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。首先检查电脑的外部接线是否接好,把各个连线重新插一遍,看故障是否排除。如果故障依旧,接着打开主机...
    99+
    2023-06-28
  • 从dubbo源码分析qos-server端口冲突问题及解决
    目录什么是dubbo的qos-server呢?问题来了问题1问题2问题3 问题4总结在这分布式系统架构盛行的时代,很多互联网大佬公司开源出自己的分布式RPC系统框架,例如:...
    99+
    2023-02-17
    dubbo源码分析 qos-server端口冲突 dubbo qos-server
  • 数据库分库分表和要注意的问题
    分库 分库讲白了就是比如现在你有一个数据库服务器,数据库中有两张表分别是用户表和订单表。 如果要分库的话现在你需要买两台机子,搞两个数据库分别放在两台机子上,并且一个数据库放用户表,一个数据库放订单表。 这样存储压力就分担到两个服务器上...
    99+
    2019-08-28
    数据库分库分表和要注意的问题
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作