Oracle 判斷物件是否被鎖及被鎖的真正原因

2021-08-26 12:18:01 字數 514 閱讀 1740

在oracle中進行插入、更新、刪除操作,都會對相關資料加鎖。當操作的資料所需的鎖被其他會話持有時,就會產生鎖爭用問題。 也即多使用者(多會話)情況下可能發生鎖爭用。

面對表鎖住的情況,通常的解決辦法是殺死被鎖物件的會話。這樣的方式在測試環境或者被鎖會話較少的情況下可以使用,但對於生產環境,或者有較多會話被鎖的情況下,就不能簡單的全部殺掉來處理了。

這種時候,能找到物件被鎖的真正原因,才能準確有效的解決問題。下面展示找到物件被鎖真正原因的方法。

開啟乙個視窗,使用下面語句查詢sid

select userenv('sid') from dual;
在同一視窗中進行資料更新,但不進行提交

開啟另乙個視窗,查詢sid

查詢session狀態

select t.sid, t.event, t.sql_id from v$session t where t.sid in (63, 135);
可以看到被鎖住,而處於空閒狀態

Oracle判斷物件是否存在sql語句

在oracle中判斷乙個使用者自定義物件是否存在,可以通過如下sql語句來實現 select from user objects where object name yourobject 這樣可以取得物件的所有資訊.需要注意的是 1.查詢條件中的物件名要大寫 2.物件名有可能重複,所以需要再指定乙個...

判斷物件是否是空物件

object.keys 方法會返回乙個由乙個給定物件的自身可列舉屬性組成的陣列。通過陣列中屬性的個數判斷是否為空物件。const empty object.keys empty length 0 empty.constructor object 而且需要判斷物件的constructor屬性是否等於o...

js判斷物件是否存在

例項如下 if typeof obj undefined 如果typeof obj undefined 為true則該物件不存在,當前指令碼還沒有定義該物件 其他的寫法要注意 這種方法不起作用 if x undefined 操作語句 這個方法同樣不起作用 必須檢查 字串 undefined if t...