<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Oracle的事務開始於一個DML語句。
當以下情況發生時,事務結束:
1、COMMIT/ROLLBACK
2、執行了DDL/DCL語句
3、使用者端主動斷開資料庫的連線(DISCONNECT)
4、資料庫關閉(宕機)
另外,一個DDL/DCL語句實際上就是一個事務,其中隱含了COMMIT。
Oracle不需要特別的去指定事務的開始和結束。一個事務的結束就是下一個事務的開始。
事務是用來分割資料庫活動的邏輯工作單元。事務既有起點,也有終點:當發生下列事件時,事務就開始了:
1.連線到資料庫上,並執行第一條DML語句
2.前一個事務結束後,又輸入另外一條DML語句
在下列事件之一發生時,事務就結束了:
1.執行Commit或者RollBack語句
2.執行一條DDL語句,例如Create Table語句;在這種情況下,會自動執行Commit語句
3.執行一條DCL語句,例如Grant語句;在這種情況下,會自動執行Commit語句
4.斷開與資料庫連結。在退出SQLPlus事,通常會輸入EXit命令,此時會自動執行Commit語句。如果SQLPlus被意外終止(例如執行SQL*Plus的計算機崩潰)那麼就會執行RollBack語句
事務完成後,如果不顯式的提交或者回滾事務,都被認為是不好的程式設計習慣,因此確保在每個事物後面都要執行Commit或者RollBack語句。
事務中任何地方都可以設定一個儲存點(savepoint),這樣可以將修改回滾到儲存點處。
create table transaction_table8 as select * from dba_objects; insert into transaction_table8 select * from transaction_table8;
select xid, status from v$transaction;
select * from transaction_table8 where rownum=1 for update;
作用:
select for update 是為了在查詢時,避免其他使用者以該表進行插入,修改或刪除等操作,造成表的不一致性.
給你舉幾個例子:
select * from t for update 會等待行鎖釋放之後,返回查詢結果。
select * from t for update nowait 不等待行鎖釋放,提示鎖衝突,不返回結果
select * from t for update wait 5 等待5秒,若行鎖仍未釋放,則提示鎖衝突,不返回結果
select * from t for update skip locked 查詢返回查詢結果,但忽略有行鎖的記錄
SELECT...FOR UPDATE 語句的語法如下:
SELECT ... FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED];
其中:
OF 子句用於指定即將更新的列,即鎖定行上的特定列。
WAIT 子句指定等待其他使用者釋放鎖的秒數,防止無限期的等待。
“使用FOR UPDATE WAIT”子句的優點如下:
1防止無限期地等待被鎖定的行;
2允許應用程式中對鎖的等待時間進行更多的控制。
3對於互動式應用程式非常有用,因為這些使用者不能等待不確定
4 若使用了skip locked,則可以越過鎖定的行,不會報告由wait n 引發的‘資源忙’異常報告
補充幾點:
分成兩類:加鎖範圍子句和加鎖行為子句
加鎖範圍子句:在select…for update之後,可以使用of子句選擇對select的特定資料表進行加鎖操作。預設情況下,不使用of子句表示在select所有的資料表中加鎖
加鎖行為子句:當我們進行for update的操作時,與普通select存在很大不同。一般select是不需要考慮資料是否被鎖定,最多根據多版本一致讀的特性讀取之前的版本。加入for update之後,Oracle就要求啟動一個新事務,嘗試對資料進行加鎖。如果當前已經被加鎖,預設的行為必然是block等待。使用nowait子句的作用就是避免進行等待,當發現請求加鎖資源被鎖定未釋放的時候,直接報錯返回。
在日常中,我們對for update的使用還是比較普遍的,特別是在如pl/sql developer中手工修改資料。此時只是覺得方便,而對for update真正的含義缺乏理解。
For update是Oracle提供的手工提高鎖級別和範圍的特例語句。Oracle的鎖機制是目前各型別資料庫鎖機制中比較優秀的。所以,Oracle認為一般不需要使用者和應用直接進行鎖的控制和提升。甚至認為死鎖這類鎖相關問題的出現場景,大都與手工提升鎖有關。
所以,Oracle並不推薦使用for update作為日常開發使用。而且,在平時開發和運維中,使用了for update卻忘記提交,會引起很多鎖表故障。 那麼,什麼時候需要使用for update?就是那些需要業務層面資料獨佔時,可以考慮使用for update。場景上,比如火車票訂票,在螢幕上顯示郵票,而真正進行出票時,需要重新確定一下這個資料沒有被其他使用者端修改。所以,在這個確認過程中,可以使用for update。這是統一的解決方案方案問題,需要前期有所準備。
到此這篇關於Oracle資料庫事務的開啟與結束的文章就介紹到這了,更多相關Oracle事務開啟與結束內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45