欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Killsession和orakill的會話及進程是怎么樣的

今天就跟大家聊聊有關(guān)Kill session 和orakill的會話及進程是怎么樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

創(chuàng)新互聯(lián)公司專業(yè)IDC數(shù)據(jù)服務(wù)器托管提供商,專業(yè)提供成都服務(wù)器托管,服務(wù)器租用,綿陽服務(wù)器托管綿陽服務(wù)器托管,成都多線服務(wù)器托管等服務(wù)器托管服務(wù)。

一個用戶進程偶爾會掛起或占用過多資源而拒絕其它會話。如果DBA依然能夠訪問數(shù)據(jù)庫,她通常可以發(fā)出以下查詢:
select s.username, s.osuser, s.sid, s.serial#, p.spid  from v$session s,v$process p
where s.paddr = p.addr    and s.username is not null;
select 'alter system kill session ',''''||trim(t2.sid)||','||trim(t2.serial#)||''';'
from v$locked_object t1,v$session t2 where t1.session_id=t2.sid order by t2.logon_time;
這個查詢將返回數(shù)據(jù)庫用戶名、操作系統(tǒng)用戶名、會話 ID,序列號和系統(tǒng)進程 ID(SPID)。然后,DBA 用戶就可以發(fā)出以下命令(前面的查詢返回的使用 SID 和SERIAL# 信息):
ALTER SYSTEM KILL SESSION 'sid,serial#';
ALTER SYSTEM KILL SESSION '9,203';
使用這條語句有兩個問題。
第一:分配給這個進程的任何鎖或資源在會話完全超時之前不會被釋放。
第二:查詢和 kill 命令需要能夠訪問數(shù)據(jù)庫。如果一個進行失去控制,那么數(shù)據(jù)庫訪問可能會出現(xiàn)問題。
在一個 UNIX 數(shù)據(jù)庫中,下一步是 ps 命令輸出的 UNIX 提示中定位進程(同樣是查找 OSUSER 和 SPID 等 ID)然后使用 kill -9 spid 結(jié)束失控的后臺進程。然而,在 Windows 中,只有一個進程 ORACLE.EXE,而且用戶連接是在 Windows 線程中處理的,而不在進程中處理的。如果使用 Windows 任務(wù)管理器結(jié)束 Oracle 線程,就有可能影響所有用戶和后臺線程,并導(dǎo)致數(shù)據(jù)庫崩潰。
出于這些原因,Oracle 在Oracle Home/bin 目錄下提供了一個 orakill.exe 命令,這個命令的參數(shù)與ALTER SYSTEM KILL SESSION 相同,但是不要求數(shù)據(jù)庫連接。要定位一個特定的線程,需要尋找一個能夠顯示屬于一個進程的所有線程的程序。Windows 任務(wù)管理器只能顯示線程數(shù)和進程。你需要從微軟的資源工具包中尋找一個用于 Windows 2000 和 NT 的工具程序,比如免費的QuickSlice,或者Qslice.exe(該工具是基于 Windows 的),或者PStat(Pstat.exe 是一個命令行工具)。簡單地在 orakill 命令后輸入線程 ID(以十進制表示)和 SID 即可:
orakill <sid> <spid>
orakill ORCL 2760


"Kill of thread id 2760 in instance ORCL successfully signalled[sic]."
應(yīng)該只有在不能訪問數(shù)據(jù)庫來執(zhí)行ALTER SYSTEM KILL SESSION 的情況才使用orakill。如果意外結(jié)束了一個必要的后臺進程,比如 PMON,那么很可能會導(dǎo)致數(shù)據(jù)庫崩潰。新手永遠不要這樣做。
Orakill的使用方法如下:
              Dos提示符下:>orakill sid thread
              說明: sid Oracle的Sid號
                                  thread  Oracle的線程id號
在Sql*plus工具里面可以查詢到Oracle的線程號
sql:>Select p.spid THREADID, s.osuser, s.program
From v$process p, v$session s
Where p.addr = s.paddr
結(jié)果如下:
THREADID  OSUSER                                  PROGRAM
--------- ----------------------- -----------------------------
169            SYSTEM                                  ORACLE.EXE
215            SYSTEM                                  ORACLE.EXE
280            SYSTEM                                  ORACLE.EXE
267            SYSTEM                                  ORACLE.EXE
287            SYSTEM                                  ORACLE.EXE
288            SYSTEM                                  ORACLE.EXE
271            SYSTEM                                  ORACLE.EXE 
282            SYSTEM                                  ORACLE.EXE 
239            PROD_NTdjones                  SVRMGRL.EXE
281            SSMITH-PCssmith              SQLPLUSW.EXE


12 rows selected.


需要注意的是,如果你Kill掉的是Oracle的核心后臺線程(DBWR, LGWR, SMON or PMON),將導(dǎo)致Oracle實例關(guān)閉。檢查Oracle的核心后臺線程的方法如下:
sql:>Select vb.name NOME, vp.programe PROCESSNAME, vp.spid THREADID, vs,sid SID
From v$session vs, v$process vp, v$bgprocess vb
Where vb.addr <> ‘00’ and
vb.paddr = vp.addr and
vp.addr = vs.paddr
查詢結(jié)果如下:


NOME  PROCESSNAME                                                THREADID  SID
----- ----------------------------------- --------- ------
PMON  ORACLE.EXE                                                  169            1
DBW0  ORACLE.EXE                                                  215            2
LGWR  ORACLE.EXE                                                  280            3
CKPT  ORACLE.EXE                                                  267            4
SMON  ORACLE.EXE                                                  287            5
RECO  ORACLE.EXE                                                  288            6
SNP0  ORACLE.EXE                                                  271            7
SNP1  ORACLE.EXE                                                  282            8


8 rows selected.

window xp + oracle 9.2.0.1


================
orakill的用法
================
SQL> SELECT spid, osuser, s.program,sid
                                FROM v$process p, v$session s
                                WHERE p.addr=s.paddr;


SPID                                        OSUSER                            PROGRAM                              SID
------------------------ -------------------- --------------- ----------
6928                                        SYSTEM                            ORACLE.EXE                            1
5272                                        SYSTEM                            ORACLE.EXE                            2
7008                                        SYSTEM                            ORACLE.EXE                            3
6588                                        SYSTEM                            ORACLE.EXE                            4
6780                                        SYSTEM                            ORACLE.EXE                            5
6128                                        SYSTEM                            ORACLE.EXE                            6
6740                                        SYSTEM                            ORACLE.EXE                            7
6684                                        SYSTEM                            ORACLE.EXE                            8
7092                                        SYSTEM                            ORACLE.EXE                            9
6272                                        SYSTEM                            ORACLE.EXE                          10
4760                                        lifeng.fang                  sqlplus.exe                                        12
SPID                                        OSUSER                            PROGRAM                              SID
------------------------ -------------------- --------------- ----------
6484                                        lifeng.fang                  sqlplus.exe                        11


4284
語法:orakill 實例名 spid  (在win上是線程號)


SQL> host orakill charset 6484;
Kill of thread id 6484 in instance charset successfully signalled.


spid是os進程ID
pid是Oracle process ID


根據(jù)蓋國強的猜測

當在Oracle中kill session以后, Oracle只是簡單的把相關(guān)session的paddr 指向同一個虛擬地址.此時v$process和v$session失去關(guān)聯(lián),進程就此中斷.然后Oracle就等待PMON去清除這些Session.所以通常等待一個被標記為Killed的Session退出需要花費很長的時間.如果此時被Kill的process,重新嘗試執(zhí)行任務(wù),那么馬上會收到進程中斷的提示,process退出,此時Oracle會立即啟動PMON來清除該session.這被作為一次異常中斷處理.

具體的實驗例子讀者可以參考
http://www.eygle.com/faq/Kill_Session.htm

當然如果該用戶已經(jīng)沒有使用,例如在決定刪除該用戶的時候,PMON很可能不回自動的去清理這些session則需要手工觸發(fā)PMON執(zhí)行

首先確認PMON進程是who
SQL> select pid,spid from v$process p,v$bgprocess b
where b.paddr=p.addr
and name='PMON';
       PID SPID
---------- ------------
        2  3608
SQL> oradebug wakeup 2
已處理的語句

SQL> select p.addr from v$process p where pid <> 1  minus select s.paddr from v$session s;  查詢已經(jīng)KILL的進程地址
ADDR--------
542B70E8
542B7498

看完上述內(nèi)容,你們對Kill session 和orakill的會話及進程是怎么樣的有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

本文名稱:Killsession和orakill的會話及進程是怎么樣的
網(wǎng)頁路徑:http://chinadenli.net/article14/pgpoge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司商城網(wǎng)站網(wǎng)站營銷企業(yè)建站自適應(yīng)網(wǎng)站標簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營