DB2 v8.2客戶端連接任何DB2 Server出錯:
SQL0969N There is no message text corresponding to SQL error "-2079391743" in
the message file on this workstation. The error was returned from module
"SQLEUCCM" with original tokens "".
事實上,使用客戶端instance owner運行db2 connect一切正常,當使用其它用戶source instance owner的db2profile之後,運行db2 connect出現以上錯誤,即使將此用戶加入到instance owner 的group 也是同樣錯誤。Google到問題產生的原因:
SQLEUCCM error message for DB2 - Coffee|Code : Dan Scott, Caffeinated Librarian Geek
我這裡的原因與上文有點差別,我更改了客戶端instance的參數DFTDBPATH,其默認在instance owner的HOME,我將其更改為其它路徑/db2,這個目錄的owner為root,通過group db2授權給客戶端instance owner,所有的數據庫數據文件將被創建在這個目錄下的子目錄,子目錄與instance owner 同名,雖然子目錄完全屬於instance owner,並且instance owner也是其父目錄/db2的group成員(對group成員授與了完全權限),DB2客戶端還會要求似乎不需要的權限,並報出以上錯誤。
對上面的簡單描述:
DB2 v8.2客戶端instance owner and group: db2amor:db2amor (用戶db2amor 也是group db2的成員)
DFTDBPATH與權限: /db2 root:db2 770
instance數據路徑與權限: /db2/db2amor db2amor:db2amor 775
使用其它用戶source db2amor的db2profile 之後連接數據庫出錯,即使將其加入db2amor group 成員也不行。
我的解決方法與上文也有差別,我將需要使用DB2客戶端的用戶加入DFTDBPATH 所屬group: db2(不需要加入instance owner group: db2amor)
# usermod -aG db2 USER_NAME
產生前面的問題,是因為我使用了DB2 Server instance中的客戶端。其實有個更好的方法避免上述的問題,就是創建獨立的DB2客戶端instance,無論是v8還是v9,這就根本上避免了我們不希望的權限請求。
# /opt/IBM/db2/V8.1/instance/db2icrt -s clIEnt INSTANCE_NAME