DB2内存分配不足
1、现象、问题描述
在我们自己搭建的DB2环境上经常出现连库失败的现象。
PIM-01 /home/db2inst1> db2 connect to testdb
SQL1084C Shared memory segments cannot be allocated. SQLSTATE=57019
导致测试工作被阻塞。
2、关键过程、根本原因分析
首先查看DB2运行日志db2diag.log, 只是打印出普通的内存分配失败信息,并没有太多的详细信息。
DIA8305C Memory allocation failure occurred.
2010-04-12-11.08.59.468786+480 I21014543E435 LEVEL: Severe
PID : 7346 TID : 47020825989792PROC : db2agent (WPIM) 0
INSTANCE: db2inst1 NODE : 000
APPHDL : 0-478 APPID: AC11C42A.J19D.100412030902
AUTHID : DB2INST1
FUNCTION: DB2 UDB, base sys utilities, sqleSubsequentConnect, probe:101
DATA #1 : Hexdump, 4 bytes
0x00007FFFD0099498 : 0500 0F85 ....
2010-04-12-11.09.21.392400+480 I21014979E852 LEVEL: Warning
PID : 7373 TID : 47020825989792PROC : db2agent (TESTDB) 0
INSTANCE: db2inst1 NODE : 000
APPHDL : 0-480 APPID: *LOCAL.db2inst1.100412030921
AUTHID : DB2INST1
FUNCTION: DB2 UDB, base sys utilities, sqleFirstConnect, probe:1516
MESSAGE : ZRC=0x850F0005=-2062614523=SQLO_NOSEG
"No Storage Available for allocation"
DIA8305C Memory allocation failure occurred.
DATA #1 : String, 286 bytes
Failed to allocate the desired database shared memory set.
Check to make sure the configured DATABASE_MEMORY + overflow
does not exceed the maximum shared memory on the system.
Attempting to start up with only the system buffer pools.
Desired database shared memory set size is (bytes):
DATA #2 : unsigned integer, 8 bytes
104857600
2010-04-12-11.09.21.394095+480 I21015832E767 LEVEL: Severe
PID : 7373 TID : 47020825989792PROC : db2agent (TESTDB) 0
INSTANCE: db2inst1 NODE : 000
APPHDL : 0-480 APPID: *LOCAL.db2inst1.100412030921
AUTHID : DB2INST1
FUNCTION: DB2 UDB, base sys utilities, sqleFirstConnect, probe:1718
MESSAGE : ZRC=0x850F0005=-2062614523=SQLO_NOSEG
"No Storage Available for allocation"
DIA8305C Memory allocation failure occurred.
DATA #1 : String, 202 bytes
Failed to allocate the minimum possible database shared memory set.
There is insufficient system resources to allocate the database
shared memory set.
Minimum database shared memory set size is (bytes):
DATA #2 : unsigned integer, 8 bytes
104857600
2010-04-12-11.09.21.431343+480 I21016600E488 LEVEL: Severe
PID : 7373 TID : 47020825989792PROC : db2agent (TESTDB) 0
INSTANCE: db2inst1 NODE : 000
APPHDL : 0-480 APPID: *LOCAL.db2inst1.100412030921
AUTHID : DB2INST1
FUNCTION: DB2 UDB, base sys utilities, sqleFirstConnect, probe:20
RETCODE : ZRC=0x850F0005=-2062614523=SQLO_NOSEG
"No Storage Available for allocation"
DIA8305C Memory allocation failure occurred.
经过对日志的初步分析,这种情况一般是内存不配和合理造成。一般是数据库的共享内存分配过大,导致超出系统的阀值,分配不到足够的内存来启动数据库,所以只需要将数据库的共享内存改小就可以了。数据库的共享内存主要由主缓冲池、隐藏缓冲池、LOCKLIST、CATALOG_CACHE、包高速缓存、共享排序内存、数据库堆、实用程序堆组成。
查看当前数据库的配置信息,可是现在数据库又连接不上怎么办,其实可以使用db2 get db cfg for testdb,命令来查看数据库当前配置,发现数据库的当前配置APPGROUP_MEM_SZ 配置为30000,该参数明显过大,将参数设置为2000,重新连接数据库正常。
3、结论、解决方案及效果
在解决类似的问题时,应当看清楚是什么内存不能分配导致数据库连接失败。所以需要对DB2的内存结构有一个的了解。DB2中主要包括4中内存:实例共享内存、数据库共享内存、应用组共享内存、代理私有内存。
根据不同的内存调整相应的参数来将数据库启动起来。
4、经验总结预防措施和规范建议
在数据库的参数配置时,一定要注意,参数配置过大或是大小,都会产生意想不到的后果,影响大家的工作进度。防止对数据库的参数调整实测,每次在调整时只调整一个参数,通过不断的观察来解决一个合适的参数值。参数应当根据物理机的实际情况来分配参数。
5、备 注
无
- 大小: 44.6 KB
分享到:
相关推荐
对DB2的内存分配描述的很详细,大家可以下载过去学习学习。
可以削减分配给文件缓存的内存,并转给发出请求的进程,这会减少被缓冲的数据量;但是,读写请求仍然会经过这个更小的文件缓存。 三、内存使用的例子 使用 Linux 的 free 命令可以显示系统中的内存使用情况。该...
本文将深入探讨DB2内存的基本原理,特别是针对32位系统的一些限制,以及在不同操作系统环境下的内存管理差异。 首先,DB2的内存结构分为四个主要部分:实例共享内存、数据库共享内存、应用程序组共享内存和代理私有...
### DB2内存模型 #### 概述 IBM DB2 是一款功能强大的企业级数据库管理系统,其内存管理模型在不同版本间经历了显著的变化和发展。本文旨在深入解析DB2 V8、V9 及 V9.5 版本中的内存管理机制,并重点探讨自调优...
1. **数据缓冲池(Buffer Pool)**:这是DB2内存模型的核心部分,用于存储从磁盘读取的数据页。数据缓冲池通过缓存最近访问的数据来减少I/O操作,提高查询性能。DB2会根据配置自动管理缓冲池大小,并通过LRU(Least ...
### DB2内存管理知识点 #### 实验目标与背景 本实验旨在通过具体操作加深对DB2内存管理机制的理解。DB2作为一款强大的企业级数据库管理系统,其内存管理机制对于优化数据库性能至关重要。实验中,我们将重点掌握...
DB2自调优内存功能是一项高级内存管理技术,它能够根据应用程序的需求动态调整DB2内存的分配情况,从而提高数据库性能。这一特性允许DB2自动地在不同的内存使用者之间重新分配内存资源,包括排序、包缓存、锁定列表...
三、DB2内存结构 进程与内存管理密切相关。DB2使用私有地址空间(PAS)和共享地址空间(SAS)来组织内存。PAS包含每个SQL进程的私有内存,用于存储执行计划、数据缓冲等。SAS是所有进程共享的,用于存储全局信息,如...
5. **创建数据库**:使用DB2控制台或者命令行工具创建数据库实例,指定存储位置、内存分配、表空间等参数。 6. **数据库操作**:学会使用DB2命令行界面或管理工具进行数据操作,包括查询、插入、更新、删除等。 7....
DB2支持多种内存管理策略,其中包括允许SMS(Shared Memory Segments)进行多页分配。这可以通过编辑`/opt/IBM/db2/V8.1/cfg/db2ln`来实现。 #### 九、添加DB2服务端口 **第八步:添加DB2服务端口** DB2需要一个...
在设计小型数据仓库时,DB2数据库系统的运用是一个重要的环节,它涉及到表空间设计、内存分配、并行处理以及备份策略等多个方面。以下将详细介绍各个方面的知识。 首先,表空间设计是数据仓库设计的关键步骤,它...
1. **动态内存分配**:DB2支持动态调整内存使用量,可以根据实际工作负载自动优化内存分配,提高资源利用率。 2. **SQL缓冲池调整**:根据数据库的工作负载特性调整SQL缓冲池的大小,可以有效提高查询性能。 3. **...
1. `db2授权`(db2 grant):为用户或角色分配数据库对象的访问权限。 2. `db2撤销`(db2 revoke):取消用户的特定权限。 3. `db2sec`:用于管理用户、角色和安全策略。 七、日志管理 1. `db2logext`:提取日志...
3. 内存调优:调整数据库缓存和内存分配,提升系统响应速度。 六、DB2安全与备份恢复 1. 用户管理:创建和管理数据库用户,设定权限级别。 2. 数据备份:理解DB2的备份机制,包括完整备份、增量备份和差异备份。 3....
你需要熟悉如何创建和管理用户,分配权限,以及如何使用SQL级别的权限语句,如GRANT和REVOKE。 此外,试题可能还会涵盖故障诊断和问题解决。这包括日志分析,错误代码的理解,以及如何使用DB2诊断工具,如db2pd和...
2. 性能调优:根据业务需求,进行数据库性能优化,如调整内存分配、索引设计等。 3. 监控与维护:定期检查数据库运行状态,执行备份和维护任务。 总之,DB2的图形化安装为用户提供了便捷的安装体验,但安装过程中仍...
而实例级别参数则影响整个DB2实例的运行环境,包括内存分配、I/O操作等。正确配置这些参数,可以避免常见的性能瓶颈,如磁盘I/O争用、CPU利用率过高、内存不足等问题。 ### 关键的DB2性能参数详解 #### 缓冲池...
在“DB2数据库调整数据库性能”部分,您将学习如何优化查询执行、调整内存分配、创建和使用索引,以及监控和分析数据库性能。通过性能调优,可以减少响应时间,提升系统吞吐量,满足业务需求。这包括理解SQL执行计划...
这通常涉及到数据库的存储结构、内存分配、并发控制以及数据恢复策略等多个方面。数据库管理员还需了解如何利用DB2提供的各种管理工具,比如命令行处理器(CLP)、图形界面工具(Control Center)等,以有效地管理...