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

怎么防止oracle死鎖,oracle的死鎖

如何殺死oracle死鎖進程?

1.查哪個過程被鎖\x0d\x0a查V$DB_OBJECT_CACHE視圖:SELECT*FROMV$DB_OBJECT_CACHEWHEREOWNER='過程的所屬用戶'ANDLOCKS!='0';\x0d\x0a2. 查是哪一個SID,通過SID可知道是哪個SESSION.\x0d\x0a查V$ACCESS視圖:SELECT*FROMV$ACCESSWHEREOWNER='過程的所屬用戶'ANDNAME='剛才查到的過程名';\x0d\x0a3. 查出SID和SERIAL#\x0d\x0a查V$SESSION視圖:SELECTSID,SERIAL#,PADDRFROMV$SESSIONWHERESID='剛才查到的SID'查V$PROCESS視圖:SELECTSPIDFROMV$PROCESSWHEREADDR='剛才查到的PADDR';\x0d\x0a4. 殺進程(1).先殺ORACLE進程:ALTERSYSTEMKILLSESSION'查出的SID,查出的SERIAL#';(2).再殺操作系統(tǒng)進程:KILL-9剛才查出的SPID或ORAKILL剛才查出的SID剛才查出的SPID方法二:經(jīng)常在oracle的使用過程中碰到這個問題,所以也總結(jié)了一點解決方法:)1)查找死鎖的進程:sqlplus"/assysdba"SELECT\x0d\x0as.username,l.\x0d\x0aOBJECT_ID\x0d\x0a,l.SESSION_ID,s.SERIAL#,l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESSFROMV$LOCKED_OBJECTl,V$SESSIONSWHERE\x0d\x0al.SESSION_ID=\x0d\x0aS.SID;2)kill掉這個死鎖的進程:altersystemkillsession‘sid,serial#’;(其中sid=\x0d\x0al.session_id)3)如果還不能解決,\x0d\x0aselectpro.spidfromv$sessionses,v$processprowhereses.sid=XXandses.paddr=pro.addr;其中sid用死鎖的sid替換。

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:空間域名、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、高州網(wǎng)站維護、網(wǎng)站推廣。

oracle數(shù)據(jù)庫死鎖怎么解決

Oracle數(shù)據(jù)庫出現(xiàn)死鎖的時候可以按照以下處理步驟加以解決:

第一步:嘗試在sqlplus中通過sql命令進行刪除,如果能夠刪除成功,則萬事大吉!但通常情況下,出現(xiàn)死鎖時,想通過命令行或者通過Oracle的管理工具刪除有死鎖的session,oracle只會將該session標(biāo)記為killed,但無法清除掉,往往需要通過第二步在操作系統(tǒng)層級進行刪除!

Connected?to?Oracle9i?Enterprise?Edition?Release?9.2.0.1.0?

Connected?as?quik

SQL?select?xidusn,?object_id,?session_id,?locked_mode?from?v$locked_object;?--查死鎖的對象,獲取其SESSION_ID

XIDUSN?OBJECT_ID?SESSION_ID?LOCKED_MODE

----------?----------?----------?-----------

10?30724?29?3

10?30649?29?3

SQL?select?username,sid,serial#?from?v$session?where?sid=29;?--根據(jù)上步獲取到的sid查看其serial#號

USERNAME?SID?SERIAL#

------------------------------?----------?----------

QUIK?29?57107

SQL?alter?system?kill?session?'29,57107';?--刪除進程,如已經(jīng)刪除過,則會報ora-00031的錯誤;否則oracle會將該session標(biāo)記為killed狀態(tài),等待一段時間看能否會自動消失,如長時間消失不掉,則需要做后續(xù)步驟

alter?system?kill?session?'29,57107'

ORA-00031:?session?marked?for?kill

SQL?select?pro.spid?from?v$session?ses,v$process?pro?where?ses.sid=29?and?ses.paddr=pro.addr;?--查看spid號,以便在操作系統(tǒng)中根據(jù)該進程號刪除進程

SPID

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

2273286

第二步:進入操作系統(tǒng)進行刪除進程,本示例的操作系統(tǒng)是IBM aix。

login:?root?--錄入用戶名

root's?Password:?--錄入密碼

*******************************************************************************

*?*

*?*

*?Welcome?to?AIX?Version?5.3!?*

*?*

*?*

*?Please?see?the?README?file?in?/usr/lpp/bos?for?information?pertinent?to?*

*?this?release?of?the?AIX?Operating?System.?*

*?*

*?*

*******************************************************************************

Last?unsuccessful?login:?Fri?Apr?23?14:42:57?BEIDT?2010?on?/dev/pts/1?from?10.73

.52.254

Last?login:?Fri?Apr?23?15:27:50?BEIDT?2010?on?/dev/pts/2?from?10.73.52.254

#?ps?-ef|grep?2273286?--查看進程詳情

root?2289864?2494636?0?17:07:15?pts/1?0:00?grep?2273286

oracle?2273286?1?0?14:38:24?-?0:21?oracleQUIK?(LOCAL=NO)

#?kill?-9?2273286?--刪除進程,小心操作,別寫錯進程號,如果oracle的關(guān)鍵進程被刪,數(shù)據(jù)庫會崩潰的!

#?ps?-ef|grep?2273286?--再次查看

root?2289864?2494636?0?17:07:15?pts/1?0:00?grep?2273286

For?Windows,?at?the?DOS?Prompt:?orakill?sid?spid

For?UNIX?at?the?command?line?kill?–9?spid

如何避免oracle導(dǎo)入時出現(xiàn)死鎖

什么是死鎖

當(dāng)兩個(或多個)用戶互相等待被對方加鎖的資源時就會發(fā)生死鎖(deadlock)。死鎖將導(dǎo)致相關(guān)的事務(wù)停止執(zhí)行。下圖演示了產(chǎn)生死鎖的兩個事務(wù)。

如圖所示,在時間點 A,兩個事務(wù)均獲得了更新操作所需數(shù)據(jù)行上的鎖,此時兩事務(wù)均正常,能夠繼續(xù)執(zhí)行。接下來,兩個事務(wù)均要更新當(dāng)前被對方加鎖的數(shù)據(jù)。因此,在時間點 B 將發(fā)生死鎖,因為此時兩個事務(wù)都不能獲得繼續(xù)執(zhí)行或終止所需的資源。無論兩個事務(wù)等待多久,相互沖突的鎖都無法被釋放,所以此種情況被稱為死鎖。

圖:產(chǎn)生死鎖的兩個事務(wù)

檢測死鎖

數(shù)據(jù)庫能自動地檢測死鎖的情況,回滾造成死鎖的某個語句,以便釋放沖突的行級鎖,從而解決死鎖問題。數(shù)據(jù)庫將向執(zhí)行了語句級回滾的事務(wù)返回一個錯誤信息。

避免死鎖

如果兩個事務(wù)需要訪問相同的一組表,那么在兩個事務(wù)中按相同的順序?qū)@組表加鎖通常能避免多表死鎖。例如,如果系統(tǒng)中的一個主表及一個明細表都需要更新時,開發(fā)者應(yīng)該遵從一定的規(guī)則,如先對主表加鎖,再對明細表加鎖。如果能夠仔細設(shè)計類似的規(guī)則并嚴(yán)格執(zhí)行,就能從根本上杜絕死鎖的產(chǎn)生。 如果開發(fā)者預(yù)先知道需要在同一事務(wù)內(nèi)對一系列資源加鎖,那么應(yīng)考慮首先對排他性最高的資源加鎖。

關(guān)于數(shù)據(jù)庫死鎖的檢查方法

一、數(shù)據(jù)庫死鎖的現(xiàn)象

程序在執(zhí)行的過程中,點擊確定或保存按鈕,程序沒有響應(yīng),也沒有出現(xiàn)報錯。

二、死鎖的原理

當(dāng)對于數(shù)據(jù)庫某個表的某一列做更新或刪除等操作,執(zhí)行完畢后該條語句不提

交,另一條對于這一列數(shù)據(jù)做更新操作的語句在執(zhí)行的時候就會處于等待狀態(tài),

此時的現(xiàn)象是這條語句一直在執(zhí)行,但一直沒有執(zhí)行成功,也沒有報錯。

三、死鎖的定位方法

通過檢查數(shù)據(jù)庫表,能夠檢查出是哪一條語句被死鎖,產(chǎn)生死鎖的機器是哪一臺。

1)用dba用戶執(zhí)行以下語句

select username,lockwait,status,machine,program from v$session where sid in

(select session_id from v$locked_object)

如果有輸出的結(jié)果,則說明有死鎖,且能看到死鎖的機器是哪一臺。字段說明:

Username:死鎖語句所用的數(shù)據(jù)庫用戶;

Lockwait:死鎖的狀態(tài),如果有內(nèi)容表示被死鎖。

Status: 狀態(tài),active表示被死鎖

Machine: 死鎖語句所在的機器。

Program: 產(chǎn)生死鎖的語句主要來自哪個應(yīng)用程序。

2)用dba用戶執(zhí)行以下語句,可以查看到被死鎖的語句。

select sql_text from v$sql where hash_value in

(select sql_hash_value from v$session where sid in

(select session_id from v$locked_object))

四、死鎖的解決方法

一般情況下,只要將產(chǎn)生死鎖的語句提交就可以了,但是在實際的執(zhí)行過程中。用戶可

能不知道產(chǎn)生死鎖的語句是哪一句。可以將程序關(guān)閉并重新啟動就可以了。

經(jīng)常在Oracle的使用過程中碰到這個問題,所以也總結(jié)了一點解決方法。

1)查找死鎖的進程:

sqlplus "/as sysdba" (sys/change_on_install)

SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,

l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS

FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;

2)kill掉這個死鎖的進程:

alter system kill session ‘sid,serial#’; (其中sid=l.session_id)

alter system kill session '710,35184'; (其中sid=l.session_id)

3)如果還不能解決:

select pro.spid from v$session ses,v$process pro where ses.sid=XX and ses.paddr=pro.addr;

其中sid用死鎖的sid替換: exit

ps -ef|grep spid

其中spid是這個進程的進程號,kill掉這個Oracle進程

from:

select A.SQL_TEXT, B.USERNAME, C.OBJECT_ID, C.SESSION_ID,

B.SERIAL#, C.ORACLE_USERNAME,C.OS_USER_NAME,C.Process,

''''||C.Session_ID||','||B.SERIAL#||''''

from v$sql A, v$session B, v$locked_object C

where A.HASH_VALUE = B.SQL_HASH_VALUE and

B.SID = C.Session_ID

文章題目:怎么防止oracle死鎖,oracle的死鎖
當(dāng)前地址:http://chinadenli.net/article31/dsiocpd.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗服務(wù)器托管品牌網(wǎng)站制作網(wǎng)站營銷自適應(yīng)網(wǎng)站軟件開發(fā)

廣告

聲明:本網(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)

外貿(mào)網(wǎng)站建設(shè)