数据库突然宕机无法open的问题及解决

简介: 测试的数据库有一天突然宕机,然后无法正常open了,这个问题虽然过去了一段时间,也在这儿总结一把。 从alert日志中的信息如下。 Fri Jan 10 16:09:42 2014 Archived Log entry 6837 added for thr...
测试的数据库有一天突然宕机,然后无法正常open了,这个问题虽然过去了一段时间,也在这儿总结一把。
从alert日志中的信息如下。
Fri Jan 10 16:09:42 2014
Archived Log entry 6837 added for thread 1 sequence 6863 ID 0x19db56aa dest 1:
Fri Jan 10 16:12:59 2014
Errors in file /oravl01/oracle/adm/FETABP2/diag/rdbms/fetabp2/FETABP2/trace/FETABP2_lgwr_2432.trc:
ORA-19502: write error on file "/oravl04/oradata/FETABP2/cntrl_1.dbf", block number 1191 (block size=16384)
ORA-27061: waiting for async I/Os failed
Linux-x86_64 Error: 28: No space left on device
Additional information: -1
Additional information: 131072
LGWR (ospid: 2432): terminating the instance due to error 19502
Fri Jan 10 16:13:01 2014
System state dump requested by (instance=1, osid=2432 (LGWR)), summary=[abnormal instance termination].
System State dumped to trace file /oravl01/oracle/adm/FETABP2/diag/rdbms/fetabp2/FETABP2/trace/FETABP2_diag_2422.trc
Non critical error ORA-48913 caught while writing to trace file "/oravl01/oracle/adm/FETABP2/diag/rdbms/fetabp2/FETABP2/trace/FETABP2_diag_2422.trc"
Error message: ORA-48913: Writing into trace file failed, file size limit [5242880] reached
Writing to the above trace file is disabled for now on...
Instance terminated by LGWR, pid = 2432
Fri Jan 10 16:32:32 2014
从上可以看到,数据库遇到了io问题,并且空间也不够了,直接宕机了。

先mount上再说,别直接拿过来就open,可能一些恢复问题让自己的误操作弄的更复杂了。如果生产环境,那影响就更大了。需要先做详细的判断再动手。

由于这个是测试环境先来演示一下错误。

alter database open
Errors in file /oravl01/oracle/adm/FETABP2/diag/rdbms/fetabp2/FETABP2/trace/FETABP2_ora_4780.trc:
ORA-10873: file 1 needs to be either taken out of backup mode or media recovered
ORA-01110: data file 1: '/oravl04/oradata/FETABP2/SYSTEM_1.dbf'
ORA-10873 signalled during: alter database open...
Fri Jan 10 17:02:26 2014

查看数据库状态。
SQL> select status from v$instance;

STATUS
------------
MOUNTED

查看数据文件的scn情况
SQL> select file#,checkpoint_change# from v$datafile;
     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1         1.3605E+13
         2         1.3605E+13
         3         1.3605E+13
         4         1.3605E+13
         5         1.3605E+13
         6         1.3605E+13
         7         1.3605E+13
         8         1.3605E+13
         9         1.3605E+13
        10         1.3605E+13
        11         1.3605E+13

11 rows selected.
显示不清楚,先格式化再看看。
SQL> col checkpoint_change# format 99999999999999999
SQL> /

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1     13605259062393
         2     13605259062399
         3     13605259062404
         4     13605259062411
         5     13605259062416
         6     13605259062422
         7     13605259062411
         8     13605259062411
         9     13605259062411
        10     13605259062411
        11     13605259062411

11 rows selected.
可以看到有很多不一致。
查看数据库文件头的scn情况,情况类似。
SQL> select file#,checkpoint_change# from v$datafile_header;
     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1     13605259062393
         2     13605259062399
         3     13605259062404
         4     13605259062411
         5     13605259062416
         6     13605259062422
         7     13605259062411
         8     13605259062411
         9     13605259062411
        10     13605259062411
        11     13605259062411
如果是这个状态,可能是有对数据库做了什么其他的操作,查看热备份的情况
这下揪到问题了。
SQL> select * from v$backup;
     FILE# STATUS                CHANGE# TIME
---------- ------------------ ---------- ---------
         1 ACTIVE             1.3605E+13 08-JAN-14
         2 ACTIVE             1.3605E+13 08-JAN-14
         3 ACTIVE             1.3605E+13 08-JAN-14
         4 ACTIVE             1.3605E+13 08-JAN-14
         5 ACTIVE             1.3605E+13 08-JAN-14
         6 ACTIVE             1.3605E+13 08-JAN-14
         7 ACTIVE             1.3605E+13 08-JAN-14
         8 ACTIVE             1.3605E+13 08-JAN-14
         9 ACTIVE             1.3605E+13 08-JAN-14
        10 ACTIVE             1.3605E+13 08-JAN-14
        11 ACTIVE             1.3605E+13 08-JAN-14

从日志里面翻看热备份的情况,连续好几天都没有end backup的命令出现,可见io的那个问题和这个也有一定的关系。
先修复一下。
用下面的sql生成修复语句。
select 'alter tablespace '||name|| ' end backup;'  from v$tablespace where ts# in (select ts# from v$datafile where file# in (select file# from v$backup));
生成的命令如下。
alter tablespace system end backup;
.....

修复了一部分,查看备份表。可以看到好多状态都发生了改变。
SQL> select * from v$backup;

     FILE# STATUS                CHANGE# TIME
---------- ------------------ ---------- ---------
         1 NOT ACTIVE         1.3605E+13 08-JAN-14
         2 NOT ACTIVE         1.3605E+13 08-JAN-14
         3 ACTIVE             1.3605E+13 08-JAN-14
         4 NOT ACTIVE         1.3605E+13 08-JAN-14
         5 NOT ACTIVE         1.3605E+13 08-JAN-14
         6 NOT ACTIVE         1.3605E+13 08-JAN-14
         7 NOT ACTIVE         1.3605E+13 08-JAN-14
         8 NOT ACTIVE         1.3605E+13 08-JAN-14
         9 NOT ACTIVE         1.3605E+13 08-JAN-14
        10 NOT ACTIVE         1.3605E+13 08-JAN-14
        11 NOT ACTIVE         1.3605E+13 08-JAN-14
11 rows selected.

修复完成后,可以看到状态都是not active的了。
SQL> select * from v$backup;

     FILE# STATUS                CHANGE# TIME
---------- ------------------ ---------- ---------
         1 NOT ACTIVE         1.3605E+13 08-JAN-14
         2 NOT ACTIVE         1.3605E+13 08-JAN-14
         3 NOT ACTIVE         1.3605E+13 08-JAN-14
         4 NOT ACTIVE         1.3605E+13 08-JAN-14
         5 NOT ACTIVE         1.3605E+13 08-JAN-14
         6 NOT ACTIVE         1.3605E+13 08-JAN-14
         7 NOT ACTIVE         1.3605E+13 08-JAN-14
         8 NOT ACTIVE         1.3605E+13 08-JAN-14
         9 NOT ACTIVE         1.3605E+13 08-JAN-14
        10 NOT ACTIVE         1.3605E+13 08-JAN-14
        11 NOT ACTIVE         1.3605E+13 08-JAN-14

再次查看scn的情况。
SQL> select file#,checkpoint_change# from v$datafile
  2  
SQL> /

     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1     13607479649688
         2     13607479649688
         3     13607479649688
         4     13607479649688
         5     13607479649688
         6     13607479649688
         7     13607479649688
         8     13607479649688
         9     13607479649688
        10     13607479649688
        11     13607479649688
查看数据文件头的情况。
SQL> select file#,checkpoint_change# from v$datafile_header;
     FILE# CHECKPOINT_CHANGE#
---------- ------------------
         1     13607479649688
         2     13607479649688
         3     13607479649688
         4     13607479649688
         5     13607479649688
         6     13607479649688
         7     13607479649688
         8     13607479649688
         9     13607479649688
        10     13607479649688
        11     13607479649688
确认没问题了,打开数据库。
SQL> alter database open;

Database altered.



目录
相关文章
|
存储 运维 监控
百万指标,秒级查询,零宕机——时序数据库 TDengine 在 AIOps 中的硬核实战
本篇文章详细讲述了七云团队在运维平台中如何利用 TDengine 解决海量时序数据存储与查询的实际业务需求。内容涵盖了从数据库选型、方案落地到业务挑战及解决办法的完整过程,特别是分享了升级 TDengine 3.x 时的实战经验,给到有需要的小伙伴参考阅读。
741 1
|
人工智能 物联网 大数据
解密时序数据库的未来:TDengine Open Day技术沙龙精彩回顾
在数字化时代,开源已成为推动技术创新和知识共享的核心力量,尤其在数据领域,开源技术的涌现不仅促进了行业的快速发展,也让更多的开发者和技术爱好者得以参与其中。随着物联网、工业互联网等技术的广泛应用,时序数据库的需求愈发强烈,开源的兴起更是为这一技术的创新与普及提供了强有力的支持。
267 3
|
SQL 安全 Devops
一个简单的代码拼写错误导致17个生产数据库被删!微软Azure DevOps宕机10小时始末
一个简单的代码拼写错误导致17个生产数据库被删!微软Azure DevOps宕机10小时始末
312 0
|
消息中间件 Java 数据库
面试题:如何保证三个数据库之间的数据一致性,如服务突然宕机
面试题:如何保证三个数据库之间的数据一致性,如服务突然宕机
435 0
|
存储 运维 监控
分布式数据库HBase的重要机制和原理的宕机恢复和故障处理
HBase是一个分布式数据库系统,支持高可用性、高性能和高伸缩性。在分布式环境中,数据的分布式存储和管理是非常重要的。HBase通过分布式存储和管理数据来实现高可用性和高性能。同时,HBase还提供了一些重要的机制和原理来支持宕机恢复和故障处理。
823 1
|
编解码 数据库 Python
pycharm文件位置,数据库–关于truncate和delete的区别,deletewith open()的使用方法
pycharm文件位置,数据库–关于truncate和delete的区别,deletewith open()的使用方法
|
存储 SQL 消息中间件
Redis的KEYS命令引起RDS数据库雪崩,RDS发生两次宕机,造成几百万的资金损失
Redis的KEYS命令引起RDS数据库雪崩,RDS发生两次宕机,造成几百万的资金损失
588 0
|
关系型数据库 MySQL 数据库

热门文章

最新文章