2013-06-27 71 views
0

我想使用從db2查詢生成的共享庫。用於用戶定義函數的db2共享庫位置

我的共享庫依賴於boost的是,在我的機器上,是定位/usr/local/lib

當我嘗試運行使用我的函數的查詢時,我得到了錯誤:他們dosn't工作,因爲db2無法找到boost庫,即無法解析庫的位置。

如何知道db2在哪裏找到庫路徑以及我應該使用哪個環境變量?

我試圖用戶配置文件和profile.env,但沒有成功。

# userprofile 
LIBPATH=/usr/local/lib:LIBPATH 

#profile.env 
DB2ENVLIST='LIBPATH ..other stuf' 

回答

1

讓我看看,如果我正確地理解你的問題。您有C或C++外部UDF,這些UDF依賴於其他庫。如果是這樣,我覺得你應該設置DB2註冊表變量,而不是你的環境變量:

export LD_LIBRARY_PATH=/usr/local/lib:$LIBPATH # this must be in the global profile 
db2set DB2LIBPATH=$LD_LIBRARY_PATH 
db2set DB2ENVLIST="LD_LIBRARY_PATH otherstuff" 

LD_LIBRARY_PATH變量必須在實例所有者用戶和DB2的用戶的環境中設置的,因爲外部例程運行在這兩個之一。可能最好的方法是設置/ etc/profile。這應該在執行db2set命令之前完成。

使用db2set設置註冊表變量後,必須重新啓動DB2實例(db2stop force,然後db2start)。

+0

好,讓我回顧一下。我應該爲普通用戶設置LD_LIBRARY_PATH(在.bashrc中),然後我需要設置thos註冊表變量。對?當你說的時候我不明白。 1.必須位於全局配置文件中:您的意思是在/ etc/profile還是其他文件中? 2.當你說'被擁有的用戶和實例擁有的環境'時,你的意思是他們的.bashrc或其他文件在他們的db2配置文件文件夾中嗎? –

+0

太棒了!它很棒!非常感謝。 –