DB2 yedeklemesi "/usr/lib/libnsrdb2.so" SQL2071N ile başarısız oluyor. Neden kodu: "2"
Summary: DB2, v10.5'ten 11.5'e yükseltildi Sistemde (İşletim Sistemi) OpenSSL Sürüm 3'ün ve NMDA ile birlikte verilen OpenSSL Sürüm 1'in varlığı Sistemde OpenSSL sürüm 3 mevcut ise. db2vend işlemi yalnızca OpenSSL sürüm 3'e dayanır, ancak libnsrdb2 işlemi NMDA'da bulunan OpenSSL sürümünü yükler ...
Symptoms
DB2 yedeklemeleri, Veritabanının V10.5'ten V11.5'e yükseltilmesinin ardından aşağıdaki hatayla başarısız oluyor
Error:
DB2 backup fails with SQL2071N "/usr/lib/libnsrdb2.so". Reason code: "2"
DB2DIAG günlüklerinde aşağıdaki hata vardır.
2025-01-13-20.16.25.864739+060 E79273449E571 LEVEL: Error (OS)
PID : 29019 TID : 139807381163456 PROC : db2vend (db2logmgr.meth1 - 267 (
INSTANCE: db2prd NODE : 000
HOSTNAME: labhostPRD-00
FUNCTION: DB2 UDB, oper system services, sqloLoadModule, probe:191
CALLED : OS, -, dlopen
DATA #1 : Library name or path, 21 bytes
/usr/lib/libnsrdb2.so
DATA #2 : shared library load flags, PD_TYPE_LOAD_FLAGS, 4 bytes
0
DATA #3 : String, 92 bytes
/usr/lib/nsr/apps/lib64/libssl.so.1.1: undefined symbol: EVP_idea_cbc, version OPENSSL_1_1_0
2025-01-13-20.16.25.864904+060 I79274021E462 LEVEL: Error
PID : 29019 TID : 139807381163456 PROC : db2vend (db2logmgr.meth1 - 267 (
INSTANCE: db2prd NODE : 000
HOSTNAME: labhostPRD-00
FUNCTION: DB2 UDB, database utilities, sqluFencedVendorProcessCB::loadLibrary, probe:104
MESSAGE : ZRC=0x870F009B=-2029059941=SQLO_MOD_LOAD_FAILED
"Dynamic library load failed."
DATA #1 : String, 21 bytes
/usr/lib/libnsrdb2.so
Cause
OpenSSL sürüm 3 sistemde yüklüyse.
db2vend işlemi yalnızca OpenSSL sürüm 3'e dayanır, ancak libnsrdb2 işlemi, NMDA'da bulunan OpenSSL sürüm 1'i yükler
İşletim Sistemi OpenSSL yolu: /usr/lib64/
NMDA OpenSSL Path: /usr/lib/nsr/apps/lib64/
Aşağıda, çalışmayan bir ana bilgisayarın snippet'i yer almaktadır.
İki db2vend işlemi
labhostPRD-00:(/root)(root)#ps -ef | grep db2vend | grep -v grep
db2prd 23876 23452 0 Feb05 ? 00:00:00 db2vend (PD Vendor Process - 1) 0
db2prd 24856 23452 0 Feb11 ? 00:00:04 db2vend (db2logmgr.meth1 - 27 (PRD)) 0
PID 23876 ile ilk db2vend, işletim sistemi OpenSSL Yolundan OpenSSL V3'ü yükler
labhostPRD-00:(/root)(root)#lsof -p 23876 | grep -E "lib(ssl|crypto)"
db2vend 23876 db2prd DEL REG 8,4 51527190 /usr/lib64/libcrypto.so.3.1.4
db2vend 23876 db2prd DEL REG 8,4 51527189 /usr/lib64/libcrypto.so.1.1
db2vend 23876 db2prd DEL REG 8,4 51784225 /usr/lib64/libssl.so.3.1.4
PID 24856 ile ikinci db2vend, NMDA OpenSSL Yolundan (/usr/lib/nsr/apps/lib64/libssl.so.1.1) ve İşletim Sistemi OpenSSL Yolundan OpenSSL V1'i yükler
labhostPRD-00:(/root)(root)#lsof -p 24856 | grep -E "lib(ssl|crypto)"
db2vend 24856 db2prd mem REG 8,4 721456 50354171 /usr/lib/nsr/apps/lib64/libssl.so.1.1
db2vend 24856 db2prd mem REG 8,4 5715664 50354411 /usr/lib64/libcrypto.so.3.1.4
db2vend 24856 db2prd mem REG 8,4 3924472 50360290 /usr/lib64/libcrypto.so.1.1
db2vend 24856 db2prd mem REG 8,4 743784 50354413 /usr/lib64/libssl.so.3.1.4
OpenSSL sürümünün yukarıdaki karışıklığı, Hatanın nedenidir.NMDA OpenSSL version 1 is compiled with "IDEA encryption algorithm for EVP" but OS OpenSSL Version 1 are not.
Resolution
- Bu sorun, OpenSSL V3 ile birlikte gönderilen NMDA NMDA 19.12'de giderildi.
- OpenSSL sürüm 3'ün kaldırılması büyük olasılıkla yardımcı olacaktır, çünkü db2vend daha sonra libssl.so.1.1 ve libcrypto.so.1.1 işletim sistemi kitaplıklarını yüklemeye zorlanacaktır ve sonuç olarak, satıcı arabiriminin başlatılması NMDA ile dağıtılan kitaplıkları yüklemeye gerek kalmayacaktır
- Geçici Çözüm: Zorlamak için geçici çözüm olarak kullanılan DB2 ortam değişkeni
/usr/lib/nsr/apps/lib64/yolunu kullanarak aşağıdaki IBM belgesini kullanın. DB2LIBPATH [ibm.com]