我在一个桌面程序中,调用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的如何实现?
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的如何实现?
alter system kill session sid,#serial;
alter system kill session sid,#serial;
committ;这个执行alter system kill session sid,#serial;以后,再执行select sid,#serial from v$session where username=''; 怎么还存在?
select sid, #serial, status from v$session where username='';这个,看看status是不是标示为killed了?
alter system kill session sid,serial#;再问:
alter system kill session sid,#serial;
此处的sid,serial#需要加上单引号,即‘sid,serial#’,才能被执行,该如何写呢?
则:
alter system kill session '20,100';
alter system kill session sid,serial#; 再问:
alter system kill session sid,#serial;
此处的sid,serial#需要加上单引号,即‘sid,serial#’,才能被执行,该sql该如何写单引号呢?
--试一下:
l_sql := 'alter system kill session ' || '''' || sid || ',#' || serial || '''' || ';';
另外你应用是否有连接池,那个连接数也是可以调节的;
如果你自己想通过语句将会话断开,你首先需要有权限才行,一般的用户是没有断开会话的权限的;
如果你有权限,并且想通过过程操作,10楼的方法是可行的;
建议你先试试 调整参数,以满足应用的需求。