memory_target设置不当导致数据库无法启动的问题

今天在做一个问题排查的时候碰到了另外一个有些“奇怪的”问题。
我们在测试库中已经禁用了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
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的变更。才发现这个很潜在的问题。

时间: 2024-10-02 18:44:16

memory_target设置不当导致数据库无法启动的问题的相关文章

oracle 11.1.0.7版本也会出现access$表丢失导致数据库无法启动

下面我们来看看oracle 11.1.0.7版本也会出现access$表丢失导致数据库无法启动,有需要了解的朋友可以进入看看吧. 有网友咨询数据库启动报ora-01092:ORACLE 实例终止.强制断开连接,请求帮忙处理 数据库版本 Trace file d:appadministratordiagrdbmsorclorcltraceorcl_ora_5648.trc Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 - 64b

SPFILE 错误导致数据库无法启动(ORA-01565)

--========================================== --SPFILE 错误导致数据库无法启动(ORA-01565) --==========================================   SPFILE错误导致数据库无法启动     SQL> startup     ORA-01078: failure in processing system parameters     ORA-01565: error in identifying

PostgreSQL 内存OOM控制策略导致数据库无法启动的诊断一例(如何有效避免oom)

你可能遇到过类似的数据库无法启动的问题, postgres@digoal-> FATAL: XX000: could not map anonymous shared memory: Cannot allocate memory HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded available memory, swap space, or huge pag

事物隔离级别和行日志格式设置不当导致故障案例

最近刚接手个新项目的测试平台采用了spring的事务机制,在用户认证登录时总是提示认证超时,于时查看相应的各应用服务器日志,发现报了异常: Binary logging not possible. Message: Transaction level 'READ-COMMITTED' in InnoDB is not safe for binlog mode 'STATEMENT'... ...... 前端某台应用服务器报如下错: {"returnNo":0,"listFie

一则数据库无法启动的奇怪案例分析

关于数据库的启停,以前一直认为是最简单,最没有技术含量的任务,但是接手的环境越多,越来越证明我最初的想法是错误的.数据库的启停是一个敏感操作,重启一定是有着特定的原因和需求.而且这个过程中存在这太多的可能性,很可能在同一会话窗口中,停掉数据库再次启动就会报错:很可能硬件扩容,也会导致数据库实例无法启动:这个时候重启前的准备和分析就尤为重要. 在此大体把启停中的问题归为三类,数据库无法启动,数据库无法登录,数据库宕机.我们在此主要讨论数据库无法启动的场景. 看起来很简单的一件事情,重启的过程中总是

oracle库存储问题导致数据库重启后无法正常启动恢复教程

某客户的核心数据库存储问题导致数据库重启后无法正常启动,根据客户反馈最开始在启动数据库时 报错控制文件IO错误,如下: Sun Mar 15 11:59:37 2015 Errors in file /oracle/app1/oracle/admin/xxxx/bdump/xxxx2_arc1_630876.trc: ORA-00204: error in reading (block 1, # blocks 1) of control file ORA-00202: control file:

小心DIV切换功能 不当设置会导致首页降权

很多人在搞网站优化的时候,更多的是从内容和外链出发,基本上把大部分时间花在了这两方面!不过笔者认为,对于内容和外链的建设,已经成了很多站长必备的知识,在这方面的竞争,往往是大同小异的!而一个网站优化是否获得成功,更多的体现在细节方面,比如一个网站的结构,如果出现了设置的误区,那么你再怎么提升内容的质量,再怎么建设多元化高质量的外链,那往往也是徒劳的!所以重视细节优化才是取胜的关键! 正是基于这个思想,笔者才发现了最近优化一个网站出现问题的所在,下面笔者来简单的描述一下,这个网站已经是六年的企业站

Linux系统init级别设置错误导致系统不能正常启动怎么办?

  Linux系统init级别设置错误导致系统不能正常启动怎么办? 1.在Linux启动过程中,按Esc键进入Grub界面. 2.按e修改当前Linux系统的配置. 3.选择第二行,按e键,并按如下步骤执行 1)在出现的命令行后加1(单用户模式); 2)按Enter键接收操作并后退到当前Linux配置页面; 3)按b重启Linux. 4.重启后进入Linux系统,修改/etc/inittab文件.将init级别改成你想要的,比如我在这里改成3(完整多用户模式). id:3:initdefault

oracle数据库强制关机导致数据库无法正常启动恢复例子

有客户qq找到我,说有朋友推荐,让我帮他们恢复数据库.由于强制关机后,数据库无法正常启动. 数据库recover database失败 Mon Mar 28 10:20:33 2016 ALTER DATABASE RECOVER  database  Media Recovery Start  started logmerger process Parallel Media Recovery started with 32 slaves Mon Mar 28 10:20:36 2016 Rec