DB2中幾種遇到的SQL1032N出錯的解決
2024-09-06 23:58:05
供稿:網友
在使用db2以來,碰到了幾次出現提示sql1032n錯誤,每次出錯時出錯信息大概如下:
11/21/2004 22:15:33 0 0 sql1042c 發生意外的系統錯誤。
sql1032n 未發出啟動數據庫管理器的命令。 sqlstate=57019。
每次出現問題后,都到網上找了很多資料,也問了許多人,費了些力才搞定的。幾次出錯的原因和解決方法都不盡相同,解決后我也只做了個簡單的記錄。一直想把它們寫下來,方便方便后來也遇到同樣問題,跟我一樣到處查找的人,中間也寫了一些廢話,比如我如何查找錯誤,甚至于作了哪些無用功。
第一種sql1032n出錯,是某天db2的實例突然無法啟動了,用db2start就提示大概如下的出錯信息:
12/30/2004 11:28:39 0 0 sql1042c 發生意外的系統錯誤。
sql1032n 未發出啟動數據庫管理器的命令。 sqlstate=57019。
初次遇到這種問題,還以為會不會是數據庫沒起來,情急之下什么命令比如激活數據庫只類的,都拿來試了試,實例都起不來,當時運行這些命令,肯定都是不行的了。
后來突然發現,在開啟機器的時候,提示有個服務出錯了沒啟動,由此推想應該就是在window服務里設置為自動啟動的db2實例服務沒有正常啟動,我在服務里面手動啟動它,提示這樣的錯誤:
windows不能在本地計算機啟動db2-db2-0.有關更多信息,查閱系統事件日志.并參考特定服務代碼-8000.
查看事件管理器,有這樣的記錄:
db2-db2-0服務因4294959296服務性錯誤而停止.來源service control 事件id:7024
做了這么多,全都是無用功,只限于知道了服務沒起來,等于沒找。
之后通過各方詢問,終于找到了原因:license到期了。
在db2cmd界面下運行db2licm -l,可以很明顯的看到許可證已經過期了。
知道原因所在了,剩下的,就是自己想辦法去解決這個問題了。
小結:直到現在,在有些論壇中,還很經??吹接腥税l這種帖子來問,至少我在兩個月內就碰到了三次這種帖子。所以,如果不是可以確定已經有永久授權的情況下,發生這種情況,用db2licm -l查一下,也不算壞事。
還有一種情況,跟前面的差不多
也是在啟動實例的時候出現如上的sql1032n錯誤。在windows nt服務中無法啟動db2-db0服務,同時提示:
出錯1069,登陸失敗錯誤。
這個錯誤比較簡單,是用來啟動服務的用戶名或密碼錯誤。只需要在服務的屬性中,選擇登陸選項卡,選擇用戶,并填好密碼,重新啟動服務就可以了。
小結:這種情況,一般發生在切換用戶登陸nt系統或者更改了db2用戶的密碼的情況下。
第三種情況是這樣的:
最開始,是突然db2的客戶端連接不上server了,提示如下:
c:/documents and settings/administrator>db2 connect to fjdldw user install using install3211
sql30081n 檢測到通信錯誤。正在使用的通信協議:"tcp/ip"。正在使用的通信api:
"sockets"。檢測到錯誤的位置:"10.142.12.1"。檢測到錯誤的通信函數:"connect"。協
議特定的錯誤代碼:"10061"、"*"、"*"。 sqlstate=08001
我本來還以為真是什么tcp/ip協議的問題,去查找了很多與sql30081n錯誤相關的信息,都無法解決問題。后來到了在服務器上檢查,發現db2實例未起來。
用db2start命令,仍是提示:
d:/program qllib/bin>db2start
12/30/2004 11:28:39 0 0 sql1042c 發生意外的系統錯誤。
sql1032n 未發出啟動數據庫管理器的命令。 sqlstate=57019
用db2 get dbm cfg查看配置文件,因未作過其他操作,所以沒有什么異常
查看相應實例下的db2diag.log文件,摘取真正有用的部分出錯日志:
failed to create the memory segment used for communication with fenced routines. if re-starting db2, ensure no db2fmp processes were on the instance prior to start. otherwise, you can ajust this value through db2_fmp_comm_heapsz db2set value, or by decreasing your aslheapsz setting.
依據ensure no db2fmp processes were on the instance prior to start,將任務管理器里的db2fmp進程全部殺掉,然后重新啟動實例。db2start,ok!
小結:后來查了一查,db2fmp進程用于執行受保護的存儲過程,或者自定義函數。這次出錯的原因,一直沒有弄清楚。但是,通過這次解決,可以說明一點,出了錯誤,查查db2diag.log文件,總是不會錯的。^_^