真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

oracle怎么清線程,清理oracle

如何殺掉Oracle中的會(huì)話

有時(shí),Oracle中造成一些表被死鎖或者會(huì)話異常退出,如執(zhí)行了更新記錄操作后,既沒(méi)有commit也沒(méi)有rollback,網(wǎng)絡(luò)就斷開(kāi)了,也會(huì)造表或記錄被鎖住,待到超時(shí)后才會(huì)被解開(kāi),那樣都會(huì)造成應(yīng)用操作被阻塞。

為千山等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及千山網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都做網(wǎng)站、網(wǎng)站建設(shè)、千山網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

可以以O(shè)ralce管理員權(quán)限用戶登錄Oracle數(shù)據(jù),查詢到被鎖的對(duì)象,然后殺除指定的會(huì)話。

用下面的語(yǔ)句查詢被鎖的對(duì)象,可以帶上更多約束條件,如schemaname等更精確的匹配。

SELECT

a.object_id, a.session_id, b.object_name, c.*

FROM

v$locked_object a, dba_objects b, v$session c

WHERE

a.object_id = b.object_id

AND

a.SESSION_ID = c.sid(+)

殺Seesion的SQL語(yǔ)句語(yǔ)法如下:

alter system kill session 'sid, serial#'

如上面查出來(lái)的一條記錄的sid是53, serial#為663,就執(zhí)行以下的語(yǔ)句 alter system kill session '53,663'

如果要一次性殺死多個(gè)會(huì)話,一個(gè)一個(gè)填寫(xiě)sid和serial#十分的繁瑣,應(yīng)該在查詢被鎖對(duì)象的同時(shí)拼湊出多條的殺會(huì)話語(yǔ)句,以分號(hào)分隔,一起復(fù)制下來(lái),然后就可以批量的執(zhí)行了。

拼湊kill語(yǔ)句的方式如下,下面加了一個(gè)過(guò)濾條件和一個(gè)排序,殺除真正關(guān)心的表,并且著重注意超時(shí)時(shí)間過(guò)長(zhǎng)的會(huì)話。

SELECT 'alter system kill session ''' || c.sid || '' || ',' || c.serial# ||''';',

a.object_id, a.session_id, b.object_name, c.*

FROM v$locked_object a, dba_objects b, v$session c

WHERE a.object_id = b.object_id

AND a.SESSION_ID = c.sid(+)

AND schemaname = 'Unmi'

ORDER BY logon_time

你遇到過(guò)下面類似的情況嗎?一個(gè)用戶進(jìn)程長(zhǎng)期占用資源而不釋放,導(dǎo)致Oracle進(jìn)程占用了系統(tǒng)的大量資源,Oralce系統(tǒng)的效率變得很低。如果簡(jiǎn)單的關(guān)閉重啟Oracle

實(shí)例,勢(shì)必影響所有的用戶。有沒(méi)有辦法僅僅只Kill掉有問(wèn)題的用戶進(jìn)程而不用關(guān)閉整個(gè)Oralce實(shí)例呢?答案是可以的,使用Oralce提供的一個(gè)名叫Orakill的工具。

大家都知道,Windows

2000是一個(gè)基于線程的操作系統(tǒng),而不是象Unix、Linux那樣基于進(jìn)程的操作系統(tǒng)。整個(gè)Oracle的后臺(tái)進(jìn)程、用戶進(jìn)程等,在Windows

2000環(huán)境下,都包含在ORACLE.EXE這單獨(dú)的一個(gè)體系進(jìn)程中了,通過(guò)查看’任務(wù)管理器’――’進(jìn)程’就可以看到。如果你不是使用MTS多線程服

務(wù)器的模式,如果你Kill掉ORACLE.EXE這個(gè)進(jìn)程,將導(dǎo)致整個(gè)Oracle實(shí)例關(guān)閉,如同使用Shutdown

abort命令一樣。

由于Windows自己沒(méi)有提過(guò)一個(gè)專門用來(lái)Kill掉單個(gè)線程的工具,因此Oracle從Oracle7.3.3.6開(kāi)始,自己提供了一個(gè)基于字符界面的用來(lái)在Windows環(huán)境下強(qiáng)制Kill掉一個(gè)線程的工具――Orakill。

在NT中如果使用alter system kill

session

'sid,serial#'來(lái)清楚會(huì)話,在執(zhí)行之后該會(huì)話的狀態(tài)會(huì)變?yōu)镵ILLED,但是有時(shí)候這個(gè)狀態(tài)會(huì)保持很長(zhǎng)時(shí)間,直到最后被清除。

如果想更快地從內(nèi)存中清理這個(gè)會(huì)話,那么可以在使用了alter

system之后,再在NT中使用Orakill實(shí)用程序(該程序隨Oracle數(shù)據(jù)庫(kù)同時(shí)安裝)直接清除該會(huì)話的線程。

Orakill的使用方法如下:

Dos提示符下:orakill sid thread

說(shuō)明: sid Oracle的Sid號(hào)

thread Oracle的線程id號(hào)

首先取得被殺掉的會(huì)話的Thread Number:

SET pagesize 100

SET linesize 100

COLUMN Program format a20

SELECT s.sid AS "Sid", s.serial# AS "Serial#", p.spid AS

"ThreadID",

s.osuser

AS "OSUser", s.program AS "Program"

FROM v$process p, v$session s

WHERE p.addr = s.paddr(+)

ORDER BY s.sid

輸出可能如下:

Sid Serial# ThreadID OSUser Program

--- ------- -------- ------ -------

...

10 809 102 User01 Prog.exe

11 345 333 SeUser App.exe

15 719 422 User01 Prge.exe

20 345 123 SeUs Acco.exe

555

324

然后在命令行窗口執(zhí)行Orakill命令

例:orakill ORCL 555

orakill ORCL 324

orakill的命令幫助如下:

C:orakill

Usage: orakill sid thread

where sid = the Oracle instance to target

thread = the thread id of the thread to kill

The thread id should be retrieved from the spid column of a query

such

as:

SELECT spid, osuser, s.program

FROM v$process p, v$session s

WHERE p.addr = s.paddr;

需要注意的是,如果你Kill掉的是Oracle的核心后臺(tái)線程(DBWR, LGWR, SMON or

PMON),將導(dǎo)致Oracle實(shí)例關(guān)閉。檢查Oracle的核心后臺(tái)線程的方法如下:

sql:Select vb.name NOME, vp.programe PROCESSNAME,

vp.spid THREADID, vs,sid SID

sql:From v$session vs, v$process vp, v$bgprocess

vb

sql:Where vb.addr

‘00’ and

sql:vb.paddr = vp.addr and

sql: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.

特別提醒,這里的sid指的是oracle的實(shí)例號(hào)

select instance from v$instance;

而且orakill只能用于oracle實(shí)例安裝在windows上的時(shí)候

如何啟動(dòng)與關(guān)閉Oracle 10g的服務(wù)或線程

從Oracle10g開(kāi)始,Oracle極大的增強(qiáng)了OEM工具,并通過(guò)服務(wù)器端進(jìn)行EM工具全面展現(xiàn)。

在10g中,客戶端可以不必安裝任何Oracle客戶端工具,僅憑瀏覽器就可以調(diào)用強(qiáng)大的EM工具。

在Server端,可以通過(guò)如下命令啟動(dòng)EM工具控制臺(tái):

emctl start dbconsole

以下是啟動(dòng)過(guò)程:

[oracle@danaly ~]$ emctl start dbconsole

TZ set to PRC

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.

Starting Oracle Enterprise Manager 10g Database Control .......................... started.

------------------------------------------------------------------

Logs are generated in directory /opt/oracle/product/10.2.0/.cn_danaly/sysman/log

啟動(dòng)之后我們就可以通過(guò)在瀏覽器端輸入以下url訪問(wèn):

同樣停止OEM可以輸入如下命令:

emctl stop dbconsole

以下是停止過(guò)程:

[oracle@danaly ~]$ emctl stop dbconsole

TZ set to PRC

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.

Stopping Oracle Enterprise Manager 10g Database Control ...... Stopped.

也可以直接鍵入emctl查看emctl支持的選項(xiàng):

[oracle@danaly ~]$ emctl

TZ set to PRC

Oracle Enterprise Manager 10g Database Control Release 10.2.0.1.0

Copyright (c) 1996, 2005 Oracle Corporation. All rights reserved.

Invalid arguments

Unknown command option

Usage::

Oracle Enterprise Manager 10g Database Control commands:

emctl start| stop| status| setpasswd dbconsole

emctl secure

emctl set ssl test|off|on em

emctl set ldap

emctl blackout options can be listed by typing "emctl blackout"

emctl config options can be listed by typing "emctl config"

emctl secure options can be listed by typing "emctl secure"

emctl ilint options can be listed by typing "emctl ilint"

emctl deploy options can be listed by typing "emctl deploy"

Oracle進(jìn)程刪除不掉怎么辦?

方法/步驟\x0d\x0a1.查詢哪些對(duì)象被鎖:\x0d\x0aselect object_name,machine,s.sid,s.serial# \x0d\x0afrom v$locked_object l,dba_objects o ,v$session s\x0d\x0awhere l.object_id = o.object_id and l.session_id=s.sid;\x0d\x0a\x0d\x0a2.殺死進(jìn)程:\x0d\x0aalter system kill session '137,233'; (其中137,223分別是上面查詢出的sid,serial#)\x0d\x0a\x0d\x0aPS.以上兩步,可通過(guò)Oracle的管理控制臺(tái)來(lái)執(zhí)行。\x0d\x0a\x0d\x0a如果利用上面的方法殺死進(jìn)程后,進(jìn)程狀態(tài)雖被置為"killed",但是鎖定的資源很長(zhǎng)時(shí)間沒(méi)有被釋放,那么可以在OS一級(jí)再殺死相應(yīng)的進(jìn)程(線程)\x0d\x0a\x0d\x0a1.首先獲得進(jìn)程(線程)號(hào):\x0d\x0aselect spid, osuser, s.program \x0d\x0afrom v$session s,v$process p\x0d\x0awhere s.paddr=p.addr and s.sid=137 (137是上面的sid)\x0d\x0a\x0d\x0a2.在OS上殺死這個(gè)進(jìn)程(線程):\x0d\x0a\x0d\x0a1)在unix上,用root身份執(zhí)行命令: \x0d\x0a#kill -9 12345(即上面查詢出的spid)\x0d\x0a\x0d\x0a2)在windows(unix也適用)用orakill殺死線程,例:c:orakill orcl 12345\x0d\x0aorakill是oracle提供的一個(gè)可執(zhí)行命令,語(yǔ)法為:orakill sid thread\x0d\x0a其中:\x0d\x0asid:表示要?dú)⑺赖倪M(jìn)程屬于的實(shí)例名\x0d\x0athread:是要?dú)⒌舻木€程號(hào),即上面查詢出的spid。


當(dāng)前名稱:oracle怎么清線程,清理oracle
網(wǎng)站地址:http://weahome.cn/article/dssjhie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部