鎖表:LOCK TABLE tablename IN 鎖模式 MODE;
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計(jì)制作、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的澗西網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
解鎖:commit或rollback;
鎖模式有以下幾種:
ROW SHARE
ROW SHARE permits concurrent access to the locked table but prohibits users from locking the entire table for exclusive access. ROW SHARE is synonymous with SHARE UPDATE, which is included for compatibility with earlier versions of Oracle Database.
ROW EXCLUSIVE
ROW EXCLUSIVE is the same as ROW SHARE, but it also prohibits locking in SHARE mode. ROW EXCLUSIVE locks are automatically obtained when updating, inserting, or deleting.
SHARE UPDATE
See ROW SHARE.
SHARE
SHARE permits concurrent queries but prohibits updates to the locked table.
SHARE ROW EXCLUSIVE
SHARE ROW EXCLUSIVE is used to look at a whole table and to allow others to look at rows in the table but to prohibit others from locking the table in SHARE mode or from updating rows.
EXCLUSIVE
EXCLUSIVE permits queries on the locked table but prohibits any other activity on it.
一些ORACLE中的進(jìn)程被殺掉后,狀態(tài)被置為"killed",但是鎖定的資源很長(zhǎng)時(shí)間不釋放,有時(shí)實(shí)在沒(méi)辦法,只好重啟數(shù)據(jù)庫(kù)。現(xiàn)在提供一種方法解決這種問(wèn)題,那就是在ORACLE中殺不掉的,在OS一級(jí)再殺。
1.下面的語(yǔ)句用來(lái)查詢(xún)哪些對(duì)象被鎖:
select object_name,machine,s.sid,s.serial#
from v$locked_object l,dba_objects o ,v$session s
where l.object_id = o.object_id and l.session_id=s.sid;
2.下面的語(yǔ)句用來(lái)殺死一個(gè)進(jìn)程:
alter system kill session '24,111'; (其中24,111分別是上面查詢(xún)出的sid,serial#)
【注】以上兩步,可以通過(guò)Oracle的管理控制臺(tái)來(lái)執(zhí)行。
3.如果利用上面的命令殺死一個(gè)進(jìn)程后,進(jìn)程狀態(tài)被置為"killed",但是鎖定的資源很長(zhǎng)時(shí)間沒(méi)有被釋放,那么可以在os一級(jí)再殺死相應(yīng)的進(jìn)程(線(xiàn)程),首先執(zhí)行下面的語(yǔ)句獲得進(jìn)程(線(xiàn)程)號(hào):
select spid, osuser, s.program
from v$session s,v$process p
where s.paddr=p.addr and s.sid=24 (24是上面的sid)
4.在OS上殺死這個(gè)進(jìn)程(線(xiàn)程):
1)在unix上,用root身份執(zhí)行命令:
#kill -9 12345(即第3步查詢(xún)出的spid)
2)在windows(unix也適用)用orakill殺死線(xiàn)程,orakill是oracle提供的一個(gè)可執(zhí)行命令,語(yǔ)法為:
orakill sid thread
其中:
sid:表示要?dú)⑺赖倪M(jìn)程屬于的實(shí)例名
thread:是要?dú)⒌舻木€(xiàn)程號(hào),即第3步查詢(xún)出的spid。
例:c:orakill orcl 12345
在對(duì)指定表做append操作,其他再做truncate時(shí)候,會(huì)產(chǎn)生鎖表,如下驗(yàn)證步驟,
1、創(chuàng)建測(cè)試表,
create table test_lock(id number, value varchar2(200));
2、執(zhí)行append語(yǔ)句;并且不做提交,insert /*+append*/ into test_lock values(1,1);
3、再次執(zhí)行清表語(yǔ)句,truncate table test_lock;報(bào)鎖表錯(cuò)誤,
4、查看鎖表語(yǔ)句,發(fā)現(xiàn)被鎖表,
select b.object_name, t.*
from v$locked_object t, user_objects b
where t.object_id = b.object_id
lock table 表名 exclusive mode nowait; -- 鎖整個(gè)表
select * from 表名 where XXX for update nowaitl -- 鎖符合條件的記錄
當(dāng)前文章:oracle如何給表上鎖,oracle鎖表怎么處理
分享鏈接:http://vcdvsql.cn/article42/dsiioec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、用戶(hù)體驗(yàn)、、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)