平台:Red Hat Enterprise Linux AS 4
数据库:Oracle10g
IP:192.168.0.1
应用服务器:JBOSS 4
开发环境:Eclipse 3.2
JDK:1.4.2
分布式环境配置:
在192.168.0.1配置数据库链路dblRemote连接到远程192.168.88.1,测试通过。
症状如下:
String sql="update t@dblRemote set flag = '1'";
DataSource.executeUpdate(sql);
在Eclipse IDE debug模式下,能够看到以上语句被执行,但是远程数据库中表t并未被更新,把语句"update t@dblRemote set flag = '1'"放到SQLPlus中执行,远程数据库中表t成功被更新。发现此问题后,首先 ,然后拼命Debuging 。
步骤如下:
1、重启192.168.0.1数据库、监听服务,问题依旧!
2、重启192.168.88.1数据库、监听服务,问题依旧!
3、停止使用JBoss数据源连接池,直接在Eclipse通过JDBC直接执行,问题依旧!
4、修改192.168.88.1回滚段,问题依旧!
5、显示调用DataSource.getConnection().commit(),问题依旧!
到现在为止已经用了1天时间,问题仍然没有解决。
6、忽然想到使用Classes12.jar为Oracle9i提供,试试看Oracle10g for Linux提供的Classes12.jar是否好用,OK!终于成功执行了语句。
总结:由于Classes12.jar起到了Oracle客户端的作用,大家要小心使用,Oracle各本版C/S之间互连,经常出现莫名异常,大家小心使用Classes12.jar