問題解決:Db2修改locklist不能立即生效(SQL1363W)原因分析

問題描述:

調整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,或者想辦法縮小已經使用的內存,比如減少緩衝池大小

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章