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

如何關(guān)閉oracle會(huì)話,oracle無法終止當(dāng)前會(huì)話

怎么立即關(guān)閉與oracle的會(huì)話

你可以考慮使用在操作系統(tǒng)層面來殺掉客戶端會(huì)話的連接進(jìn)程,這樣資源馬上就可以釋放掉,如果只是在數(shù)據(jù)庫級(jí)別的話,即便是管理員殺掉會(huì)話,那么v$session里面也不過是顯示killed狀態(tài),而不是真正的釋放掉,同時(shí)如果此時(shí)實(shí)際的連接數(shù)量達(dá)到參數(shù)session設(shè)定數(shù)量上線的話,新的連接將會(huì)報(bào)錯(cuò)無法連接,直到資源釋放才可以。

成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、小程序開發(fā)、集團(tuán)成都企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:工商代辦等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時(shí)也獲得了客戶的一致稱揚(yáng)!

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

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

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

用下面的語句查詢被鎖的對(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語句語法如下:

alter system kill session 'sid, serial#'

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

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

拼湊kill語句的方式如下,下面加了一個(gè)過濾條件和一個(gè)排序,殺除真正關(guān)心的表,并且著重注意超時(shí)時(shí)間過長的會(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

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

實(shí)例,勢(shì)必影響所有的用戶。有沒有辦法僅僅只Kill掉有問題的用戶進(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)程中了,通過查看’任務(wù)管理器’――’進(jìn)程’就可以看到。如果你不是使用MTS多線程服

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

abort命令一樣。

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

在NT中如果使用alter system kill

session

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

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

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

Orakill的使用方法如下:

Dos提示符下:orakill sid thread

說明: 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í)候

Oracle中執(zhí)行立即關(guān)閉的命令是什么?

用 shutdown immdiate;\x0d\x0a\x0d\x0aSHUTDOWN NORMAL:不允許新的連接、等待會(huì)話結(jié)束、等待事務(wù)結(jié)束、做一個(gè)檢查點(diǎn)并關(guān)閉數(shù)據(jù)文件。啟動(dòng)時(shí)不需要實(shí)例恢復(fù)。\x0d\x0aSHUTDOWN TRANSACTIONAL:不允許新的連接、不等待會(huì)話結(jié)束、等待事務(wù)結(jié)束、做一個(gè)檢查點(diǎn)并關(guān)閉數(shù)據(jù)文件。啟動(dòng)時(shí)不需要實(shí)例恢復(fù)。\x0d\x0aSHUTDOWN IMMEDIATE:不允許新的連接、不等待會(huì)話結(jié)束、不等待事務(wù)結(jié)束、做一個(gè)檢查點(diǎn)并關(guān)閉數(shù)據(jù)文件。沒有結(jié)束的事務(wù)是自動(dòng)rollback的。啟動(dòng)時(shí)不需要實(shí)例恢復(fù)。 \x0d\x0aSHUTDOWN ABORT:不允許新的連接、不等待會(huì)話結(jié)束、不等待事務(wù)結(jié)束、不做檢查點(diǎn)且沒有關(guān)閉數(shù)據(jù)文件。啟動(dòng)時(shí)自動(dòng)進(jìn)行實(shí)例恢復(fù)。

新聞標(biāo)題:如何關(guān)閉oracle會(huì)話,oracle無法終止當(dāng)前會(huì)話
當(dāng)前網(wǎng)址:http://chinadenli.net/article26/dsiisjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、自適應(yīng)網(wǎng)站虛擬主機(jī)、標(biāo)簽優(yōu)化、企業(yè)建站云服務(wù)器

廣告

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

成都做網(wǎng)站