无码视频在线观看,99人妻,国产午夜视频,久久久久国产一级毛片高清版新婚

  • 始創(chuàng)于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業(yè)
    • 60秒人工響應(yīng)
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補(bǔ)償
    全部產(chǎn)品
    您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

    Oracle 10g 讀書筆記之 redo 與 undo

    發(fā)布時(shí)間:  2012/8/29 17:12:07

    redo(重做信息)是 Oracle 在在線(或歸檔)重做日志文件中記錄的信息,用于重做事務(wù);undo(撤銷)是 oracle 在 undo 段中記錄的信息,用于取消或回滾事務(wù)。

    undo 操作數(shù)據(jù)庫只是邏輯的恢復(fù)到原來的樣子,但數(shù)據(jù)結(jié)構(gòu)以及數(shù)據(jù)塊本身在回滾后可以大不相同。這樣做的原因是同時(shí)可能會(huì)有多個(gè)并發(fā)的事務(wù)。

    盡管 undo 信息存儲(chǔ)在 undo 表空間或 undo 段中,但也會(huì)受到 redo 的保護(hù)。換句話說,會(huì)把 undo 數(shù)據(jù)當(dāng)成是表數(shù)據(jù)或索引數(shù)據(jù)一樣,對 undo 的修改會(huì)生成一些 redo 并記入日志。
    -
     

    Oracle 的事務(wù)提交是一個(gè)非?斓牟僮鳎徽撌聞(wù)有多大,COMMIT 的響應(yīng)時(shí)間都差不多。因?yàn)樵谔峤恢耙呀?jīng)完成了99.9%工作,例如已經(jīng)發(fā)生了如下操作:

    a、已經(jīng)在 SGA 中生成了 undo 塊
    b、已經(jīng)在 SGA 中生成了已修改的數(shù)據(jù)塊
    c、已經(jīng)在 SGA 中生成了對應(yīng)前兩項(xiàng)的緩存 redo
    d、取決于前三項(xiàng)的大小,以及這些工作花費(fèi)的時(shí)間,前面的某些數(shù)據(jù)可能已經(jīng)刷新輸出到磁盤
    e、已經(jīng)得到了所需的全部鎖
    執(zhí)行 COMMIT 時(shí),余下的工作只是
    a、為事務(wù)生成一個(gè) SCN。它是 Oracle 使用的一種簡單的計(jì)時(shí)機(jī)制,用于保證事務(wù)的順序,并支持失敗恢復(fù)。它還用于保證數(shù)據(jù)庫中的讀一致性和檢查點(diǎn)。
    b、LGWR 將所有余下的緩存重做日志條目寫至磁盤,并把 SCN 記錄到在線重做日志文件中。這一小是真正的 COMMIT。之后事務(wù)條目為從 V$TRANSACTION 中“刪除”。
    c、V$LOCK 中記錄著我們的會(huì)話持有鎖,這些鎖都將被釋放,而排隊(duì)等待這些鎖的每一個(gè)人都會(huì)被喚醒,可以繼續(xù)完成他們的工作。
    d、如果事務(wù)修改的某些塊還在緩沖區(qū)中,則會(huì)清除存儲(chǔ)在數(shù)據(jù)庫塊首部與鎖相關(guān)的信息。

    相反 ROLLBACK 時(shí)要做以下工作:
    a、撤銷已做的所有修改。從 undo 段讀回?cái)?shù)據(jù),然后實(shí)際上逆向執(zhí)行前面所做的操作,并將 undo 條目標(biāo)記為已用。
    b、會(huì)話持有的所有鎖都將釋放,如果有人在排隊(duì)等待我們持有的鎖,就會(huì)被喚醒。

    減少重做日志的生成:
    a、在 SQL 中設(shè)置 NOLOGGING。這并不是說這個(gè)對象的所有操作在執(zhí)行時(shí)都不生成重做日志,只是說有些特定的操作生成的 redo 會(huì)比平常少得多。
    b、在索引上設(shè)置 NOLOGGING。在段(索引或表)上設(shè)置 NOLOGGING 屬性,從而隱式的采用 NOLOGGING 模式來執(zhí)行操作。
    c、可以采用 NOLOGGING 模式執(zhí)行以下操作:
    1、索引的創(chuàng)建和 ALTER。例如 create index t_idx on t(name) nologging ,alter index t_idx nologging,alter index t_idx rebuild
    2、表的批量 INSERT 。表數(shù)據(jù)不生成 redo,但是所有的索引修改會(huì)生成 redo。
    3、LOB 操作(對大對象的更新不必生成日志)。
    4、通過 CREATE TABLE AS SELECT 創(chuàng)建表。
    5、各種 ALTER TABLE 操作,如 MOVE 和 SPLIT。

    塊清除:即刪除所修改數(shù)據(jù)庫塊上與“鎖定”有關(guān)的信息。后面提到 ORA-01555:snapshot too old 會(huì)用到這個(gè)概念。
    數(shù)據(jù)鎖實(shí)際上是數(shù)據(jù)的屬性,存儲(chǔ)在塊首部。下次訪問這個(gè)塊時(shí),就要將這些事務(wù)信息刪除,這個(gè)動(dòng)作會(huì)生成 redo,并導(dǎo)致塊變臟,也就是說 SELECT 可能也會(huì)生成 redo 并將塊刷新至磁盤。
    如果塊在還在緩沖區(qū)中,那么 COMMIT 時(shí)會(huì)清除,這樣后面的 SELECT 就不必再清理了。只有塊的 UPDATE 才會(huì)真正清除殘余的事務(wù)信息,由于 UPDATE 時(shí)已經(jīng)生成 redo,所以注意不到清除工作。

    臨時(shí)表不會(huì)為它們的塊生成 redo,但會(huì)生成 undo,而且這個(gè) undo 為記入日志。
    INSERT 會(huì)生成很少甚至不生成 undo/redo 活動(dòng)。因?yàn)樯傻?undo 很少,Oracle 只需要記錄要?jiǎng)h除的 rowid。
    DELETE 在臨時(shí)表上生成的 redo 與在正常表上生成的 redo 同樣多,因它的 undo 很大,需要把整行的前映像記錄到 undo 段中。
    臨時(shí)表的 UPDATE 會(huì)生成正常表一半的 redo,對于臨時(shí)表來說不必保存“后映像”(redo)。

    SQL> show parameter undo
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    undo_management                      string      AUTO //自動(dòng) undo 管理
    undo_retention                       integer     900 // undo 保留的時(shí)間
    undo_tablespace                      string      UNDOTBS1 // undo 存儲(chǔ)表空間


     


    本文出自:億恩科技【mszdt.com】

    服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號(hào)
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號(hào)總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號(hào)
      1
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線