目錄
oracle中insert會鎖定表嗎
首頁 資料庫 Oracle oracle中insert會鎖表嗎

oracle中insert會鎖表嗎

May 30, 2022 pm 04:29 PM
oracle

oracle中insert會鎖定表;當oracle執行insert等DML語句時,會在所操作的表上申請一個鎖,兩個insert語句同時試圖向一個表進行操作時,就會造成會話被堵塞,等待其他會話提交或回滾,因而造成死鎖。

oracle中insert會鎖表嗎

本教學操作環境:Windows10系統、Oracle 11g版、Dell G3電腦。

oracle中insert會鎖定表嗎

oracle中insert會鎖定表

當ORACLE執行insert等DML語句時,會先自動在要操作的表上申請一個TM鎖,當TM鎖獲得後,再自動申請TX類型的鎖。當兩個或多個會話在表的同一記錄上執行DML語言時,第一個會話在記錄上加鎖,其它的會話處於等待狀態,一直到第一個會話提交後TX鎖釋放,其它的會話才可以加鎖。

考慮是因為兩個insert語句同時試圖在一個表中插入PK或unique值相同的數據,而造成其中會話被阻塞,等待其它會話提交或回滾,因而造成死鎖。

這種情況,只要其中任何一個session提交,另外一個就會報出ORA-00001:違反唯一性約束條件,死鎖終止;或者其中一個session回滾,另外一個即可正常執行。

在oracle中,鎖定表的原因是當一個程式執行了對一個表的insert,並且還未commite時,另一個程式也對同一個表進行insert,則此時就會發生資源正忙的異常,也就是鎖表。

主要的鎖定表原因有:

(1) A程式執行了對tableA 的insert ,並還未commite時,B程式也對tableA 進行insert則此時會發生資源正忙的異常就是鎖表

(2)鎖定表常發生於並發而不是並行(並行時,當一個執行緒操作資料庫時,另一個執行緒是不能操作資料庫的, cpu 和i/o 分配原則)

減少鎖定表的機率方法:

(1)減少insert 、update 、delete 語句執行到commite 之間的時間。具體點批量執行改為單一執行、優化sql自身的非執行速度

(2)如果異常對事物進行回滾

鎖表原因可能是修改了行數據,忘了提交,也會造成鎖表。

擴充知識:

鎖定表建議先查原因再做決定。

1鎖定表查詢的程式碼有以下的形式:

select count(*) from v$locked_object;
select * from v$locked_object;

2.查看哪個表被鎖定

select b.owner,b.object_name,a.session_id,a.locked_mode from v$locked_object a,dba_objects b where b.object_id = a.object_id;

3查看是哪個session引起的

select b.username,b.sid,b.serial#,logon_time from v$locked_object a,v$session b where a.session_id = b.sid order by b.logon_time;

推薦教學:《Oracle影片教學

#

以上是oracle中insert會鎖表嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

怎樣卸載MySQL並清理殘留文件 怎樣卸載MySQL並清理殘留文件 Apr 29, 2025 pm 04:03 PM

要安全、徹底地卸載MySQL並清理所有殘留文件,需遵循以下步驟:1.停止MySQL服務;2.卸載MySQL軟件包;3.清理配置文件和數據目錄;4.驗證卸載是否徹底。

甲骨文在商業世界中的作用 甲骨文在商業世界中的作用 Apr 23, 2025 am 12:01 AM

Oracle不僅是數據庫公司,還是雲計算和ERP系統的領導者。 1.Oracle提供從數據庫到雲服務和ERP系統的全面解決方案。 2.OracleCloud挑戰AWS和Azure,提供IaaS、PaaS和SaaS服務。 3.Oracle的ERP系統如E-BusinessSuite和FusionApplications幫助企業優化運營。

MongoDB與Oracle:了解關鍵差異 MongoDB與Oracle:了解關鍵差異 Apr 16, 2025 am 12:01 AM

MongoDB适合处理大规模非结构化数据,Oracle适用于需要事务一致性的企业级应用。1.MongoDB提供灵活性和高性能,适合处理用户行为数据。2.Oracle以稳定性和强大功能著称,适用于金融系统。3.MongoDB使用文档模型,Oracle使用关系模型。4.MongoDB适合社交媒体应用,Oracle适合企业级应用。

MongoDB vs. Oracle:為您的需求選擇正確的數據庫 MongoDB vs. Oracle:為您的需求選擇正確的數據庫 Apr 22, 2025 am 12:10 AM

MongoDB適合非結構化數據和高擴展性需求,Oracle適合需要嚴格數據一致性的場景。 1.MongoDB靈活存儲不同結構數據,適合社交媒體和物聯網。 2.Oracle結構化數據模型確保數據完整性,適用於金融交易。 3.MongoDB通過分片橫向擴展,Oracle通過RAC縱向擴展。 4.MongoDB維護成本低,Oracle維護成本高但支持完善。

Centos停止維護後的選擇 Centos停止維護後的選擇 Apr 14, 2025 pm 08:51 PM

CentOS 已停止維護,替代選擇包括:1. Rocky Linux(兼容性最佳);2. AlmaLinux(與 CentOS 兼容);3. Ubuntu Server(需要配置);4. Red Hat Enterprise Linux(商業版,付費許可);5. Oracle Linux(與 CentOS 和 RHEL 兼容)。在遷移時,考慮因素有:兼容性、可用性、支持、成本和社區支持。

vscode 可以運行 kotlin 嗎 vscode 可以運行 kotlin 嗎 Apr 15, 2025 pm 06:57 PM

在 VS Code 中運行 Kotlin 需要以下環境配置:Java Development Kit (JDK) 和 Kotlin 編譯器Kotlin 相關插件(例如 Kotlin Language 和 Kotlin Extension for VS Code)創建 Kotlin 文件並運行代碼進行測試,確保環境配置成功

yi框架用什麼軟件比較好 yi框架使用軟件推薦 yi框架用什麼軟件比較好 yi框架使用軟件推薦 Apr 18, 2025 pm 11:03 PM

文章首段摘要:在選擇開發 Yi 框架應用程序的軟件時,需要考慮多個因素。雖然原生移動應用程序開發工具(如 XCode 和 Android Studio)可以提供強大的控制和靈活性,但跨平台框架(如 React Native 和 Flutter)憑藉其編寫一次,即可部署到多個平台的優點而越來越受歡迎。對於剛接觸移動開發的開發者,低代碼或無代碼平台(如 AppSheet 和 Glide)可以快速輕鬆地構建應用程序。另外,雲服務提供商(如 AWS Amplify 和 Firebase)提供了全面的工具

MySQL與Oracle:許可,功能和福利 MySQL與Oracle:許可,功能和福利 May 08, 2025 am 12:05 AM

MySQL和Oracle的主要區別在於許可證、功能和優勢。 1.許可證:MySQL提供GPL許可證,免費使用,Oracle採用專有許可證,價格昂貴。 2.功能:MySQL功能簡單,適合Web應用和中小型企業,Oracle功能強大,適合大規模數據和復雜業務。 3.優勢:MySQL開源免費,適合初創公司,Oracle性能可靠,適合大型企業。

See all articles