java使用oci方式连接oracle
jdbc连接oracle数据库的两种方式
thin:是纯java驱动程序,轻巧且易于安装。它提供的性能可以与oci方式相媲美。JDBC thin驱动程序完全用java编写,与平台无关,不需要安装oracle客户端。
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:thin:@//ip:port/dbname", "user", "passw0rd");
oci:调用c++接口occi,据说性能优于thin方式。需要安装oracle客户端。
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection("jdbc:oracle:oci:@//ip:port/dbname", "user", "passw0rd");
两种连接方式只需要将thin改为oci即可。因本地安装了oracle客户端,所以oci方式可不写ip和port,jdbc:oracle:oci:@dbname 这种写法也可以。
客户端安装
客户端下载链接: https://www.oracle.com/cn/database/technology/instant-client.html.
basic包是基础包,必须下载,还需要sqlplus。tools、jdbc、sdk三个包没有搞清楚作用,就一起下载了。
windows安装
- 将下载的压缩包解压到统一目录下
E:\path\instantclient_11_2 - 在instantclient_11_2下创建 network\admin目录,创建tnsname.org文件,配置客户端与数据库连接监听
dbname=
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 数据库ip)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = dbname)
)
)
- 修改环境变量
在系统变量中新建
ORACLE_HOME=E:\path\instantclient_11_2
ORACLE_SID=dbname
TNS_ADMIN=E:\path\instantclient_11_2\network\admin
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
在path中添加 E:\path\instantclient_11_2
- sqlplus连接测试
cmd窗口执行连接命令:
sqlplus username/password@ip:port/dbname
mac安装
参考博客:https://blog.csdn.net/chisi5902/article/details/100607760
Linux安装
有两种包rpm和zip,不推荐使用yum+rpm方式。
官方教程:https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
- 下载需要的zip包
- 解压到同一目录下
cd /usr/lib/oracle18
unzip instantclient-basic-linux.x64-18.5.0.0.0dbru.zip
- 修改配置文件 /etc/profile
export ORACLE_HOME=/usr/lib/oracle18/instantclient_18_5
ORACLE_SID=orcl11g
export LD_LIBRARY_PATH=:$ORACLE_HOME:$LD_LIBRARY_PATH:/lib:/usr/lib:/usr/local/lib
export TNS_ADMIN=$ORACLE_HOME/network/admin
export PATH=/usr/lib/oracle18/instantclient_18_5:$PATH
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
- 在/usr/lib/oracle18/instantclient_18_5/network/admin/下创建tnsname.org,配置连接监听
- sqlplus连接测试
java程序连接
开始程序使用maven添加了ojdbc各个版本的jar包,均报错
Exception in thread “main” java.lang.UnsatisfiedLinkError:no ocijdbc11 in java.library.path
6. 手动添加安装客户端的ojdbc18.jar包到项目中
我的windows安装的是11,所以选择ojdbc6.jar
7. 添加程序启动配置
windows/mac oci连接成功。但linux环境下,eclipse启动报错:UnsatisfiedLinkError: /usr/lib/oracle18/instantclient_18_5/libocijdbc18.so: libclntsh.so.18.1: cannot open shared object file: No such file or directory
还是lib加载问题
参考博客:https://blog.csdn.net/edcvf3/article/details/9430637
https://blog.csdn.net/dumeifang/article/details/2963223
在/etc/ld.so.conf中添加 /usr/lib/oracle18/instantclient_18_5
运行 /sbin/ldconfig –v 命令,更新配置。
eclipse启动,成功。但idea还是Exception in thread “main” java.lang.UnsatisfiedLinkError:no ocijdbc11 in java.library.path,暂未解决…