一条sql语句导致的数据库宕机问题及分析(42天)

之前分享过一篇博文,是一条sql语句"导致"的数据库宕机,上次是另有原因,这次真碰到一个案例,而且是在重要的环境上,希望大家引以为戒。 数据库是基于Linux64的版本,版本是11.2.0.2.0,已经打了最新的psu. 数据库的访问用户数大约在1000左右,当时查看服务器的cpu已经是100%了,有大约10个进程都是cpu 100%,数据库逻辑读也是超高,一秒钟大约是接近百兆的情况,sga是12G,已用了sga的自动管理(sga_target=0), 查看内存组件时发现buffer_cache已经有shrink的迹象,而且buffer_cache的min_size还是有一点小,就在可用范围内给buffer cache 增大了几百兆的样子,生成了一个ADDM, 报告里第一条就是希望设置sga_target为一个特定的值,性能可能会有一定的提升,当时想,sga_max_size都已经是12G了,设置sga_target=12G也没有问题吧 就按照它的提示做了, alter system set sga_target=12G; 结果命令提顿了几秒钟,然后就崩出来一个end_of_communicaiton的ora错误,我感觉出问题了,已查看进程,数据库是真down掉了。 查看alert日志,发现时由于resize_sga的ora-600问题导致的,所有的在线进程都被自动给kill掉了。 然后马上和相应的team来协调,把数据库先startup了。再查看具体的信息。 alert日志如下: Thread 1 advanced to log sequence 14054 (LGWR switch)

Current log# 2 seq# 14054 mem# 0: /dbtestPR1/oracle/TEST01/redolog_A2/redo/redo02A.log

Current log# 2 seq# 14054 mem# 1: /dbtestPR1/oracle/TEST01/redolog_B2/redo/redo02B.log

Wed Apr 09 20:07:10 2014

Archived Log entry 14090 added for thread 1 sequence 14053 ID 0xb8c6d509 dest 1:

Wed Apr 09 20:40:13 2014

Errors in file /opt/app/oracle/dbtestpr1/diag/rdbms/TEST01/TEST01/trace/TEST01_mman_27182.trc (incident=360075):

ORA-00600: internal error code, arguments: [kmgsb_resize_sga_target_1], [0], [768], [4], [], [], [], [], [], [], [], []

Incident details in: /opt/app/oracle/dbtestpr1/diag/rdbms/TEST01/TEST01/incident/incdir_360075/TEST01_mman_27182_i360075.trc

Use ADRCI or Support Workbench to package the incident.

See Note 411.1 at My Oracle Support for error and packaging details.

Errors in file /opt/app/oracle/dbtestpr1/diag/rdbms/TEST01/TEST01/trace/TEST01_mman_27182.trc:

ORA-00600: internal error code, arguments: [kmgsb_resize_sga_target_1], [0], [768], [4], [], [], [], [], [], [], [], []

MMAN (ospid: 27182): terminating the instance due to error 822

Wed Apr 09 20:40:14 2014

opiodr aborting process unknown ospid (25518) as a result of ORA-1092

Wed Apr 09 20:40:14 2014

ORA-1092 : opitsk aborting process

Wed Apr 09 20:40:14 2014

Wed Apr 09 20:40:14 2014

opiodr aborting process unknown ospid (27776) as a result of ORA-1092opiodr aborting process unknown ospid (10547) as a result of ORA-1092

Wed Apr 09 20:40:14 2014

opiodr aborting process unknown ospid (7458) as a result of ORA-1092

Wed Apr 09 20:40:14 2014

Wed Apr 09 20:40:14 2014

ORA-1092 : opitsk aborting process

ORA-1092 : opitsk aborting process

Wed Apr 09 20:40:14 2014

ORA-1092 : opitsk aborting process

Wed Apr 09 20:40:14 2014

opiodr aborting process unknown ospid (30719) as a result of ORA-1092

Wed Apr 09 20:40:14 2014

ORA-1092 : opitsk aborting process

.......

ORA-1092 : opitsk aborting process

Wed Apr 09 20:40:14 2014

System state dump requested by (instance=1, osid=27182 (MMAN)), summary=[abnormal instance termination].

System State dumped to trace file /opt/app/oracle/dbtestpr1/diag/rdbms/TEST01/TEST01/trace/TEST01_diag_27176.trc

Instance terminated by MMAN, pid = 27182

查看metalink,确实有这样的一个bug. Bug 10173135 - Resize SGA_TARGET crashes instance with ORA-600 [kmgsb_resize_sga_target_1] (Doc ID 10173135.8) 而且影响的版本如下:

Product (Component)

Oracle Server (Rdbms)

Range of versions believed to be affected

Versions BELOW 12.1

Versions confirmed as being affected

11.2.0.211.2.0.111.1.0.7

Platforms affected

Generic (all / most platforms affected)

  • 11.2.0.2
  • 11.2.0.1
  • 11.1.0.7

Platforms affectedGeneric (all / most platforms affected)

真是撞到枪口上了,查看了下,在11.2.0.3.0中才修复了这个问题。 然后自我总结了下,发现sga的自动管理操作还是需要谨慎,新特性的使用也是如此,一定要有足够的把握才能使用。

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

原文发表时间:2014-04-14

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DannyHoo的专栏

开发后期在各个页面中添加友盟统计

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

2062
来自专栏乐沙弥的世界

关于undo表空间配置错误的ORA-30012

      undo表空间是Oracle体系结构的重要组成部分,为什么我们可以回滚,就是因为有它。数据库任意数据的修改都会在undo表空间里生成前镜像,一是可以...

561
来自专栏乐沙弥的世界

中小型数据库 RMAN CATALOG 备份恢复方案(三)

      在前两篇文章中描述了中小型数据库使用RMAN catalog设计备份与恢复方案,并给出了所有相关的脚本来从某种车程度上模拟Oracle Data G...

661
来自专栏乐沙弥的世界

SYSAUX表空间管理及恢复

SYSAUX表空间是在10g之后引入的一个新的表空间,主要用于减轻对SYSTEM表空间的压力而作为SYSTEM表空间的辅助表空间。

832
来自专栏乐沙弥的世界

ORA-19815,ORA-19809 :limit exceeded for recovery files

    数据库重新启动的时候,收到了ORA-19815的错误。从错误的提示来看,是由于闪回区的空间被填满导致无法成功启动。这种情形我们通常考虑的是清除归档日志,...

763
来自专栏杨建荣的学习笔记

dg broker配置的问题及分析 (r7笔记第22天)

今天在配置一个备库的时候碰到了一些问题,话说配置dg broker真没什么特别需要注意的细节了,本身已经给DBA省了很大的事儿了。 但是有时候就是会出现一些稀奇...

3654
来自专栏杨建荣的学习笔记

关于Oracle重启数据库的一个bug(r5笔记第50天)

关于drop database在oracle中是致命的操作,这个操作自己在测试环境中体验过,会完全删除数据文件,因此这个操作非常敏感但是实用性不强,不过话说过来...

3474
来自专栏杨建荣的学习笔记

11g dataguard使用总结(r5笔记第12天)

11g的dataguard相比于10g来说,最优越的特性应该算就是active dataguard了,这一点改进在很大意义上促使用户需要把数据库从10g升级到1...

2686
来自专栏小勇DW3

SpringBoot集成mybatis配置

一个有趣的现象:传统企业大都喜欢使用hibernate,互联网行业通常使用mybatis;之所以出现这个问题感觉与对应的业务有关,比方说,互联网的业务更加的复杂...

3271
来自专栏乐沙弥的世界

使用crs_profile管理RAC资源配置文件

    profile通常指配置文件,crs_profile望文生义可知,就是管理集群的配置文件。在Oraclele RAC中,所有的CRS资源存放在OCR磁盘...

673

扫码关注云+社区