如何找出某一Table被哪個User或程式Lock?? |
尚未結案
|
No-where
一般會員 發表:31 回覆:53 積分:16 註冊:2002-09-05 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 如何找出某一Table被哪個User或程式Lock?? Database: Oracle 目前方式是去找 Sql_Text找出相關字串來判斷... 但有些情況下仍抓不到.. 請問有其它方法可以使用嗎?? 謝謝我的做法是樣, 不管對方使用那一種資料庫(oracle我也不懂) 1.建置一個userlock table 內置 userid, locktype, locktablename, updatetype, logindate, logintime 六個欄位 2.當某一個user進入某一個資料庫進行異動, 我同步記錄在這個table, 例如 'JOHN','RECORDLOCK','TABLE1','EDIT','2003/06/19'.'12:00:00' 3.如果完成SAVE, 即刪除本筆記錄 這樣, 如果你要找到誰使用那一個TABLE, 情況如何, 由USERLOCK搜尋即可! 原理如此, 程式就看個人如何撰寫囉! 而且這樣有個好處, 未必每一種資料庫都有提供這樣的語法可以使用, 所以不管來源為何, 我都可以適用, 也就是今天如果使用者換了資料庫, 我只要改一下連結就可以了, 無須做整個程式的修正! 發表人 - P.D. 於 2003/06/18 11:45:26 |
No-where
一般會員 發表:31 回覆:53 積分:16 註冊:2002-09-05 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
|
pgdennis
資深會員 發表:41 回覆:526 積分:443 註冊:2002-05-23 發送簡訊給我 |
http://www.dbaoncall.net/cgi-bin/ikonboard/topic.cgi?forum=1&topic=101
Here are a few things to try: 1. Run this script to determine who is holding what locks: /* Detecting Locking rows */ SELECT owner || '.' || object_name || ' [' || object_type || ']' obj_info, dbms_rowid.rowid_create(1, row_wait_obj#, ROW_WAIT_FILE#, ROW_WAIT_BLOCK#,ROW_WAIT_ROW#) "Rowid", a.username, a.sid, a.row_wait_file#, a.row_wait_block#, a.row_wait_row# FROM DBA_OBJECTS, (SELECT a.username, a.sid, a.row_wait_obj#, a.ROW_WAIT_FILE#, a.ROW_WAIT_BLOCK#, a.ROW_WAIT_ROW# FROM v$session a, v$lock b WHERE a.username IS NOT NULL AND a.row_wait_obj# > 0 AND a.sid = b.sid AND b.TYPE = 'TX') a WHERE object_id = a.row_wait_obj# ORDER BY 1, 2 /這篇網頁有講,應該是你要的,我有在 src="http://140.134.4.20/~g8905202/pucca.gif">
------
星期一,二...無窮迴圈@@ |
No-where
一般會員 發表:31 回覆:53 積分:16 註冊:2002-09-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |