亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2143 | 回復(fù): 0
打印 上一主題 下一主題

如何在Solaris8下使用DBI連接Oracle數(shù)據(jù)庫? [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2004-03-22 02:16 |只看該作者 |倒序瀏覽
Solaris8之后已經(jīng)帶有Perl,但其自帶的Perl版本有一定的局限性,無法編譯并使用DBI模塊。以下是從Perl連接Oracle的幾個基本步驟,在Solaris8上測試通過,貼出來與大家討論。

首先,卸載Solaris本身帶的Perl。Solaris8的安裝包是SUNWpl5u (Perl 5.005_03),版本太低,不支持新的DBI模塊1.42,但老一些的版本可以支持,比如說1.32。最主要的問題是,Solaris缺省的Perl是用Sun的CC編譯器編譯的,加入DBI模塊時,它要尋找CC編譯器,如果系統(tǒng)中沒有Sun的CC的話,編譯就不能繼續(xù)。Sun的CC編譯器是比較昂貴的,對于我們常用gcc的來說,使用Sun自帶的Perl很難擴展其功能。我們可以安裝一個gcc編譯的Perl克服這一問題。

* 查詢是否系統(tǒng)中帶有Solaris的Perl,用:
* pkginfo | grep –i perl

* 刪除Solaris的Perl, 用:
* pkgrm SUNWpl5u

可能系統(tǒng)中還存在另兩個Perl文檔的安裝包,也可以一并刪除。如果不想刪除自帶的Perl包的話,可以備份/usr/bin/perl文件,比如說備份為:

* mv /usr/bin/perl /usr/bin/perl.sun

然后進行g(shù)cc Perl的安裝。這樣要恢復(fù)回來,只要重新命名這一文件就可以了。

其次,安裝編譯Perl?梢詮木W(wǎng)上下載Perl的源碼,然后使用缺省configure就可以了。如果系統(tǒng)中沒有g(shù)cc的話,可以用Sun的"Software Companion CD"里安裝,安裝后路徑位于/opt/sfw下,也可以從http://www.sunfreeware.com上下載相應(yīng)的版本?梢园裀erl安裝在單獨的目錄之下,這樣便于以后的升級和管理,比如說/opt/SMCperl下。也可以從sunfreeware站點上直接下載編譯后的Perl,當前的版本是5.8.3,安裝后位于/usr/local/bin下。為避免不打亂原來程序的連接關(guān)系,把perl文件鏈接到/usr/bin下。

* ln –sf /opt/SMCperl/bin/perl /usr/bin/perl

接下來就可以安裝DBI模塊了。這一模塊可以從http://dbi.perl.org上下載。安裝過程跟一般的模塊相同,perl Makefile.PL; make;make install。DBI模塊提供了跟數(shù)據(jù)庫的接口,但要與某一數(shù)據(jù)庫連接,帶必須安裝相應(yīng)的DBD模塊。每一特定的數(shù)據(jù)庫都有其特定的DBD模塊(驅(qū)動),對Oracle來說,這一模塊可以從以下站點上下載(http://search.cpan.org/~timb/DBD-Oracle-1.15)。

如果使用64位的數(shù)據(jù)庫的話,直接編譯DBD-Oracle的源碼會有問題,因為缺省的make文件會指向的Oracle的64位庫文件。gcc要求所有的庫文件位數(shù)相同才可以進行編譯。另外,較低版本的gcc并不支持編譯64位的二進制文件。我用的是9i的64bit,gcc是2.95的,用了“-m64”后仍然有錯誤。以下是錯誤信息:

* ld: fatal: file /u01/oracle/product/9.2.0/lib//libclntsh.so: wrong ELF class: ELFCLASS64

如果出現(xiàn)這一錯誤的話,可以編輯DBD:Oracle的Makefile,然后把所有指向”9.2.0/lib”的都改為” 9.2.0/lib32”。重新編譯就可以了。

最后,可以測試一下連接了。以下是一段測試代碼。

* orahost是數(shù)據(jù)庫的主機名。
* dbuser是連接數(shù)據(jù)庫的用戶名。
* dbpass是用戶的密碼。

*****************************************************
#!/usr/bin/perl -w

use DBI;

my $dbh = DBI->;connect('DBI:Oracle:host=orahost;sid=SIDNAME;port=1521','dbuser','dbpass');
my $sql = qq{ select table_name from user_tables };
my $sth = $dbh->;prepare( $sql );
$sth->;execute();

while (my ($table_name) = $sth->;fetchrow_array()) {
        print $table_name, "\n";
}

$sth->;finish();
$dbh->;disconnect();
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP