2012-07-10 328 views
17

有人能指導我如何安裝Perl DBD::Oracle模塊嗎?Perl DBD :: Oracle模塊安裝

這是我迄今所做的:

  • 平臺:RHEL 5.8的64位
  • Perl安裝DBI包
  • 安裝Oracle即時客戶端爲Linux 64位(巴斯+ SDK + sqlplus的組件對於即時客戶
  • 設置了正確的$ORACLE_HOME$LD_LIBRARY_PATH
  • 然後當我做perl Makefile.pl它失敗次Ë以下錯誤:

    I'm having trouble finding your Oracle version number... trying harder 
    
    WARNING: I could not determine Oracle client version so I'll just 
    default to version 8.0.0.0. Some features of DBD::Oracle may not work. 
    Oracle version based logic in Makefile.PL may produce erroneous results. 
    You can use "perl Makefile.PL -V X.Y.Z" to specify a your client version. 
    
    Oracle version 8.0.0.0 (8.0) 
    DBD::Oracle no longer supports Oracle client versions before 9.2 
    Try a version before 1.25 for 9 and 1.18 for 8! at Makefile.PL line 271. 
    
  • 即時客戶端版本11.1.0

  • DBD::Oracle版本是1.44

如果你已經與Oracle即時客戶端安裝成功,那麼請你讓我知道我錯過了什麼?

是否可以在不使用Oracle即時客戶端的情況下安裝DBD::Oracle

回答

37
  • 安裝Perl DBI模塊($ yum install perl-DBI
  • 手動安裝下面的第三RPM包的Oracle即時客戶端(從Instant Client Downloads for Linux x86-64

    oracle-instantclient11.2-basic-11.2.0.3.0-1 
    oracle-instantclient11.2-devel-11.2.0.3.0-1 
    oracle-instantclient11.2-sqlplus-11.2.0.3.0-1 
    

我使用64位Linux機器,所以選擇您的RPM文件名相應。

  • 低於設定的變量:

    LD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/lib 
    ORACLE_HOME=/usr/lib/oracle/11.2/client64 
    

    MacOS的用戶將需要:

    DYLD_LIBRARY_PATH=/usr/lib/oracle/11.2/client64/ 
    

    同時添加ORACLE_HOMEPATH變量。

  • 下載DBD ::甲骨文CPAN

  • 解壓模塊和運行,下面給出命令序列:

    perl Makefile.PL 
    make 
    make install 
    

DONE!

我遇到的問題是由於錯誤的LD_LIBRARY_PATH。我已將其設置爲/usr/lib/oracle/11.2/client64,而正確的值爲/usr/lib/oracle/11.2/client64/lib

當然,這對於像我這樣的新手來說是一個很好的學習。

5

您還可以閱讀我的文章How to install DBD::Oracle,其中包含安裝DBD :: Oracle CPAN模塊所需的所有步驟,這不是一個簡單的安裝。目的是減少頭痛並將其變爲可重複的過程。

+0

@gerardw:感謝報告,我只是刪除了最後一個斜線,也許是因爲發生了GitHub頁面升級到Jekyll3和鏈接格式的變化。 其實我不會假裝炒作那個鏈接,並且 我沒有用我的網站賺錢,我喜歡分享我的知識回饋社區,我確信文章 可以幫助其他掙扎的人(像我:)試圖安裝DBD :: Oracle。 – 2016-02-07 20:36:30

+0

您有可能爲12.x更新該文檔嗎? 12。2至少不包含.mk文件,而「演示」則是構建投訴的內容。爲什麼CPAN模塊不適用於比2014年更新的任何事情? – Otheus 2017-07-19 18:11:12

+0

嗨@Otheus我很抱歉,我最近沒有使用Oracle,所以我沒有Oracle 12來測試它。文章是爲Oracle 11g編寫的,但是,我不明白您提到的.mk文件,因爲文章說明中沒有提及。你到達了哪篇文章的指導步驟?你得到了哪個錯誤?也許我也可以幫忙。 – 2017-07-24 22:17:14

0

有點除了slayedbylucifer答案。我遇到了類似問題中提到的問題。我已經完成了slayedbylucifer所描述的所有步驟。但我仍得到了類似的問題提到here

/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: skipping incompatible /opt/oracle/app/oracle/product/11.2.0/client_1/lib//libclntsh.so when searching for -lclntsh 
/usr/lib64/gcc/x86_64-suse-linux/4.3/../../../../x86_64-suse-linux/bin/ld: cannot find -lclntsh 

所以我創建了以下符號鏈接:

ln -s /opt/oracle/app/oracle/product/<YOUR_ORACLE_VERSION>/client_1/lib/libclntsh.so $ORACLE_HOME/libclntsh.so* 

這一步之後錯誤從上面(找不到-lclntsh)是固定的。 make命令的執行沒有任何錯誤。

我仍然唯一的問題是,我不明白爲什麼這個符號鏈接是必要的。

2

這是我在CentOS 7.2上用yum包和CPAN做的。這假定你正在使用Oracle版本12.1,但我想大多數版本都可以這樣工作。

安裝Oracle即時客戶端

yum install oracle-instantclient12.1-basic-12.1.0.2.0-1 oracle-instantclient12.1-devel-12.1.0.2.0-1 oracle-instantclient12.1-sqlplus-12.1.0.2.0-1 

複製演示使文件

的安裝預計* .mk文件是在/usr/share/oracle/12.1/client64但yum軟件包安裝將它們放入/usr/share/oracle/12.1/client64/demo。

sudo cp /usr/share/oracle/12.1/client64/demo/* /usr/share/oracle/12.1/client64 

修改的.bashrc

添加以下行到你的〜/ .bashrc

export ORACLE_HOME=/usr/lib/oracle/12.1/client64 
export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib 
export PATH=$ORACLE_HOME:$PATH 

現在源文件

source ~/.bashrc 

更新CPAN和DBI

更新CPAN和DBI最新

cpan> install CPAN 
cpan> reload cpan 
cpan> install DBI 

安裝DBD ::甲骨文

cpan> install DBD::Oracle 
+0

適用於12.2 64位,但有警告/錯誤(Size_t主要與%d格式衝突。)非常感謝 – Otheus 2017-07-19 18:15:55