问题描述:
调整DB2内存参数locklist的时候,正常情况下是能够立即生效的。但这次修改却报SQL1363W,需要重新激活数据库才能生效:
db2inst1@node01:~> db2 connect to sample
Database Connection Information
Database server = DB2/LINUXX8664 10.5.8
SQL authorization ID = DB2INST1
Local database alias = SAMPLE
db2inst1@node01:~> db2 update db cfg using locklist 128000
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
SQL1363W One or more of the parameters submitted for immediate modification
were not changed dynamically. For these configuration parameters, the database
must be shutdown and reactivated before the configuration parameter changes
become effective.
db2inst1@node01:~> db2pd -d sample -dbcfg | grep -i locklist
LOCKLIST (4KB) AUTOMATIC(13504) 128000
诊断日志db2diag.log中报错如下,其中有报错“DIA8300C A memory heap error has occurred”:
2019-10-09-10.16.02.230265-240 I7643E1000 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, SQO Memory Management, SqloMemController::requestMemory, probe:50
MESSAGE : ZRC=0x8B0F0000=-1961951232=SQLO_NOMEM "No Memory Available"
DIA8300C A memory heap error has occurred.
DATA #1 : String, 28 bytes
Attempt to get memory failed
DATA #2 : unsigned integer, 8 bytes
485621760
DATA #3 : unsigned integer, 8 bytes
0
DATA #4 : String, 11 bytes
DB-SAMPLE
DATA #5 : unsigned integer, 8 bytes
3783720960
DATA #6 : unsigned integer, 8 bytes
339083264
DATA #7 : unsigned integer, 8 bytes
3942580224
DATA #8 : unsigned integer, 8 bytes
4096000000
DATA #9 : unsigned integer, 8 bytes
347865088
2019-10-09-10.16.02.285801-240 E8644E694 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, SQO Memory Management, SqloMemController::getPartitionStats, probe:10
DATA #1 : <preformatted>
Instance Memory Controller statistics.
Instance Memory Automatic: No.
Maximum size = 4000000 KB
Current size = 3850176 KB
Usage HWM = 3886144 KB
Cached memory = 339712 KB
Cached DB memory = 331136 KB
2019-10-09-10.16.02.286254-240 I9339E568 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, SQO Memory Management, SqloMemController::getPartitionStats, probe:11
DATA #1 : <preformatted>
APPL-SAMPLE - Current size : 3072 KB, HWM : 160000 KB, Cached : 1600 KB
2019-10-09-10.16.02.286630-240 I9908E570 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, SQO Memory Management, SqloMemController::getPartitionStats, probe:12
DATA #1 : <preformatted>
DBMS-db2inst1 - Current size : 112960 KB, HWM : 112960 KB, Cached : 6976 KB
2019-10-09-10.16.02.286999-240 I10479E565 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, SQO Memory Management, SqloMemController::getPartitionStats, probe:13
DATA #1 : <preformatted>
FMP_RESOURCES - Current size : 22528 KB, HWM : 22528 KB, Cached : 0 KB
2019-10-09-10.16.02.287365-240 I11045E559 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, SQO Memory Management, SqloMemController::getPartitionStats, probe:14
DATA #1 : <preformatted>
PRIVATE - Current size : 16192 KB, HWM : 16192 KB, Cached : 0 KB
2019-10-09-10.16.02.287731-240 I11605E572 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, SQO Memory Management, SqloMemController::getPartitionStats, probe:15
DATA #1 : <preformatted>
DB-SAMPLE - Current size : 3695040 KB, HWM : 3695040 KB, Cached : 331136 KB
2019-10-09-10.16.02.288098-240 I12178E592 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, SQO Memory Management, SqloMemController::getPartitionStats, probe:16
DATA #1 : <preformatted>
Aggregated stats for 3 Local Applications Sets
Current size : 384 KB
HWM : 384 KB
Reserved : 0 KB
2019-10-09-10.16.02.288500-240 I12771E592 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, lock manager, sqlpResizeLockList, probe:20
DATA #1 : <preformatted>
Unable to resize locklist heap to requested size.
Current Heap Size 64290816 New Heap Size 549909472
Database Memory 923760
2019-10-09-10.16.02.289104-240 I13364E573 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, lock manager, sqlpResizeLockList, probe:20
RETCODE : ZRC=0x820F0004=-2112946172=SQLO_MEM_SIZE "Mem Mgt invalid size"
DIA8563C An invalid memory size was requested.
2019-10-09-10.16.02.289711-240 I13938E701 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, config/install, sqlf_dynamic_db_update, probe:1661
MESSAGE : ZRC=0x8206000B=-2113535989=SQLF_DYNAMIC_FAILED
"Parameter did not change dynamically"
DATA #1 : String, 36 bytes
Error in dynamic update of parameter
DATA #2 : String, 13 bytes
Token value =
DATA #3 : unsigned integer, 4 bytes
704
2019-10-09-10.16.02.290355-240 I14640E916 LEVEL: Warning
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, config/install, sqlfUpdateDbCfg, probe:6089
MESSAGE : ZRC=0x00000553=1363
SQL1363W One or more of the parameters submitted for immediate
modification were not changed dynamically. For these configuration
parameters, the database must be shutdown and reactivated before the
configuration parameter changes become effective.
DATA #1 : <preformatted>
DB cfg update happened non-dyn resulting in 1363.
action: 5
db active: 0
this was update # 1 of 1 total updates. Token 704.
2019-10-09-10.16.02.291794-240 I15557E522 LEVEL: Event
PID : 5382 TID : 140571561682688 PROC : db2sysc 0
INSTANCE: db2inst1 NODE : 000 DB : SAMPLE
APPHDL : 0-20 APPID: *LOCAL.db2inst1.191009141525
AUTHID : DB2INST1 HOSTNAME: node01
EDUID : 19 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, config/install, sqlfLogUpdateCfgParam, probe:20
CHANGE : CFG DB SAMPLE: "Locklist" From: "14944" <automatic> To: "128000"
原因分析:
尝试修改为一个比较小的值时,会立刻生效:
db2inst1@node01:~> db2 update db cfg using locklist 1000
DB20000I The UPDATE DATABASE CONFIGURATION command completed successfully.
db2inst1@node01:~> db2pd -d sample -dbcfg | grep -i locklist
LOCKLIST (4KB) 1000 1000
结合诊断日志,查看内存使用情况:
db2inst1@node01:~> db2 get dbm cfg | grep -i instance_memory
Global instance memory (4KB) (INSTANCE_MEMORY) = 1000000
db2inst1@node01:~> db2 get db cfg | grep -i database_memory
Size of database shared memory (4KB) (DATABASE_MEMORY) = AUTOMATIC(936266)
db2inst1@node01:~> db2pd -dbptnmem
发现当前已经使用内存快达到实例内存限制了。
解决方法:
扩大instance_memory,或者想办法缩小已经使用的内存,比如减少缓冲池大小