遇到一个问题:
有数据库A,数据库B,在A中建了一个数据库链路来连接数据库B,名字叫remote_connect;用JDBC写了一个小程序,里面只有一个操作System.out.println("开始操作远程数据库");
stmt.executeUpdate("delete from tableName@remote_connect where 条件...");
System.out.println("远程数据库操作完毕");程序运行时打印出"开始操作远程数据库"后,就没有反应了,
但我用sqlplus连接到数据库后,手动执行这条删除语句瞬间就执行完了,
不知是何原因

解决方案 »

  1.   

    1.用enterprise manager console连A,测试数据库链路,是否正常。
    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说的办法,检查是否有表锁。
      

  2.   

    1.KNIGHTRCOM说的检查有没有表锁,我认为这个应该是不存在的吧,因为我在SQLPLUS下手工试了好几次,运行这条命令很正常的,结果是删除了0条记录,但程序里为什么就是不能运行呢2.而且我的这个程序已经被加上了TRY里面了,但运行过程中并没有任何异常信息3.这个小程序就是专门用来执行这条语句用的,我把数据库连接方式改为用ODBC连接,但结果是一样的,仍然是没有反应
      

  3.   

    难道是JDBC无法操作链接数据库的原因?
      

  4.   

    各位兄弟, 那个问题是这样的这是我做的一个程序, 平时挺正常的, 但有时就会出现这种情况, 遇到这种情况时我一般都是把数据库A重新启动一下,又恢复正常了;
    另外,hzhou(神龙) 兄弟说的关于锁的问题,我已经查过了,现在又出现这种问题了,但在v$locked_object视图里并无任何信息,也就是说应该是没有关于这个表的锁定的总结如下:
    1. 程序肯定是没有问题的,因为平时用的好好的
    2. 遇到这种情况时,把数据库A重新启动一下就恢复正常了
    3. 问题发生时, 并无任何关于这个表的表锁和行锁请各位兄弟帮我想想是其它什么原因引起的?
      

  5.   

    再补充几点点,第4点, 发生这种问题时, 手动在SQLPLUS下执行那条DELETE语句是可以正常执行的第5点, 程序一直停在那里, 没有任何时间限制, 就像在等待一个锁定一样, 程序没有任何异常抛出
      

  6.   

    哎,发了几天也没有人回, 请各位再想想办法吧,我现在还没有解决,顺便问一下发生问题的时候在V$LOCKED_OBJECT视图里为空,是不是就说明当是不可能是因为锁的问题而引发的呢?
    但当时看V$LOCK视图里有十几个记录