oracle 併發和並行中的Undo 詳細使用說明

2021-08-26 07:18:31 字數 1844 閱讀 1742

無論什麼時候程序或者使用者回話修改過資料庫裡面的資料,oracle把它(資料庫中的資料)被修改以前的存在過的舊值儲存為undo data。這種設計為資料庫使用者提供給了很多好處。

提允許使用者改變他們的剛才的想法,回滾或者undo對資料庫的改變。

支援讀一致性。一旦乙個查詢已經開始,那麼任何在查詢以後的對底層的改變將不會反應到查詢結果中。

支援閃回(flashback)查詢。這一功能是在oracle 9i中被首次受用的。flashback允許使用者檢視乙個表的過去是什麼樣子。只要被請求的時間點的資料然仍然存在。,那麼flashback查詢就是可能的。

理解undo段(undo segments)

undo segments 也叫做rollback segments,在資料庫中和其他的段的概念相似,就像表段,索引段。因為undo segments 也是用擴充套件(extents)組成,這也是有資料塊依次組成。乙個undo段也是裝載的資料和表的資料類似。然而,這是相似之處。undo段必須被儲存在的定型別的表空間,乘坐 undo tablespace。 儘管乙個資料庫可以擁有超過乙個undo 表空間,但是同乙個時刻只能有乙個表空間是活動狀態。undo 段蒐集包含在乙個事物中的乙個或者許多表的undo資訊。而且undo表空間按照需要自動增大或者減小,就像迴圈緩衝區。在乙個undo段中填滿擴充套件的是能回到段的開始,如果段的第乙個擴充套件沒有被活躍的事物使用。

在每個事物的開始,換句話說,當地乙個資料庫操縱語言(dml)命令在預先的乙個提交前被發起,或者使用者第一次請求資料庫鏈結——事物被指派給乙個在undo表空間的undo段。對任何表的任何改變在事物中,被記錄到指派的undo段中。目前活躍的undo段的名字能被從動態效能檢視v$rollname查詢,你應該能看到類似下面的內容。

sql> select * from v$rollname; usn name ---------- ------------------------------ 0 system 1 _syssmu1_592353410$ 2 _syssmu2_967517682$ 3 _syssmu3_1204390606$ 4 _syssmu4_1003442803$ 5 _syssmu5_538557934$ 6 _syssmu6_2897970769$ 7 _syssmu7_3517345427$ 8 _syssmu8_3901294357$ 9 _syssmu9_1735643689$ 10 _syssmu10_4131489474$ 11 rows selected. sql>

使用undo資料

undo資料是資料庫中的舊值,當程序或者用書改變了乙個表或者索引。undo資料為oracle 資料庫的以下四個目標服務:

1、使用者回滾乙個事務;

2、dml操作和查詢的讀一致性;

3、資料庫恢復操作;

4、flashback功能。

使用事務回滾

在第一章中,你了解了事務和他們怎樣在資料庫機構中被管理的。在使用者層,你可能有乙個或者幾百個dml命令(就像 delete ,insert ,update,or merge)在乙個特定的事務中,這些事務需要被標記為修改了乙個或者多個表的乙個程序或者使用者所重做。 undo乙個事務中的改變叫做回滾部分部分或者全部的事務。必須被回滾的改變被稱作undo資訊,回滾資訊被儲存在特別型別的表空間中,稱作undo表空間。

當乙個完整的事務被回滾,oracle回滾了所有事務開始的改變,使用儲存的undo表空間中的回滾資訊,釋放包括在事務中的任何鎖,並且結束事務。

如果失敗發生在客戶端或者網路上,異常終止了使用者到資料庫的鏈結,undo資訊被一很多相同的方式使用,就像使用者顯示顯示回滾事務一樣。oracle使用事物開始儲存在undo表空間中的資訊撤銷所有的改變。

讀併發

併發和並行

併發和並行的區別 乙個處理器同時處理多個任務和多個處理器或者是多核的處理器同時處理多個不同的任務。併發和並行的區別就是乙個處理器同時處理多個任務和多個處理器或者是多核的處理器同時處理多個不同的任務。前者是邏輯上的同時發生 simultaneous 而後者是物理上的同時發生 併發性 concurren...

併發和並行

並發行和並行性的區別可以用饅頭做比喻。前者相當於乙個人同時吃三個饅頭和三個人同時吃乙個饅頭。今天聽乙個學長說的,感覺挺形象的!併發性 concurrence 指兩個或兩個以上的事件或活動在同一時間間隔內發生。併發的實質是乙個物理cpu 也可以多個物理cpu 在若干道程式之間多路復用,併發性是對有限物...

併發和並行

是針對多處理器維度說的,每個處理器都有獨自計算的能力,多個處理器同時計算就是並行 是針對單處理器的維度說的,每個處理器在同時處理多個任務,其實準確的說,並不是同時執行,只是多個任務直接切換的特別快,快到我們感覺不到任務的切換,使我們只是感覺到多個任務都在執行,所以也有人說巨集觀序列,微觀並行 並行好...