2016-09-14 89 views
-5

我在執行我的Perl腳本時收到以下錯誤消息。 以下是我在編譯腳本時遇到的錯誤消息。Perl腳本無法連接到Oracle數據庫

install_driver(Oracle)的失敗:無法加載 '/xxx/usr/local/lib/perl5/site_perl/5.10.0/sun4-solaris/auto/DBD/Oracle/Oracle.so' 的模塊DBD :: Oracle:ld.so.1:perl:fatal:libclntsh.so.10.1:打開失敗:沒有這樣的文件或目錄 /xxx/usr/local/lib/perl5/5.10.0/sun4-solaris/ DynaLoader.pm line 203. at(eval 99)line 3 編譯在(eval 99)第3行的require中失敗。 也許所需的共享庫或dll未安裝在預期的位置 at/xxx/xxxx/xxxx/xxxx/XXXX/CommonOracle.pm line 71

最近在我的系統中,Oracle已經從10.2升級到了11.0。請幫我解決這個問題?我不是我係統的管理員。我是否需要更改LD_LIBRARRY_PATH?我正在使用Solaris OS。

+0

此處您可以在[請求]以及如何構建[mcve] – Aleksej

回答

1

您似乎忘記提問了。我們假設這是「我該如何解決這個問題?」

與數據庫通信需要在您的系統上安裝一些東西。

  • 您需要您正在使用的數據庫系統的客戶端庫。這將是可能位於/ usr/lib下的某個共享對象(.so)文件。

  • 您需要爲您的數據庫引擎使用Perl數據庫驅動程序(對於您的情況,這是DBD :: Oracle)。如果你從頭開始安裝(如cpancpanm命令那樣),那麼你幾乎肯定也需要上述客戶端庫的開發版本。如果您正在安裝預構建的二進制版本(Linux上的.rpm或.apt,但我不知道Solaris的等價物),那麼您將不需要這些版本。

  • 您將需要Perl DBI庫。

它在我看來就像DBD :: Oracle安裝。這意味着DBI也將被安裝。但DBD :: Oracle在查找客戶端庫時遇到了問題。這是令人驚訝的,因爲他們需要安裝DBD :: Oracle。

因此,我懷疑是不是已經安裝了Oracle客戶端庫,或者安裝了它們,但不是在DBD :: Oracle正在尋找它們的地方。

DBD :: Oracle是如何安裝的?你有一個安裝日誌,你可以檢查錯誤?

+0

感謝您的回覆。但我沒有安裝日誌。 perl模塊已安裝。我將嘗試再次檢查Perl DBI庫。如果Oracle版本升級,會影響嗎? –

+1

這不是DBI庫問題。它似乎是Oracle客戶端庫。我會嘗試重新安裝DBD :: Oracle,並看看如何。 –

0

問題已解決。庫文件路徑中缺少lib文件「libclntsh.so.10.1」。我已複製該文件,問題已解決