日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle的redo和undo,OracleUndoRedo通俗理解

發布時間:2025/3/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle的redo和undo,OracleUndoRedo通俗理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OracleUndoRedo通俗理解以下文字資料是由(歷史新知網www.lishixinzhi.com)小編為大家搜集整理后發布的內容,讓我們趕快一起來看一下吧!

什么是REDO

REDO記錄transaction logs 分為online和archived 以恢復為目的

比如 機器停電 那么在重起之后需要online redo logs去恢復系統到失敗點

比如 磁盤壞了 需要用archived redo logs和online redo logs區恢復數據

比如 truncate一個表或其他的操作 想恢復到之前的狀態 同樣也需要

什么是UNDO

REDO 是為了重新實現你的操作 而UNDO相反 是為了撤銷你做的操作 比如你得一個TRANSACTION執行失敗了或你自己后悔了 則需要用 ROLLBACK命令回退到操作之前 回滾是在邏輯層面實現而不是物理層面 因為在一個多用戶系統中 數據結構 blocks等都在時時變化 比如我們 INSERT一個數據 表的空間不夠 擴展了一個新的EXTENT 我們的數據保存在這新的EXTENT里 其它用戶隨后也在這EXTENT里插入了數據 而此時我想ROLLBACK 那么顯然物理上講這EXTENT撤銷是不可能的 因為這么做會影響其他用戶的操作 所以 ROLLBACK是邏輯上回滾 比如對INSERT來說 那么ROLLBACK就是DELETE了

MIT 以前 常想當然地認為 一個大的TRANSACTION(比如大批量地INSERT數據)的MIT會花費時間比短的TRANSACTION長 而事實上是沒有什么區別的

因為ORACLE在MIT之前已經把該寫的東西寫到DISK中了

我們MIT只是

產生一個SCN給我們TRANSACTION SCN簡單理解就是給TRANSACTION排隊 以便恢復和保持一致性

REDO寫REDO到DISK中(LGWR 這就是log file sync) 記錄SCN在ONLINE REDO LOG 當這一步發生時 我們可以說事實上已經提交了 這個TRANSACTION已經結束(在V$TRANSACTION里消失了)

SESSION所擁有的LOCK(V$LOCK)被釋放

Block Cleanout(這個問題是產生ORA : snapshot too old的根本原因) ROLLBACK ROLLBACK和MIT正好相反 ROLLBACK的時間和TRANSACTION的大小有直接關系 因為ROLLBACK必須物理上恢復數據 MIT之所以快 是因為ORACLE在MIT之前已經作了很多工作(產生UNDO 修改BLOCK REDO LATCH分配) ROLLBACK慢也是基于相同的原因

UNDO表空間用于存放UNDO數據 當執行DML操作時 Oracle

UNDO數據的作用 當用戶執行DML操作修改數據時 UNDO數據被存放在UNDO段 而新數據則被存放到數據段中 如果事務操作存在問題 就需要回退事務 以取消事物變化

例如 執行完UPDATE emp SET sal= WHERE empno= 后 發現應該修改雇員 的工資 而不是 此時應該執行ROLLBACK語句

讀一致性

用戶檢索數據時 ORACLE總是使用戶只能看到被提交過的數據 這是由Oracle自動提供的 當用戶修改數據 但是沒有提交時 另外一個用戶使用select語句查找該值時 該值就是從undo表空間中取得的

事務恢復

事務恢復是例程恢復的一部分 它是由Oracle Server自動完成的 如果在數據庫運行過程中出線歷程失敗 那么當啟動Oracle Server時 后臺進程SMON會自動執行例程恢復 執行例程恢復時 Oracle會重做所有未應用的記錄 然后打開數據庫 回退未提交事務

倒敘查詢

倒敘查詢用于取得某一特定時間點的數據庫數據

UNDO_MANAGEMENT

使用初始化參數用于指定UNDO數據的管理方式 如果使用自動管理模式 必須設置該參數為AUTO 此時采用UNDO表空間管理UNDO數據 如果使用手工管理模式 必須設置該值為MANUAl 此時采用回滾段管理UNDO數據

UNDO_TABLESPACE

用于指定例程所要使用的UNDO表空間 使用自動UNDO管理模式時 通過配置該參數可以指定例程所要使用的UNDO表空間

使用RAC結構時 必須為每個例程配置一個獨立的UNDO表空間

UNDO_RETENTION

該參數用于控制UNDO數據的最大保留時間 其默認值為 秒 該值時倒敘查詢可以查看到的最早時間點 lishixinzhi/Article/program/Oracle/201311/17025

分頁:123

總結

以上是生活随笔為你收集整理的oracle的redo和undo,OracleUndoRedo通俗理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。