在SQL*PLUS 中
ctrl-c
或file->cancel

解决方案 »

  1.   

    to ATCG(ATCG) :
       我还是把问题说清楚吧,我想知道在ORACLE服务器端能不能只K掉指定的PROCESS,而不断开SESSION。
      

  2.   

    挺深的问题。恐怕ORACLE的人也很难解答。
      

  3.   

    咱们都讨论出一个说法!我个人感觉还是有一点希望的,可惜不能联系ORACLE公司的人,不然结论可以更早出来。
    继续!!!
      

  4.   

    你的问题有些怪,是不是你只想把指定的某些操作语句kill?我觉得是不可能的,数据库端根本没有针对每个session中的sql语句的process, 数据库端的主要进程pmon, smon, dbwr, lgwr, chpt不只是针对某条语句的,所以不可能kill server的进程,只能kill调server process 也就是用户的连接进程
      

  5.   

    目前我们所知的,的确只能KILL掉SESSION。
    但是ORACLE是否有更强大的机制,是我们没有了解的,疑问中...比如执行一个存储过程,可以在服务器方KILL掉,而不是KILL SESSION,可以继续干点其它的,是我很感兴趣的,相信大家也是如此。
      

  6.   

    不可以吧,oracle对每条sql或procedure没有独立的句柄类的东西来识别,后台的进程与客户端是一一对应的,只是靠sessionID来识别客户端与服务端,所以只能对session进行操作,不能对session中的某一条指令进行操作
    这只是我的理解
      

  7.   

    没有可能,我们对数据库的操作都是基于sql*net下的
    你只能发送request
    具体的operation都是在server下运行的
    你不可能指挥server怎么查询,它的flow在运行中是不可见的
    没有运行点,也就是取不到handle,就不可能cancle另外如果要知道运行点,对系统有一定的开销,和大家共同探讨
      

  8.   

    有精通OCI编程的吗?
    能不能解释一下以下的几个概念:
    OCIServer
    OCISvcCtx
    OCIStmt
      

  9.   

    to jeam(吉姆) :
    以上几个变量在
    oracle call interface 中
    -> OCI Programming Basics->Handles有详细的说明
      

  10.   

    不知某人有否过这样的尝试:
        通过OCI创建一个查询语句的OCIStmt,保存OCIStmt的HANDLE,在执行的过程中通过OCI的OCIHandleFree函数来中止查询。
        
    这样的实现效果如何,请大家看看。
      

  11.   

    不知某人知不知道Handle的含义:
         handle只是本机访问服务器的句柄,你Free了本机句柄,并没有给服务器发送cancle
    SESSION还是继续执行的
      

  12.   

    这是数据库的事务机制和安全机制,如果你只Kill掉某个处理语句,那还能保证数据的完整性吗,还能保证数据库系统的安全吗,Oracle还能成为今天的Oracle吗
    所以这是一条系统设计的原则,不能那样做,不是做不到如果兄弟想要实现那样的功能,方法很多(本人一直认为很多问题都是可以找到解决办法的,只不过存在笨办法与好办法,性能好与坏之分),提供一个思路:
    你可以建立一个表,作为运行你代码的临时纪录标志表,表里面设计一个标志字段,你的代码每运行一次或者n次就检查一下那个标志,如果它复位了就停止运行活干点其他什么的,这样你就可以控制这些代码的运行了,你可以在某个你烦躁的时候复位标志就OK如果仁兄是想讨论这种机制,那我劝你别多费心思了
      

  13.   

    但是,如果这样的话,会不会影响运行效率呢?他要不断的去检测那个标志我刚学oracle所以,我想问一下,这个为运行代码所建的临时纪录标志表具体是怎么实现的呢?
      

  14.   

    效率的影响是肯定的,但是小段代码是用不着这样的
    jeam兄提出的应该是针对大量数据长时间处理,象电信,移动,那样的话也不需要每次都检查,每n次(n=1000会有较好的性能)检查一下就行补充一下,使用查询可以考虑拥游标
      

  15.   

    同意Pengmg(Challey)的说法oracle对于单个sql不能cancle的
      

  16.   

    谢谢各位的参与,特别感谢Pengmg(Challey)、zzzsssccc(籍秋风) 、cyypeng(chenyang)!
    这种问题虽然是钻牛角尖的问题,但是通过讨论,则能逐步明晰解决问题的思路。
    再次感谢大家不拘一格的看法!!!