自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Oracle數(shù)據(jù)庫UNDO LOG日志回放過程

數(shù)據(jù)庫 Oracle
本文我們主要介紹了Oracle數(shù)據(jù)庫UNDO LOG日志回放過程的相關(guān)知識,希望能夠?qū)δ兴斋@!

Oracle數(shù)據(jù)庫UNDO LOG日志回放過程的相關(guān)知識是本文我們主要要介紹的內(nèi)容,接下來我們看一段描述:一個看起來正確的過程,系統(tǒng)宕機后需要重啟,重啟過程中需要對事務(wù)涉及到的數(shù)據(jù)進(jìn)行“整理”,包括:宕機時刻尚未提交的事務(wù)對數(shù)據(jù)的修改需要回滾。實現(xiàn)整理的過程稱之為“日志回放”。通過從后向前回放UNDO LOG日志,直到找到commit點為止,這樣就保證了數(shù)據(jù)一致性。

上面的過程看起來很***。真的***嗎?問題出在這里:如果系統(tǒng)中同時有多個事務(wù)在執(zhí)行,UNDO LOG中的commit點該如何定義呢?可能存在多個等待Commit的點。(繼續(xù)之前考慮一下Global Serializability,多個commit點與此沖突嗎?)

實戰(zhàn):可以工作的過程

方法1:系統(tǒng)重啟回放日志,只需要從后往前掃描日志文件,對于所有沒有commit的事務(wù)按照日志記錄中的數(shù)據(jù)做回滾操作。這個方法肯定是可以工作的,其問題在于要求掃描所有commit日志,代價不菲。

方法2:使用Checkpoint,拉起一個大柵欄。Checkpoint可以看做是對引言中“commit點“的展開,它好比一個較寬的柵欄(fence),將所有已經(jīng)開始、尚未commit的事務(wù)都記錄下來,等待這些事務(wù)完成之后再在日志中寫入一條“在這個柵欄架起來之前的那些狀態(tài)一致了”的標(biāo)記。

為什么是“架起來之前的”呢?因為在架起柵欄后有一段等待事務(wù)完成時間,這段時間里會有新的事務(wù)發(fā)起,他們也會繼續(xù)寫日志,對于這些事務(wù)Checkpoint不關(guān)注。

生成checkpoint的過程:

1. 在日志中寫下CREATE_CKPT(T1,T2,..,Tn),其中Ti表示寫入CREATE_CKPT之前尚未完成的事務(wù)

2. 等待T1~Tn這些事務(wù)完成。在等待過程中可能會有新的事務(wù)寫日志。

3. 在日志中寫入END_CKPT

日志回放過程:

從后往前掃描日志,如果先遇到END_CKPT,那么說明CREATE_CKPT中記錄的T1~Tn這些事務(wù)都已經(jīng)完成,將日志回放至CREATE_CKPT處即可。之前的日志均可以丟棄。如果先遇到CREATE_CKPT,那么說明T1~Tn這些事務(wù)可能還有沒完成的,那么為了保證Global Serialization,將日志回滾到T1~Tn中最早出現(xiàn)的那一條之前即可。例如T3是T1~Tn中***開始的事務(wù),則將事務(wù)回滾檢查做到T3之前即可,因為T3前的所有數(shù)據(jù)均已經(jīng)確保Commit了。

關(guān)于Oracle數(shù)據(jù)庫UNDO LOG日志回放過程的相關(guān)知識就介紹到這里了,希望本次的介紹能夠?qū)δ兴斋@!

【編輯推薦】

  1. Oracle數(shù)據(jù)庫PL/SQL快捷鍵設(shè)置詳解
  2. Oracle數(shù)據(jù)庫學(xué)習(xí)筆記之表的聯(lián)合查詢
  3. 一個Oracle數(shù)據(jù)庫執(zhí)行存儲過程的錯誤解決
  4. Oracle數(shù)據(jù)庫日期范圍搜索的兩種方法簡介
  5. Oracle數(shù)據(jù)庫RMAN恢復(fù)之?dāng)?shù)據(jù)文件的恢復(fù)詳解
責(zé)任編輯:趙鵬 來源: CSDN博客
相關(guān)推薦

2010-11-19 10:38:26

Oracle XE自帶

2011-08-16 18:55:10

Oracle數(shù)據(jù)庫構(gòu)造過程

2011-07-20 16:28:54

Oracle數(shù)據(jù)庫shared pool

2011-05-24 10:26:12

Oracle數(shù)據(jù)庫日志文件

2011-08-02 11:16:08

Oracle數(shù)據(jù)庫歸檔日志

2022-10-12 08:01:08

MySQL日志數(shù)據(jù)庫

2020-08-20 12:10:42

MySQL日志數(shù)據(jù)庫

2024-05-28 00:10:00

JavaMySQL數(shù)據(jù)庫

2024-06-11 00:00:02

MySQL數(shù)據(jù)庫系統(tǒng)

2011-03-22 10:36:39

Oracle數(shù)據(jù)庫自動增長列

2011-07-27 11:08:49

Oracle數(shù)據(jù)庫EM Console重

2010-10-26 14:40:31

oracle存儲過程

2025-01-15 13:19:09

MySQL日志事務(wù)

2024-05-30 08:03:17

2023-11-23 13:17:39

MySQL?數(shù)據(jù)庫

2019-05-06 15:27:48

Oracle數(shù)據(jù)庫數(shù)據(jù)

2011-08-30 15:57:15

Oracle 10gUNDO_RETENT

2010-04-16 13:34:00

Oracle Java

2011-03-10 11:12:59

數(shù)據(jù)庫

2011-07-19 17:06:33

Oracle數(shù)據(jù)庫自動增長列
點贊
收藏

51CTO技術(shù)棧公眾號