我在一个桌面程序中,调用sqlplus执行,数据库的建立,但如果该数据库已经被访问,我无法新建,请问该如何在脚本断开该链接?sql server中的实现方式如下:use  master    
  declare  @dbname  sysname  
  set  @dbname=N'MyDB'  
  declare  hCForEach  cursor  global  for  select  'kill  '+rtrim(spid)  from  sysprocesses  where  dbid=db_id(@dbname)  
  exec  sp_msforeach_worker  '?'就是不知道oracle的如何实现?

解决方案 »

  1.   

    select sid,#serial from v$session where username='';
    alter system kill session sid,#serial;
      

  2.   

    select sid,#serial from v$session where username=''; 
    alter system kill session sid,#serial;
    committ;这个执行alter system kill session sid,#serial;以后,再执行select sid,#serial from v$session where username=''; 怎么还存在?
      

  3.   


    select sid, #serial, status from v$session where username='';这个,看看status是不是标示为killed了?
      

  4.   

    select sid,serial# from v$session where username=''; 
    alter system kill session sid,serial#;再问:
    alter system kill session sid,#serial;
    此处的sid,serial#需要加上单引号,即‘sid,serial#’,才能被执行,该如何写呢?
      

  5.   

    加入sid=20,serial#=100
    则:
    alter system kill session '20,100'; 
      

  6.   

    select sid,serial# from v$session where username=''; 
    alter system kill session sid,serial#; 再问: 
    alter system kill session sid,#serial; 
    此处的sid,serial#需要加上单引号,即‘sid,serial#’,才能被执行,该sql该如何写单引号呢?
      

  7.   

    --单引号使用:''''
    --试一下:
      
    l_sql  := 'alter system kill session ' || '''' || sid || ',#' || serial || '''' || ';';
      

  8.   

    如果你的连接长时间不活动,oracle会自动收回连接;你打不开新的连接的解决办法,可以把oracle的会话连接数这个参数调整的大一些;
    另外你应用是否有连接池,那个连接数也是可以调节的;
    如果你自己想通过语句将会话断开,你首先需要有权限才行,一般的用户是没有断开会话的权限的;
    如果你有权限,并且想通过过程操作,10楼的方法是可行的;
    建议你先试试 调整参数,以满足应用的需求。