[DB2] ERROR [55039] [IBM][DB2/LINUXX8664] SQL0290N Table space access is not allowed.

สำหรับอันนี้เป็น Error มาจากฝั่ง WebAPI ที่ต่อกับ DB2 ครับ มันทำเว็บตายเลยครับ 555 โดยจะมี Log มาแนวๆนี้ครับ

(null) (null) ERROR 2025-04-29 12:16:11.636 (null) dsg.Service.Proxy.ADOInterceptorAsync:0 [1] - Wait for Connection [Timeout] ERROR [55039] [IBM][DB2/LINUXX8664] SQL0290N  Table space access is not allowed.
IBM.Data.Db2.DB2Exception (0x80004005): ERROR [55039] [IBM][DB2/LINUXX8664] SQL0290N  Table space access is not allowed.
   at IBM.Data.Db2.DB2Connection.HandleError(IntPtr hHandle, SQL_HANDLE hType, RETCODE retcode)
   at IBM.Data.Db2.DB2Command.ExecuteNonQueryObject(Boolean skipInitialValidation)
   at IBM.Data.Db2.DB2Command.ExecuteNonQueryObject()
   at IBM.Data.Db2.DB2Command.ExecuteNonQuery()
   at Dapper.SqlMapper.ExecuteCommand(IDbConnection cnn, CommandDefinition& command, Action`2 paramReader) in /_/Dapper/SqlMapper.cs:line 2965
   at Dapper.SqlMapper.ExecuteImpl(IDbConnection cnn, CommandDefinition& command) in /_/Dapper/SqlMapper.cs:line 656
   at Dapper.SqlMapper.Execute(IDbConnection cnn, String sql, Object param, IDbTransaction transaction, Nullable`1 commandTimeout, Nullable`1 commandType) in /_/Dapper/SqlMapper.cs:line 527
   at dsg.DAO.ADO.Utilities.dsgImplementor.Delete[T](IDbConnection connection, IDictionary`2 predicate, IDbTransaction transaction)
   at dsg.DAO.ADO.Utilities.dsgExtensions.DeleteEx[T](IDbConnection connection, IDictionary`2 predicate, IDbTransaction transaction)
   at dsg.DAO.ADO.RepositoryADO`2.Delete(TID pID)
   at dsg.Admin.Service.Impl.Deployment.ClientInfoService.DeletePendingById(Int32 pClientId)
   at Castle.Proxies.Invocations.IClientInfoService_DeletePendingById.InvokeMethodOnTarget()
   at Castle.DynamicProxy.AbstractInvocation.Proceed()
   at dsg.Service.Proxy.AbstractInterceptorAsync.DoProceed(IInvocation invocation)
   at dsg.Service.Proxy.ADOInterceptorAsync.Intercept(IInvocation invocation)

จาก Error SQL0290N Table space access is not allowed. เห็นอันนี้ก็ร้องดังๆในใจแล้ว WTF DB ลูกค้าไปทำอะไรหว่า ซึ่งลูกค้าบอกว่าเปล่า ไม่มี้

เอาจริงๆแอบกลัวเหมือนกัน แต่อยากรู้ว่าลูกค้าไปทำอะไรจริง หรือป่าว เลยไปขอ db2diag.log ของวันที่มีปัญหามาครับ รู้ Lock จาก App ว่าตายช่วงเที่ยง เลยลองไล่ db2diag.log พบว่า

  • เจอจุดที่ตายแล้วครับ ตัว DB เอง ก็ฟ้อง Error นี้เหมือนกันครับ
2025-04-29-12.12.29.987888+420 I476814317E593        LEVEL: Error
PID     : 1941                 TID : 140001853564672 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000            DB   : BFMDB
APPHDL  : 0-3330               APPID: ::ffff:192.168.0.156.49931.250429050811
UOWID   : 44                   ACTID: 1              
AUTHID  : INVEST               HOSTNAME: inv1prddb
EDUID   : 102                  EDUNAME: db2agent (BFMDB) 0
FUNCTION: DB2 UDB, runtime interpreter, sqlri_tfcls, probe:191
RETCODE : ZRC=0xFFFFFEDE=-290
          SQL0290N  Table space access is not allowed.
  • อ้าวไหนหว่าไม่ได้ทำอะไรไง Log บอกว่ามี db2 load
2025-04-29-12.16.53.750878+420 I476833480E598        LEVEL: Error
PID     : 1941                 TID : 139999165015808 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000
HOSTNAME: inv1prddb
EDUID   : 130                  EDUNAME: db2lfrm1 0
FUNCTION: DB2 UDB, database utilities, sqluCFormatter::iCleanUp, probe:2016
MESSAGE : ZRC=0x8015006D=-2146107283=SQLU_CA_BUILT
          "SQLCA has already been built"
DATA # 1 : LOADID, PD_TYPE_LOADID, 49 bytes
LOADID: 109.2025-04-29-12.16.53.410589.0 (2;1571)
DATA # 2 : File name, 10 bytes
sqluldat.C
DATA # 3 : ZRC, PD_TYPE_ZRC, 4 bytes
0x82150056

2025-04-29-12.16.53.751121+420 I476834079E1031       LEVEL: Error
PID     : 1941                 TID : 139999169210112 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000
HOSTNAME: inv1prddb
EDUID   : 132                  EDUNAME: db2lrid0 0
FUNCTION: DB2 UDB, database utilities, sqluTermRidder, probe:3758
MESSAGE : ZRC=0x8015006D=-2146107283=SQLU_CA_BUILT
          "SQLCA has already been built"
DATA # 1 : LOADID, PD_TYPE_LOADID, 49 bytes
LOADID: 109.2025-04-29-12.16.53.410589.0 (2;1571)
DATA # 2 : String, 84 bytes
Error detected, but we were not originator so not sending it back to the coordinator
DATA # 3 : SQLCA, PD_DB2_TYPE_SQLCA, 136 bytes
 sqlcaid : SQLCA     sqlcabc: 136   sqlcode: -3005   sqlerrml: 0
 sqlerrmc: 
 sqlerrp : SQLULRID
 sqlerrd : (1) 0x82150056      (2) 0x00000056      (3) 0x00000000
           (4) 0x00000000      (5) 0x00000000      (6) 0x00000000
 sqlwarn : (1)      (2)      (3)      (4)        (5)       (6)    
           (7)      (8)      (9)      (10)        (11)     
 sqlstate:      

2025-04-29-12.16.53.751177+420 I476835111E604        LEVEL: Error
PID     : 1941                 TID : 139999165015808 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000
HOSTNAME: inv1prddb
EDUID   : 130                  EDUNAME: db2lfrm1 0
FUNCTION: DB2 UDB, database utilities, sqluCFormatter::iCleanUp, probe:2019
MESSAGE : ZRC=0x82150056=-2112552874=SQLU_TERM_DIE_NOW
          "Load EDU termination requested"
DATA # 1 : LOADID, PD_TYPE_LOADID, 49 bytes
LOADID: 109.2025-04-29-12.16.53.410589.0 (2;1571)
DATA # 2 : File name, 10 bytes
sqluldat.C
DATA # 3 : ZRC, PD_TYPE_ZRC, 4 bytes
0x82150056

2025-04-29-12.16.53.751342+420 I476835716E595        LEVEL: Error
PID     : 1941                 TID : 139999169210112 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000
HOSTNAME: inv1prddb
EDUID   : 132                  EDUNAME: db2lrid0 0
FUNCTION: DB2 UDB, database utilities, sqluCRidder::iCleanUp, probe:1184
MESSAGE : ZRC=0x8015006D=-2146107283=SQLU_CA_BUILT
          "SQLCA has already been built"
DATA # 1 : LOADID, PD_TYPE_LOADID, 49 bytes
LOADID: 109.2025-04-29-12.16.53.410589.0 (2;1571)
DATA # 2 : File name, 10 bytes
sqlulrid.C
DATA # 3 : ZRC, PD_TYPE_ZRC, 4 bytes
0x82150056

2025-04-29-12.16.53.751443+420 I476836312E597        LEVEL: Error
PID     : 1941                 TID : 139999165015808 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000
HOSTNAME: inv1prddb
EDUID   : 130                  EDUNAME: db2lfrm1 0
FUNCTION: DB2 UDB, database utilities, sqluLoadEDUDriver, probe:2919
MESSAGE : ZRC=0x82150056=-2112552874=SQLU_TERM_DIE_NOW
          "Load EDU termination requested"
DATA # 1 : LOADID, PD_TYPE_LOADID, 49 bytes
LOADID: 109.2025-04-29-12.16.53.410589.0 (2;1571)
DATA # 2 : File name, 10 bytes
sqluedus.C
DATA # 3 : ZRC, PD_TYPE_ZRC, 4 bytes
0x82150056

2025-04-29-12.16.53.751543+420 I476836910E601        LEVEL: Error
PID     : 1941                 TID : 139999169210112 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000
HOSTNAME: inv1prddb
EDUID   : 132                  EDUNAME: db2lrid0 0
FUNCTION: DB2 UDB, database utilities, sqluCRidder::iCleanUp, probe:1187
MESSAGE : ZRC=0x82150056=-2112552874=SQLU_TERM_DIE_NOW
          "Load EDU termination requested"
DATA # 1 : LOADID, PD_TYPE_LOADID, 49 bytes
LOADID: 109.2025-04-29-12.16.53.410589.0 (2;1571)
DATA # 2 : File name, 10 bytes
sqlulrid.C
DATA # 3 : ZRC, PD_TYPE_ZRC, 4 bytes
0x82150056

2025-04-29-12.16.53.751732+420 I476837512E597        LEVEL: Error
PID     : 1941                 TID : 139999169210112 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000
HOSTNAME: inv1prddb
EDUID   : 132                  EDUNAME: db2lrid0 0
FUNCTION: DB2 UDB, database utilities, sqluLoadEDUDriver, probe:2919
MESSAGE : ZRC=0x82150056=-2112552874=SQLU_TERM_DIE_NOW
          "Load EDU termination requested"
DATA # 1 : LOADID, PD_TYPE_LOADID, 49 bytes
LOADID: 109.2025-04-29-12.16.53.410589.0 (2;1571)
DATA # 2 : File name, 10 bytes
sqluedus.C
DATA # 3 : ZRC, PD_TYPE_ZRC, 4 bytes
0x82150056

2025-04-29-12.16.54.828880+420 I476838110E583        LEVEL: Warning
PID     : 1941                 TID : 139999223736064 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000            DB   : BFMDB
APPHDL  : 0-3353               APPID: *LOCAL.invsins1.250429051400
UOWID   : 13                   ACTID: 1              
AUTHID  : INVEST               HOSTNAME: inv1prddb
EDUID   : 109                  EDUNAME: db2agent (BFMDB) 0
FUNCTION: DB2 UDB, database utilities, sqluRemapReturnCode, probe:0
MESSAGE : Load warning: Early error detected, rc = -2146107283, sqlcode = -3088

2025-04-29-12.16.54.898947+420 I476838694E665        LEVEL: Error
PID     : 1941                 TID : 139999223736064 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000            DB   : BFMDB
APPHDL  : 0-3353               APPID: *LOCAL.invsins1.250429051400
UOWID   : 13                   ACTID: 1              
AUTHID  : INVEST               HOSTNAME: inv1prddb
EDUID   : 109                  EDUNAME: db2agent (BFMDB) 0
FUNCTION: DB2 UDB, database utilities, sqluReportErrToDiag, probe:0
DATA # 1 : String, 135 bytes
LOADID: 109.2025-04-29-12.16.53.410589.0 (2;1571)
Error loading partition. , -2146107283, (nil), Detected in file:sqluvtld.C, Line:4345

2025-04-29-12.16.54.899044+420 I476839360E550        LEVEL: Severe
PID     : 1941                 TID : 139999223736064 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000            DB   : BFMDB
APPHDL  : 0-3353               APPID: *LOCAL.invsins1.250429051400
UOWID   : 13                   ACTID: 1              
AUTHID  : INVEST               HOSTNAME: inv1prddb
EDUID   : 109                  EDUNAME: db2agent (BFMDB) 0
FUNCTION: DB2 UDB, database utilities, sqluLoadPartition, probe:4340
MESSAGE : Load Error: Error loading partition.

2025-04-29-12.16.54.899095+420 I476839911E665        LEVEL: Error
PID     : 1941                 TID : 139999223736064 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000            DB   : BFMDB
APPHDL  : 0-3353               APPID: *LOCAL.invsins1.250429051400
UOWID   : 13                   ACTID: 1              
AUTHID  : INVEST               HOSTNAME: inv1prddb
EDUID   : 109                  EDUNAME: db2agent (BFMDB) 0
FUNCTION: DB2 UDB, database utilities, sqluReportErrToDiag, probe:0
DATA # 1 : String, 135 bytes
LOADID: 109.2025-04-29-12.16.53.410589.0 (2;1571)
Error loading partition. , -2146107283, (nil), Detected in file:sqluvtld.C, Line:1257

2025-04-29-12.16.54.970344+420 I476840577E557        LEVEL: Severe
PID     : 1941                 TID : 139999223736064 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000            DB   : BFMDB
APPHDL  : 0-3353               APPID: *LOCAL.invsins1.250429051400
UOWID   : 13                   ACTID: 1              
AUTHID  : INVEST               HOSTNAME: inv1prddb
EDUID   : 109                  EDUNAME: db2agent (BFMDB) 0
FUNCTION: DB2 UDB, database utilities, sqlu_register_table_load, probe:1253
MESSAGE : Load Error: Error loading partition.

2025-04-29-12.16.54.970515+420 I476841135E596        LEVEL: Warning
PID     : 1941                 TID : 139999223736064 PROC : db2sysc 0
INSTANCE: invsins1             NODE : 000            DB   : BFMDB
APPHDL  : 0-3353               APPID: *LOCAL.invsins1.250429051400
AUTHID  : INVEST               HOSTNAME: inv1prddb
EDUID   : 109                  EDUNAME: db2agent (BFMDB) 0
FUNCTION: DB2 UDB, database utilities, sqluvtld_route_in, probe:1616
DATA # 1 : LOADID, PD_TYPE_LOADID, 49 bytes
LOADID: 109.2025-04-29-12.16.53.410589.0 (2;1571)
DATA # 2 : String, 25 bytes
Completed LOAD operation.

สำหรับใครที่ไม่รู้ว่า Path db2diag.log อยู่ไหน ลองคำสั่งนี้หาได้ครับ db2 get dbm cfg | grep DIAGPATH ที่เครื่อง DB Server ครับ

หลังจากรู้แล้วว่าคำสั่ง Load ก่อนให้เกิดปัญหาเจ้า SQL0290N Table space access is not allowed ต่อไปก็มาตรวจ Tablespace ครับ ว่าแต่ละตัวมีสถานะเป็นอย่างไร

  • ตรวจสถานะ table space
db2 LIST TABLESPACES SHOW DETAIL
  • จากนั้นดู State ของ table space ครับ โดยถ้าไม่ใช่ 0x0000
State                                = 0x0000
   Detailed explanation:
     Normal
อันนี้ผิดปกติ 0x0020
  • ต้องลองมาหาดูกันต่อครับว่า 0x0020 ถ้าดูจาก doc ของ db2 จะเป็นตัว Backup Pending

การแก้ไข ทำได้ 2 วิธีครับ

  • Backup DB
db2 backup database [your_database_name]
  • Backup เฉพาะ Table Space
db2 backup database [your_database_name] tablespace([tablespace_name])

จากนั้นลองรัน db2 LIST TABLESPACES SHOW DETAIL แล้วตรวจสอบ State ของ table space ครับ ต้องเป็น 0x0000

สุดท้ายลอง Restart Container ของ App Server (Web API) จบปิดเคสครับ

Reference


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts sent to your email.