我有三台机器设置如下:
- CompA:运行 Oracle 服务器 10.2.0.3
- CompB:运行 Oracle 服务器 10.2.0.4 和我的客户端代码
- CompC:仅运行客户端代码
在 CompB 和 CompC 上的客户端代码上,使用 Thin 驱动程序连接到任一 Oracle DB 都可以完美运行。
我正在尝试使用 OCI 驱动程序从客户端代码连接到每个 Oracle DB
Connection conn = DriverManager.getConnection('jdbc:oracle:oci:username/pass@sid');
从在 jboss 中运行的 Java 类内部。这在 CompB 上工作得很好,但会导致运行 Jboss 的 JVM 每次在 CompC 上进行核心转储。
CompC 可以使用 Sql*Plus 和 jboss 试图引用的同一 tnsnames.ora 文件连接到两个 Oracle 服务器。
这是堆栈跟踪的一部分。它似乎每次都是一致的。
堆栈:[0x30fcc000,0x3101d000),sp=0x3101a868,可用空间=314k 本机帧:(J=编译的 Java 代码,j=解释的,Vv=VM 代码,C=本机代码) V [libjvm.so+0x2d02d6] C [libocijdbc10.so+0x585c] C [libocijdbc10.so+0x70a8] Java_oracle_jdbc_driver_T2CConnection_t2cCreateState+0x15c j oracle.jdbc.driver.T2CConnection.t2cCreateState([BI[BI[BI[BISI[S[B[B]I+0] j oracle.jdbc.driver.T2CConnection.logon()V+551 j oracle.jdbc.driver.PhysicalConnection.(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;Loracle/jdbc/driver/OracleDriverExtension;)V +381 j oracle.jdbc.driver.T2CConnection.(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;Loracle/jdbc/driver/OracleDriverExtension;)V +10 j oracle.jdbc.driver.T2CDriverExtension.getConnection(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;+67 j oracle.jdbc.driver.OracleDriver.connect(Ljava/lang/String;Ljava/util/Properties;)Ljava/sql/Connection;+831 j java.sql.DriverManager.getConnection(Ljava/lang/String;Ljava/util/Properties;Ljava/lang/ClassLoader;)Ljava/sql/Connection;+210 j java.sql.DriverManager.getConnection(Ljava/lang/String;)Ljava/sql/Connection;+15
有谁知道这里出了什么问题?
更新:为澄清起见,上面使用的“客户端”指的是我在 jboss 实例中运行的 java 代码。应该在 jboss 启动的 LD_LIBRARY_PATH 中找到的唯一 Oracle 库是 libocijdbc10.so libclntsh.so.10.1 和 libnnz10.so。这三个库和 jboss 服务器本身都在源代码控制中,因此它们在 CompB 和 CompC 上是相同的版本。
CompB 可以使用 OCI 和 Thin 连接到 CompA 和 CompB。CompC 无法使用 OCI 连接,但可以使用 Thin 连接到 CompA 和 CompB,因此它不应该是服务器版本问题。
CompB 和 CompC 都运行 32 位 Ubuntu 8.04,但 CompC 的 CPU 稍慢,只有 1GB 的 RAM,而 CompB 的 RAM 为 3.25GB。