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/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23135684/viewspace-672060/