2008-12-24 26 views

回答

2

這裏有幾位代碼來處理它。這適用於RAC多節點環境。它假定你有一個TNS條目用於你的每個集羣實例。

  1. 一個外殼腳本,以殺死的連接:

    #!/bin/sh 
    # oracle-killsession -- kill a specified oracle session 
    
    sid=$1; ser=$2; inst=$3 
    echo -n sys password: 
    stty -echo; read pass; stty echo 
    echo "alter system kill session '$sid,$ser';"| 
        sqlplus -SL sys/[email protected]$inst as sysdba 
    
  2. 客戶端功能(這在python),以生成到腳本的呼叫。 我在測試程序開始時打電話給我,打印 字符串,以便我可以剪切和粘貼。

    def killstring(curs): 
        """return a string that will kill this db connection""" 
        curs.execute("""SELECT dbms_debug_jdwp.current_session_id, 
              dbms_debug_jdwp.current_session_serial, 
              sys_context('USERENV', 'INSTANCE_NAME') 
            FROM dual""") 
        (sid,serial,instance)=curs.fetchone() 
        s="oracle-killsession %s %s %s"%(sid,serial,instance) 
        return s 
    
  3. 和樣本調用

    $ oracle-killsession 98 45809 orcl2 
    sys password: 
    System altered. 
    
  4. ,並從我的客戶......萬歲!

    cx_Oracle.DatabaseError: ORA-00028: your session has been killed 
    
相關問題