金融圈>在linux系统执行java文件连接oracle数据库出错

在linux系统执行java文件连接oracle数据库出错

2024-01-02 20:30:00 提问 | 共4条回答

最佳回答(金融领域专家推荐)

龙小英

2024-01-02 21:00金融领域专家
Java程序连接oracle数据库时,用oci驱动要比用thin驱动性能好些。主要的区别是使用thin驱动时,不需要安装oracle的客户端,而使用oci时则要安装oracle的客户端。从使用thin驱动切换到oci驱动在配置来说很简单,只需把连接字符串java:oracle:thin:@hostip:1521:实例名换为java:oracle:oci@本地服务名即可。如:从jdbc:oracle:thin:@10.1.1.2:1521:shdb改成:jdbc:oracle:oci8:@shdb但这里这台机器需安装oracle数据库的客户端并配置本地服务名,同时还需指定NLS_LANG环境变量,NLS_LANG环境变量是用来控制客户端在显示oracle数据库的数据时所用的字符集和本地化习惯。通常把NLS_LANG的字符集部分指定为数据库所用的字符集,就不会存在java显示的乱码问题了。对于oracle数据库客户端的安装,有二种选择,一是老实的用oracle数据库的安装光盘,安装对应版本的oracle客户端。二是下载oracle提取的即时客户端,即时客户端是不用安装的,把下载包解压即可。要使javaweb正常的通过oci驱动访问oracle,还需要客户端正确的配置一下相关变量。主要如下:对于windows系统并使用oracle客户端时:1、把%ORACLE_HOME%\lib加到PATH环境变量。2、把%ORACLE_HOME%\jdbc\lib\classes12.jar加到CLASSPATH环境变量里,也可以把classes12.jar拷贝到tomcat的comman\lib目录下。对于windows系统并使用oracle的即时客户端时假定即时客户端解压在d盘:1、把d:\instantclient_10_2加到PATH环境变量;2、把d:\instantclient_10_2\classes12.jar加到CLASSPATH环境变量里,也可以把classes12.jar拷贝到tomcat的comman\lib目录下。对于linux系统并使用oracle客户端时:1、在使用tomcat的用户主目录下的.bash_profile文件中加入:exprotORACLE_HOME=/u01/app/oracle/product/9.2.0.4exportLD_LIBRARY_PATH=$ORACLE_HOME/lib2、把classes12.jar拷贝到tomcat的comman\lib目录下。对于linux系统并使用oracle即时客户端时:1、在使用tomcat的用户主目录下的.bash_profile文件中加入:exprotORACLE_HOME=/instantclient_10_2exportLD_LIBRARY_PATH=$ORACLE_HOME/lib2、把instantclient_10_2目录下的classes12.jar拷贝到tomcat的comman\lib目录下。如果一个tomcat下带了几个应用,且几个应用都要连接oracle数据库时,则要注意的是,不要在每个应用的WEB-INF/lib目录下放入oracle的classes12.jar/zip文件。而应该把classes12.jar/zip文件放到tomcat的common/lib目录下。否则会出来ojdbclib9/10库重复加载的错误。使用oracle即时客户端时,本地服务名的建立可以在目录instantclient_10_2下建立tnsnames.ora下添加连接串,如:SHDB=DESCRIPTION=ADDRESS_LIST=ADDRESS=PROTOCOL=TCPHOST=10.1.1.236PORT=1521CONNECT_DATA=SERVICE_NAME=shdb。
其他回答

龚巍峥

2024-01-02 21:00活跃答主
如何配置使JAVA可以通过OracleJDBCDrivers连接到数据库:1.安装JAVAJDK.2.修改PATH环境变量,使其指向JDK的bin目录3.设置CLASSPATH环境变量,使其指向正确的JDK的lib及oracle的JDBC接口。4.运行"java–version",验证java的版本。下面是用JAVA通过JDBC连接Oracle的步骤1装载并注册数据库的JDBC驱动程序载入JDBC驱动:Class.forName"oracle.jdbc.driver.OracleDriver";注册JDBC驱动:java.sql.DriverManager.registerDriverneworacle.jdbc.driver.OracleDriver;2建立与数据库的连接要建立与数据库的连接,首先要创建指定数据库的URL。连接数据库的URL对象,利用DriverManager的getConnection方法建立的。数据库URL对象与网络资源的统一资源定位类似,其构成格式如下:jdbc:subProtocol:subName://hostname:port;DatabaseName=ⅹⅹⅹ其中:jdbc表示当前通过Java的数据库连接进行数据库访问;subProtocol表示通过某种驱动程序支持的数据库连接机制;subName表示在当前连接机制下的具体名称;hostname表示主机名;port表示相应的连接端口;DatabaseName表示要连接的数据库的名称。这里以与Oracle数据库的连接为例:连接Oracle8/8i/9i数据库用thin模式url=jdbc:oracle:thin:@hostip:1521:oracleSID;注意:hostip指主机的ip地址,oracleSID指数据库的SID。再者确定连接数据库的用户名与密码,即user和password的值:user=“ⅹⅹⅹ“;password=“ⅹⅹⅹ“;最后使用如下语句:Connectioncon=java.sql.DriverManager.getConnectionurl,user,password;3创建Statement对象例如:Statementstmt=con.createStatement;4调用并执行SQL语句例如:Stringsql=“selecta,b,cfromtable1";//table1为你所要查询的表名,a,b,c为所要查询的字段ResultSetrs=stmt.executeQuerysql;5访问ResultSet中的记录集并从中取出记录例如:rs.next;rs.absolute4;Stringcol1=rs.getString1;……..6依次关闭ResultSet、Statement和Connection对象例如:rs.close;stmt.close;con.close。

黄百芬

2024-01-02 21:00活跃答主
windows和linux的文件系统,区别最大的是/与\写法以及根目录。

龙安顺

2024-01-02 21:00活跃答主
看看$oracle_home/bin是否加到里你的环境变量path中,再确认sqlldr这个可执行文件是否存在。

查看其他回答(2)