遇到一个问题:
有数据库A,数据库B,在A中建了一个数据库链路来连接数据库B,名字叫remote_connect;用JDBC写了一个小程序,里面只有一个操作System.out.println("开始操作远程数据库");
stmt.executeUpdate("delete from tableName@remote_connect where 条件...");
System.out.println("远程数据库操作完毕");程序运行时打印出"开始操作远程数据库"后,就没有反应了,
但我用sqlplus连接到数据库后,手动执行这条删除语句瞬间就执行完了,
不知是何原因
有数据库A,数据库B,在A中建了一个数据库链路来连接数据库B,名字叫remote_connect;用JDBC写了一个小程序,里面只有一个操作System.out.println("开始操作远程数据库");
stmt.executeUpdate("delete from tableName@remote_connect where 条件...");
System.out.println("远程数据库操作完毕");程序运行时打印出"开始操作远程数据库"后,就没有反应了,
但我用sqlplus连接到数据库后,手动执行这条删除语句瞬间就执行完了,
不知是何原因
2.用sqlplus连A,用指定的用户名和密码,执行那条sql,看会不会死掉,如果执行完毕,执行rollback;
3.检查程序中jdbc的用户名和密码是否有错,然后为stmt.executeUpdate("delete from tableName@remote_connect where 条件...");这句话外面嵌套一个try...catch(SQLException e){ System.out.println(e.getMessage());}
4.如果还不行,按照KNIGHTRCOM说的办法,检查是否有表锁。
另外,hzhou(神龙) 兄弟说的关于锁的问题,我已经查过了,现在又出现这种问题了,但在v$locked_object视图里并无任何信息,也就是说应该是没有关于这个表的锁定的总结如下:
1. 程序肯定是没有问题的,因为平时用的好好的
2. 遇到这种情况时,把数据库A重新启动一下就恢复正常了
3. 问题发生时, 并无任何关于这个表的表锁和行锁请各位兄弟帮我想想是其它什么原因引起的?
但当时看V$LOCK视图里有十几个记录