memory_target设置不当导致数据库无法启动的问题(r3笔记第38天)

今天在做一个问题排查的时候碰到了另外一个有些“奇怪的”问题。 我们在测试库中已经禁用了SGA自动存储管理,结果在spfile文件里丢掉了shared_pool_size的配置 测试环境的参数类似下面的样子 sga_max_size big integer 12000M sga_target big integer 0 shared_pool_size big integer 0 db_cache_size big integer 6G pga_aggregate_target big integer 3147483648 这种配置应该是有问题的,把shared_pool_size的部分给丢掉了。结果查看当前测试库的情况,发现shared_pool多多少少的给了2G。

COMPONENT                       CURRENT_M      MIN_M       MAX_M SPECCIFIED_M LAST_OPER LAST_OPER_TYP  GRANULE_M
------------------------------ ---------- ----------  ---------- ------------ --------- ------------- ----------
shared pool                           2000        992       2000         2000 MANUAL    GROW                   16
large pool                            304        304         512          304 DEFERRED  SHRINK                16
java pool                              512        512        512          304           STATIC                 16
streams pool                            0          0           0            0           STATIC                16
DEFAULT buffer  cache                 6224       6144       6352         6144 MANUAL    SHRINK                 16
KEEP buffer cache                       0          0           0            0           STATIC                16
RECYCLE buffer  cache                    0          0          0            0           STATIC                 16
DEFAULT 2K buffer cache                 0          0           0            0           STATIC                16
DEFAULT 4K buffer  cache                 0          0          0            0           STATIC                 16
DEFAULT 8K buffer cache                 0          0           0            0           STATIC                16
DEFAULT 16K buffer  cache                0          0          0            0           STATIC                 16
DEFAULT 32K buffer cache                0          0           0            0           STATIC                16
Shared IO Pool                           0          0          0            0           STATIC                  16

如果问题到这里,可能就告一段落了。 但是我又认真看了一下,发现还是有问题。SGA有12G左右,分给shared_pool 2G,buffer_cache 6G,加上large_pool,java_pool的还不到9G,剩下的部分到哪去了? 从总体的sga的概览来看 SQL> show sga Total System Global Area 1.1742E+10 bytes Fixed Size 2251264 bytes Variable Size 5200938496 bytes --这个部分还是有很大的差别。按照目前的shared_pool+large_pool+java_pool+stream_pool<3G,剩下的2G可能就是最后的可能,没有分配的内存空间。 Database Buffers 6526337024 bytes Redo Buffers 12193792 bytes 带着这种疑问来查问题,可能你看到很多细节都是潜在的问题。 首先来看进程的情况。结果就发现按照常理进程的owner应该显示是用户名,但是现在却是进程号。 xxxxxx 6545 25419 0 12:44 pts/7 00:00:00 grep smon 3068 21040 1 0 Oct22 ? 00:01:21 ora_smon_TESTCUS1 最后确认了下,原来如果用户名超出8位的时候就会显示为进程号,不是问题。 最后在spfile中先写入shared_pool_size=4G,然后重启数据库的时候,就报错了。 SQL> startup ORA-00838: Specified value of MEMORY_TARGET is too small, needs to be at least 13920M SQL> 从开始查问题的时候就没有注意到这个参数,memory_target是在11g引入的。算是sga自动存储管理的加强版本,能够自动管理sga和pga。 如果大体了解了memory_target和报错的部分,可能一下子就明朗了。 因为当前的Memory_target的值就是12G和sga_max_size是一致的。 这个时候memory_target是12G,而同时pga是3G,那么分配给sga的部分就只有不到9G,这样的情况就相当于设置了sga_max_size=9G 这个时候重新分析下报错信息。我们把shared_pool从2G调整到了4G。这样的话memory_target的大小按照配置应该需要 shared_pool_size(4G)+db_cache(6G)+stream pool(0)+large_pool(300M)+java_pool(300M)+pga(3G)=13600M左右,和报错的部分基本符合。所以到此为止就可以判定是memory_target的设置不当导致了这个问题。 memory_target的设置还是需要重启数据库实例的。重启后查看就没有问题了。 看来很多问题都在一些细节上注意,这个memory_target从一开始就没有注意到,根据客户dba的反馈,他们是直接使用dbca来建的库,可能就是这个时候引入了这个新特性,然后在后期做了buffer size的变更。才发现这个很潜在的问题。

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

原文发表时间:2014-10-27

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏为数不多的Android技巧

Binder学习指南

毫不夸张地说,Binder是Android系统中最重要的特性之一;正如其名“粘合剂”所喻,它是系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得...

30320
来自专栏haifeiWu与他朋友们的专栏

Netty实战之第一个应用

作为一个正在Java路上摸爬滚打的小菜鸡,之前在项目中也用过Netty,也因为Netty报名阿里的中间件大赛,但终究功力太浅,最终不了了之,最近工作中又遇到了N...

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

大量redo生成的问题原因及改进(r6笔记第50天)

接着上次分享的关于数据库无法登录的原因http://blog.itpub.net/23718752/viewspace-1791089/ 其实最终还是因为在短期...

30660
来自专栏noteless

eclipse 创建maven 项目 动态web工程完整示例 maven 整合springmvc整合mybatis

如果搜索不到内容,或者有报错信息(index downloads are disabled ,search results may be incomplete)

21520
来自专栏SpringSpace.cn

RHEL 4.7 (64bit) 环境安装 GCC 4.6 测试记录 (更新至gcc-4.6.1)

Red Hat Enterprise Linux AS release 4 (Nahant Update 7)

23420
来自专栏技术翻译

使用Spring Cloud Netflix的Kotlin微服务:第2部分

在本系列的第1部分中,我们使用Kotlin介绍了Spring Cloud。我们讨论了Config Server,Discovery Server(Eureka)...

26020
来自专栏Kirito的技术分享

从Feign使用注意点到RESUFUL接口设计规范

最近项目中大量使用了Spring Cloud Feign来对接http接口,踩了不少坑,也产生了一些对RESTFUL接口设计的想法,特此一篇记录下。 Sprin...

68570
来自专栏编程坑太多

『高级篇』docker之开发课程EdgeService(16)

PS:微服务跟之前说的一样就是互相通过RPC的方式进行通信,之间有自己的数据库,只是RPC暴露接口的方式来获取其他的微服务之间的数据。

9130
来自专栏开发技术

spring-boot-2.0.3不一样系列之国际化

       针对spring boot,网上已有很多优质的系列教程,我就不再班门弄斧了(实际上是担心没别人写的好,哈哈哈!)。但是还是想蹭蹭spring bo...

54030
来自专栏Ryan Miao

SpringCloud学习5-如何创建一个服务提供者provider

14230

扫码关注云+社区

领取腾讯云代金券