Oracle 10gR2 JDBC介紹

尛樣兒發表於2010-08-29

Oracle JDBC介紹

公司設計開發的系統大部分都是使用的Oracle JDBC,以前就知道用它,沒有很好的研究過它,它的功能還是很強大的。今天看了下Readme.txt結合自己的工作做了個整理。
下面以Oracle 10gR2的JDBC做一下說明。

10gR2版本的JDBC完全支援J2SE 5.0規範。J2SE5.0本身是支援JDBC 3.0規範的。我們使用的JDK1.5就是符合J2SE 5.0規範。如果使用的JDK遵循的是J2SE5.0之前的版本就無法使用下面提到的JDBC新特性。J2SE 5.0之前的規範也是不被Oracle官方支援的。

在10.1.0.1.0版本中的支援國際字符集的包nls_charset12.jar在10gR2中被更名為orai18n.jar。這個檔案存放路徑為[ORACLE_HOME]/jlib/目錄下。這個檔案不僅僅用於jdbc連線,其他的java程式也可以使用此包。如果程式需要用到該檔案,CLASSPATH環境變數,加入[ORACLE_HOME]/jlib/orai18n.jar。

JDBC新特性:

執行時連線負載均衡
利用RAC負載均衡顧問根據實時的負載和效能資訊動態的分配或重新分配連線。

XA連線池
Oracle JDBC長時間支援連線池,但是以前並不支援XA連線池,10gR2開始,開始支援XA連線池。

DML返回
DML返回支援在透過THIN和OCI驅動連線資料庫的時候,執行insert,pdate,delete返回結果集。
可以透過觸發器或者自動生成關鍵字返回被修改的欄位。

行集合(ROWSETS)
rowsets實現了新功能,oracle.jdbc.rowset更新實現了這些功能。

SSL
可以透過ssl(Secure Socket Layer)連線到關係型資料庫。


驅動版本:
JDBC Thin Driver 10.2.0.1.0
應用程式,中介軟體,APPLET等使用的100%的JAVA客戶端驅動。

JDBC OCI Driver 10.2.0.1.0
呼叫機器安裝的10.2.0.1版本oci的JDBC驅動。

JDBC Thin Server-side Driver 10.2.0.1.0
Java程式在資料庫中訪問遠端Oracle資料的JDBC驅動。

JDBC Server-side Internal Driver 10.2.0.1.0
Java儲存過程使用的伺服器端JDBC驅動。這個驅動被"JDBC Kprb Driver"來呼叫。


[ORACLE_HOME]/jdbc/lib的內容:
classes12.jar
在JDK1.2,1.3環境下使用的類。包含了JDBC驅動類。但是不包含對資料庫物件、Collection型別nls支援的類。

classes12_g.jar
除了用java -g編譯的,有一些跟蹤資訊外,其他和classes12.jar是相同的。

classes12dms.jar
除了有一些額外的程式碼支援Oracle動態監控服務,其他和classes12.jar是相同的,Oracle動態監控服務只有當dms.jar在classpath環境變數中才能使用到。dms.jar作為最近釋出的Oracle Application Server的版本一起提供。

classes12dms_g.jar
除了用java -g編譯的,有一些跟蹤資訊外,其他和classes12dms.jar是相同的。

ojdbc14.jar
在J2SE1.4,5.0環境下使用的類。包含了JDBC驅動類。但是不包含對資料庫物件、Collection型別nls支援的類。

ojdbc14_g.jar
除了用java -g編譯的,有一些跟蹤資訊外,其他和ojdbc14.jar是相同的。

ojdbc14dms.jar
除了有一些額外的程式碼支援Oracle動態監控服務,其他和ojdbc14.jar是相同的,Oracle動態監控服務只有當dms.jar在classpath環境變數中才能使用到。dms.jar作為最近釋出的Oracle Application Server的版本一起提供。

ojdbc14dms_g.jar
除了用java -g編譯的,有一些跟蹤資訊外,其他和ojdbc14dms.jar是相同的。

[ORACLE_HOME]/jlib/orai18n.jar
在JDK 1.2, 1.3, 1.4, and 5.0環境下使用的NLS類。包含了對資料庫物件、Collection型別nls支援的類。這個類替代了老的nls_charset jar或zip檔案。

OCI庫檔案:
Windows環境:
[ORACLE_HOME]\bin下的ocijdbc10.dll和heteroxa10.dll是被JDBC OCI驅動呼叫的庫檔案。

非Windows環境:
[ORACLE_HOME]/lib目錄下的libocijdbc10.so,libocijdbc10_g.so, libheteroxa10.so 和 libheteroxa10_g.so是被JDBC OCI驅動使用的共享庫檔案。

安裝JDBC:
請不要設定多個版本的Oracle jdbc驅動在你的classpath環境變數中。Oracle安裝的時候jdbc驅動預設是被放在[Oracle_Home]/jdbc目錄下。

設定你的環境:
windows平臺:
如果你使用的是JDK 1.2 or 1.3,新增[ORACLE_HOME]\jdbc\lib\classes12.jar到你的CLASSPATH環境變數中,如果使用的是JDK1.4,新增[ORACLE_HOME]\jdbc\lib\ojdbc14.jar到你的CLASSPATCH環境變數中。
如果需要,新增[ORACLE_HOME]\jlib\orai18n.jar到你的CLASSPATH環境變數中。
如果使用JDBC OCI驅動,新增[ORACLE_HOME]\bin到你的PATH環境變數中。

Solaris/Digital Unix平臺:
如果使用JDBC OCI驅動,新增[ORACLE_HOME]/jdbc/lib到你的LD_LIBRARY_PATH環境變數中。
其他和windows相同。

HP/UX平臺:
如果使用JDBC OCI驅動,新增[ORACLE_HOME]/jdbc/lib到你的SHLIB_PATH和LD_LIBRARY_PATH環境變數中。
其他和windows相同。

AIX平臺:
如果使用JDBC OCI驅動,新增[ORACLE_HOME]/jdbc/lib到你的LIBPATH和LD_LIBRARY_PATH環境變數中。
其他和windows相同。

使用:

JDBC OCI driver:
連線遠端資料庫,使用一下的連線串:
ods.setURL("jdbc:oracle:oci:@");
是在本地tnsnames.ora中定義的本地服務名。

JDBC THIN driver:
ods.setURL("jdbc:oracle:thin:@");
是//:/格式的字串。

JDBC Server-side Internal Driver:
ods.setURL("jdbc:oracle:kprb:");
注意冒號是必須的。當你使用Server-side Internal Driver,在你呼叫驅動的機器上你是一直連線在資料庫。你也可以使用以下方式來建立一個Server-side Internal Driver驅動的連線。
Connection conn =new oracle.jdbc.OracleDriver().defaultConnection();

更詳細的資料檢視《JDBC Developer's Guide and Reference》文件。

總結:
我們生產環境中,如果使用的是JDK1.2,1.3那麼我們使用的驅動程式是classes12.jar驅動程式,新增到CLASSPATH環境變數中。我們使用的是jdk1.4及其以上我們就使用ojdbc14.jar驅動程式,將其新增到CLASSPATH環境變數中。另外我們如果使用oci驅動連線資料庫的話,記得檢查相應的OCI庫檔案存在,並設定相應的OCI庫檔案路徑到相應的環境變數中。如果使用了在物件中使用了nls,那麼注意新增orai18n.jar到classpath環境變數中。如果連線的是RAC,我們啟用RCLB功能,配置方法見另一篇文章:
http://space.itpub.net/23135684/viewspace-630945

如果有哪兒不對的地方,請大家指正,謝謝。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23135684/viewspace-672060/,如需轉載,請註明出處,否則將追究法律責任。

相關文章