我用odac连接oracle ;局域网的服务器没有问题 ,但是一到外部网络上的服务器就出现问题(查询数据量大的时候 1000条以上)。现在发现是 TOraQuery 没有响应了。
也没有返回错误代码。 TOraQuery 也free不掉 ,所以它所在的线程无法关闭。。OraQuery:=nil  后也没有用。  导致程序关闭后,任务管理器里确还有。
请问:1.odac能设置 查询超时吗?(如果是OraQuery 本身的问题,恐怕设了也没有用吧)
      2.如果没有正规方法解决,那请问怎么强制彻底的关闭程序啊?(OraQuery:=nil  ;mtthread:=nil 也没有 任务管理器还是有)。
晕晕啊 ,前辈,高手请指点下啊@@· 谢谢了

解决方案 »

  1.   

    1.正准备使用,但是还没有使用,所以不曾有了解。
    2.TerminateThread.
    例如TerminateThread(mtthread.Handle,-1);
      

  2.   

    你换ado组件试试是不是还有这样的问题?
      

  3.   

    2.TerminateThread. 
    例如TerminateThread(mtthread.Handle,-1); 经没有办法TerminateThread啊。。我已经mtthread:=nil了 而且。。mtthread是个局部变量, 在mainfrom关闭的时候不能去操作他了啊
      

  4.   

    ado 组件有超时设置  但是这事公司产品啊。。不能随便改的。。  
      

  5.   

    我一直用odac连接oracle数据库,并未出现你说的情况
    1.oraQuery没有查询超时的设置属性,但它有几个属性需要设置一下.autocommit一般设置为false
      cacheupate,fetchrow这几个可以根据你的情况进行设置.
    2.你的oraquery都是动态创建的吗?不能关闭你设置了 oraquery:=nil也没有用,因为程序是停在了oraquery.open这里了,它一直在等待.所以只能强制关闭.你可以把SQL语句截出来,在sqlplus中执行一下(联接远程数据库)分析一下,看是否查询语句的写法等原因使得速度慢.
    因为1000条数据是很小的,如果网络速度还可以,应该很快的.
    ping一下远程服务器,看看ping值是多少,一般30左右是 正常,如果超过100速度就会显得有些慢.
      
      

  6.   

    2.你的oraquery都是动态创建的吗?不能关闭你设置了   oraquery:=nil也没有用,因为程序是停在了oraquery.open这里了,它一直在等待.所以只能强制关闭. 
    请问这里怎么能强行关闭啊? 非常感谢 
    确实是动态创建的。 1000条死的机会少 10000条就很容易出现这个情况了。 我现在只是希望能够出这个情况后 把oraquery强行关闭啊。。但是不知道怎么做
      

  7.   

    free掉,oracle数据库取消一个查询速度有点慢,就像是我们用pl/sql工具执行一个比较大的查询,查询一半你点终止一样需要等一会
      

  8.   

    free就没有响应了等了很久也没有反应
    但是查询一半 breakexec 是很快的。
     而出现那种情况 用breakexec也没有用 free什么的就程序无响应了 :=nil 程序有响应 但是关不了
    没有办法 吧oraquery强行停止吧 。。这个控件怎么没有设置超时设置啊。。我现在自己设置超时也不知道改怎么停止它啊。。
      

  9.   

    SELECT /*+RULE*/ * FROM (MmsMerge)  TempTable WHERE ROWID IN (SELECT ID FROM (SELECT ROWNUM NO, ROWID id FROM (SELECT /*+RULE*/ ROWID FROM MmsMerge where ( Report_Sec >= To_Date('2008-02-28 00:00:00','YYYY-MM-DD HH24:MI:SS')  And  Report_Sec <= To_Date('2008-02-28 23:59:59','YYYY-MM-DD HH24:MI:SS') )) WHERE ROWNUM <= 20000) WHERE NO > 10000)查询语句是没有办法改了啊。
    现在的关键是我怎么能够在oraquery。open的时候把它关掉 难道真的没有办法吗?@@~~~ 
      

  10.   

    在open是关掉似乎不行,看看其它人有没有好办法吧.
    不过我看了你的SQL这句中用了几个子查询,我觉得还可以优化的
    你的这句:
    SELECT   ID   FROM   (SELECT   ROWNUM   NO,   ROWID   id   FROM   (SELECT   ROWID   
    FROM   MmsMerge   
    where   (   Report_Sec   > =   To_Date('2008-02-28   00:00:00','YYYY-MM-DD   HH24:MI:SS')     
    And     Report_Sec   <=   To_Date('2008-02-28   23:59:59','YYYY-MM-DD   HH24:MI:SS')我觉得就进行了二次查询,不知我理解的对不对
      

  11.   

         
    Event Thread ID Time 
    - Project run selected, current profiler is Performance Profiler.   11:13:45:265 
        Product: AQtime; Version: 4.91.654.0     
      + Work environment:     
      + Run Mode: Normal     
       11:13:46:828 
        Module loaded: E:\Program Files_EN\automatedqa\Bin\aqComm.dll; Base address: 0x30200000 Size: 124416 Version: 4.91.654.0 2220 11:13:46:906 
      Thread create ID: 1500 1500 11:13:46:906 
      Thread create ID: 1376 1376 11:13:46:906 
      Module loaded: I:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2982_x-ww_ac3f9c03\comctl32.dll; Base address: 0x773D0000 Size: 1054208 Version: 6.0.2900.2982 2220 11:13:46:921 
      Module loaded: I:\WINDOWS\system32\rdpsnd.dll; Base address: 0x5DAC0000 Size: 19968 Version: 5.1.2600.2180 2220 11:13:46:953 
      Module loaded: I:\WINDOWS\system32\winsta.dll; Base address: 0x76360000 Size: 53760 Version: 5.1.2600.2180 2220 11:13:46:953 
      Module loaded: I:\WINDOWS\system32\netapi32.dll; Base address: 0x5B860000 Size: 332288 Version: 5.1.2600.2976 2220 11:13:46:953 
      Module loaded: I:\WINDOWS\system32\psapi.dll; Base address: 0x76BF0000 Size: 23040 Version: 5.1.2600.2180 2220 11:13:46:953 
      Module loaded: I:\WINDOWS\system32\uxtheme.dll; Base address: 0x5AD70000 Size: 218624 Version: 6.0.2900.2180 2220 11:13:47:000 
      Module loaded: I:\WINDOWS\system32\msctf.dll; Base address: 0x74720000 Size: 294400 Version: 5.1.2600.2180 2220 11:13:47:015 
      Module loaded: I:\WINDOWS\system32\msctfime.ime; Base address: 0x755C0000 Size: 177152 Version: 5.1.2600.2180 2220 11:13:47:015 
      Module loaded: I:\WINDOWS\system32\clbcatq.dll; Base address: 0x76FD0000 Size: 498688 Version: 2001.12.4414.308 2220 11:13:47:031 
      Module loaded: I:\WINDOWS\system32\comres.dll; Base address: 0x77050000 Size: 792064 Version: 2001.12.4414.258 2220 11:13:47:031 
      Module loaded: D:\workspace\MSP\MSPClient\V3.0\Product\BIN\CSBLIB.DLL; Base address: 0x01680000 Size: 73728 Version: 0.0.0.0 2220 11:13:47:046 
      Module loaded: I:\WINDOWS\system32\olepro32.dll; Base address: 0x5EDD0000 Size: 83456 Version: 5.1.2600.2180 2220 11:13:47:046 
      Module loaded: E:\Program Files_EN\EN_delphi_Files\Borland\BDS\4.0\Bin\smsDll.dll; Base address: 0x01840000 Size: 32768 Version: 1.0.0.1 2220 11:13:47:078 
      Thread create ID: 3560 3560 11:13:47:078 
      Module loaded: E:\Program Files_EN\EN_delphi_Files\Borland\BDS\4.0\Bin\api.dll; Base address: 0x01990000 Size: 45056 Version: 0.0.0.0 2220 11:13:47:078 
       Module loaded: I:\WINDOWS\system32\msxml4.dll; Base address: 0x69B10000 Size: 1275392 Version: 4.20.9848.0 2220 11:13:47:203 
      Thread create ID: 2656 2656 11:13:50:406 
      Module loaded: I:\Program Files\Theta Networks\MSPClient\ora\BIN\oci.dll; Base address: 0x02C10000 Size: 344064 Version: 10.2.0.1 2656 11:13:50:406 
      Module loaded: I:\WINDOWS\system32\msvcr71.dll; Base address: 0x7C340000 Size: 348160 Version: 7.10.3052.4 2656 11:13:50:406 
      Module loaded: I:\Program Files\Theta Networks\MSPClient\ora\BIN\oraclient10.dll; Base address: 0x61C20000 Size: 2387968 Version: 10.2.0.1 2656 11:13:50:421 
      Module loaded: I:\Program Files\Theta Networks\MSPClient\ora\BIN\oracore10.dll; Base address: 0x60870000 Size: 917504 Version: 10.2.0.1 2656 11:13:50:421 
        Module loaded: I:\WINDOWS\system32\wshtcpip.dll; Base address: 0x71A90000 Size: 19968 Version: 5.1.2600.2180 2656 11:13:50:593 
      Thread exit ID: 2656; Exit code: 0 2656 11:13:54:640 
      Thread create ID: 3616 3616 11:13:56:093 
      Thread exit ID: 3616; Exit code: 0 3616 11:13:56:281 
      Thread create ID: 3244 3244 11:14:00:125 
      Thread create ID: 2012 2012 11:14:00:265 
      Thread create ID: 1312 1312 11:14:16:906 
      Thread exit ID: 2012; Exit code: 0 2012 11:14:37:984 
      Thread exit ID: 3244; Exit code: 0 3244 11:14:38:093 
      Thread exit ID: 3560; Exit code: 0 3560 11:14:46:093 
      Module unloaded: I:\WINDOWS\SYSTEM32\WSHIP6.DLL; Base address: 0x58D40000 2220 11:14:46:093 非正常关闭了还有未结束的线程 所以任务管理器的进程还没有结束
    大家有谁知道 怎么搞啊
      

  12.   

    我最后还是用第二种办法搞定;因为我想 我在调试程序的时候出现这种情况,我ctrl+F2掉 程序能完全退出。那么我正常运行的时候也可以将程序完全释放掉。找了一天终于找到这个函数:
    ExitProcess(0);用其他的都不行~@@~ 晕晕