在對指定表做append操作,其他再做truncate時候,會產(chǎn)生鎖表,如下驗證步驟,
成都創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)營銷推廣、網(wǎng)站重做改版、陽春網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、商城系統(tǒng)網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為陽春等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
1、創(chuàng)建測試表,
create table test_lock(id number, value varchar2(200));
2、執(zhí)行append語句;并且不做提交,insert /*+append*/ into test_lock values(1,1);
3、再次執(zhí)行清表語句,truncate table test_lock;報鎖表錯誤,
4、查看鎖表語句,發(fā)現(xiàn)被鎖表,
select b.object_name, t.*
from v$locked_object t, user_objects b
where t.object_id = b.object_id
如果是sqlserver的話,給出下面示例
SELECT
*
FROM
table
WITH
(HOLDLOCK)
其他事務(wù)可以讀取表,但不能更新刪除
SELECT
*
FROM
table
WITH
(TABLOCKX)
其他事務(wù)不能讀取表,更新和刪除
如果是oracle的話,lz可以使用for
update用法
select
*
from
TTable1
for
update
鎖定表的所有行,只能讀不能寫
有問題再追問。
典型的資源競爭。
由于update產(chǎn)生的死鎖
1:用戶1對A表進行Update,沒有提交。
2:用戶2對B表進行Update,沒有提交。
3:如果用戶2此時對A表作update,則會發(fā)生阻塞,需要等到用戶一的事物結(jié)束。
4:如果此時用戶1又對B表作update,則產(chǎn)生死鎖。此時Oracle會選擇其中一個用戶進行會滾,使另一個用戶繼續(xù)執(zhí)行操作。
查看數(shù)據(jù)庫alert.log
delete也差不多
一、數(shù)據(jù)庫死鎖的現(xiàn)象
程序在執(zhí)行的過程中,點擊確定或保存按鈕,程序沒有響應(yīng),也沒有出現(xiàn)報錯。
二、oracle死鎖的原理
當對于數(shù)據(jù)庫某個表的某一列做更新或刪除等操作,執(zhí)行完畢后該條語句不提交,另一條對于這一列數(shù)據(jù)做更新操作的語句在執(zhí)行的時候就會處于等待狀態(tài),此時的現(xiàn)象是這條語句一直在執(zhí)行,但一直沒有執(zhí)行成功,也沒有報錯。
三、oracle死鎖的定位方法
通過檢查數(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í)行以下語句,可以查看到被死鎖的語句。
網(wǎng)頁標題:oracle如何死鎖表 oracle 表死鎖
轉(zhuǎn)載源于:http://www.muchs.cn/article14/hphhde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、移動網(wǎng)站建設(shè)、云服務(wù)器、全網(wǎng)營銷推廣、搜索引擎優(yōu)化、商城網(wǎng)站
聲明:本網(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)