oracle REDO和UNDO·


Oracle redo

What is it?

Oracle redo日誌是由 redo record組成的,而redo record記錄的是oraclesegment中單個block的改變,把這些改變記錄下來,用於重建oracle 數據庫,redo  record還有記錄的是:undo segment中的block的改變,redo也可以用來恢復oracle undosegment


Commit之後的信息是什麼?

Commit是提交:

從邏輯上來說,把你對數據庫的修改提交給數據庫,告訴數據庫這些改動我提交了,表裏的改變確定了。


物理上來說發生了什麼?

1oracle會把redo log buffer中的信息都syncdisk中,把redo的信息都同步到硬盤中

2oracle會自動生成一個SYSTEM CHANGENUMBER ,記錄數據庫的改變



下面是另外一個問題:commit是什麼?

我的理解是:如果你對數據庫做了一個修改,update或者是insert,如果你不commit的話,你的修改結果只能在你的這個session中看到,如果你退出了這些修改就作廢了,沒用了


爲什麼是這樣?

這樣又延伸出了另外的一個問題,commit之後並沒有如我之前認爲的一樣,把緩存中的東西都syncdisk中,而是把redo  log buffer中的內容syncdisk中,然後生成一個scn


但是你在select 做查詢的時候,數據是同步的,但是此時硬盤並沒有同步,這說明是在BUFFER CACHE中取得block,取得的數據。



Oracle undo


oracleredo是相同的,有一個oracle undorecord記錄對oracle database的修改。

記錄在undo  segment中,和redo相似。


Undo是用來rollback,邏輯的rollback,比如說,oracle執行的對數據庫的修改,邏輯上執行一個邏輯上相反的命令比如說:

Insert----delete

Update----update




Undo是如何實現這些功能的?



我現在發現了一個很有意思的東西:oracle中的undorollback可以結合在一塊


oracleredocommit可以很有效的結合在一塊




這真的非常奇怪,而且很有意思。Veryfunny stuff



And another thing ,transaction


Do you have to define a transaction beforeyou are there ?

Transaction和這些DML的關係式什麼?

TransactionSCN的關係式什麼?

Transaction?如果我沒有定義transaction的話,那麼rollback又會有什麼問題?


Lots and lots of things


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章