Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 11g具有虚拟连接_Oracle_Plsql_Oracle11g - Fatal编程技术网

Oracle 11g具有虚拟连接

Oracle 11g具有虚拟连接,oracle,plsql,oracle11g,Oracle,Plsql,Oracle11g,我的机器上本地安装了11g(Windows 7 64位) 当我断开所有客户端与oracle的连接(即没有运行sqlplus,没有运行weblogic),然后使用sqlplus重新连接,我运行以下脚本: SQL> set linesize 120 SQL> SELECT s.sid, 2 s.serial#, 3 s.username, 4

我的机器上本地安装了11g(Windows 7 64位)

当我断开所有客户端与oracle的连接(即没有运行sqlplus,没有运行weblogic),然后使用sqlplus重新连接,我运行以下脚本:

SQL> set linesize 120
SQL> SELECT            s.sid,
  2                    s.serial#,
  3                    s.username,
  4                    s.program
  5    from v$session s
  6    where username is not null;
       SID    SERIAL# USERNAME                       PROGRAM
---------- ---------- ------------------------------ ----------------------------------------------------------------
       134      11274 FOO                         ORACLE.EXE (J000) <-- I want to remove this connection
       139      19140 MYADMIN                        sqlplus.exe       <-- My connection
       155       8941 FOO                         ORACLE.EXE (J001) <-- I want to remove this connection
SQL>
这不是正确的方法吗?我也试过了

ALTER SYSTEM DISCONNECT SESSION  '134,11274'  IMMEDIATE;
当我再次尝试运行上述操作时,将收到错误消息:

SQL> ALTER SYSTEM DISCONNECT SESSION  '134,11274'  IMMEDIATE;
ALTER SYSTEM DISCONNECT SESSION  '134,11274'  IMMEDIATE
*
ERROR at line 1:
ORA-00031: session marked for kill
所以这种联系似乎并没有真正消失

我希望有一个脚本,强制终止所有“FOO”连接,以便我的构建正常运行。但是我的脚本不起作用。你有什么想法吗?我摆脱连接的唯一可靠方法是重新启动。停止和启动服务有时是有效的,但并不总是有效的,这真的很奇怪

下面是我最终希望能够运行的PL/SQL脚本

SET SERVEROUTPUT ON 
SET LINESIZE 120
DECLARE
   theKillCmd VARCHAR2(1000);

   PROCEDURE msg(msg VARCHAR2) AS 
   BEGIN
        DBMS_OUTPUT.PUT_LINE(msg);
   END;


BEGIN

msg(' . ');
msg(' . ');
msg('Killing extraneous sessions.');
msg(' . ');
msg(' . ');

for conn in (SELECT    s.sid,
         s.serial#,
         s.username,
         s.program
  FROM   v$session s
  WHERE s.USERNAME IS NOT NULL) 
loop

  msg( '.     ' || conn.sid || ' ' || conn.serial# || ' ' ||  conn.username || ' ' || conn.program );
  IF (conn.username = 'FOO') THEN
     -- Following asks client process to kill itself
     -- theKillCmd := 'ALTER SYSTEM KILL SESSION ''' ||  conn.sid || ',' || conn.serial# || ''' IMMEDIATE ';
     -- Following tells server to kill process 
     theKillCmd := 'ALTER SYSTEM DISCONNECT SESSION ' ||  conn.sid || ',' || conn.serial# || ' IMMEDIATE ';
     msg( '.           ' || 'Killing connection using command : ' || theKillCmd );
     EXECUTE IMMEDIATE theKillCmd ;
  ELSE
     msg('.           Ignoring .. ');
  END IF;

end loop;


END;
/

-- exit;
因此,如果有人有任何想法,我们将不胜感激

我想知道我是否在某种程度上搞砸了oracle的安装-我不想重新安装-宁愿在运行ant-oracle之前使用一个脚本来终止oracle连接。

JNN(J000和J001)语法表明这是一个“作业队列从进程”。如果您杀死它,调度程序可能会重新启动它

查看相应的DBMS_作业或DBMS_调度程序API。

JNN(J000和J001)语法表明它是一个“作业队列从属进程”。如果您杀死它,调度程序可能会重新启动它

查看相应的DBMS_作业或DBMS_调度程序API

SET SERVEROUTPUT ON 
SET LINESIZE 120
DECLARE
   theKillCmd VARCHAR2(1000);

   PROCEDURE msg(msg VARCHAR2) AS 
   BEGIN
        DBMS_OUTPUT.PUT_LINE(msg);
   END;


BEGIN

msg(' . ');
msg(' . ');
msg('Killing extraneous sessions.');
msg(' . ');
msg(' . ');

for conn in (SELECT    s.sid,
         s.serial#,
         s.username,
         s.program
  FROM   v$session s
  WHERE s.USERNAME IS NOT NULL) 
loop

  msg( '.     ' || conn.sid || ' ' || conn.serial# || ' ' ||  conn.username || ' ' || conn.program );
  IF (conn.username = 'FOO') THEN
     -- Following asks client process to kill itself
     -- theKillCmd := 'ALTER SYSTEM KILL SESSION ''' ||  conn.sid || ',' || conn.serial# || ''' IMMEDIATE ';
     -- Following tells server to kill process 
     theKillCmd := 'ALTER SYSTEM DISCONNECT SESSION ' ||  conn.sid || ',' || conn.serial# || ' IMMEDIATE ';
     msg( '.           ' || 'Killing connection using command : ' || theKillCmd );
     EXECUTE IMMEDIATE theKillCmd ;
  ELSE
     msg('.           Ignoring .. ');
  END IF;

end loop;


END;
/

-- exit;