16 Managing Undo

来源:https://www.cnblogs.com/plluoye/archive/2018/04/19/8883267.html
-Advertisement-
Play Games

16 Managing Undo 官網:http://docs.oracle.com/cd/E11882_01/server.112/e25494/undo.htm#ADMIN013 從Oracle11g開始,在預設安裝中oracle會自動管理undo, 典型安裝中不需要DBA介入配置,然而,如果選 ...


16 Managing Undo

官網:http://docs.oracle.com/cd/E11882_01/server.112/e25494/undo.htm#ADMIN013

 

 

Oracle11g開始,在預設安裝中oracle會自動管理undo, 典型安裝中不需要DBA介入配置,然而,如果選擇了flash back特性,你就需要進行一些undo管理任務,來保證flashback特性的成功執行。 本章包含如下內容:

  • 什麼是undo
  • 自動undo管理介紹
  • 設置最小undo保留時間
  • 設置固定大小的undo表空間
  • 管理undo表空間
  •  移到自動undo段管理
  • undo空間數據字典視圖

See Also:
Chapter 17, "Using Oracle Managed Files"查看如何創建由Oracle資料庫創建並管理數據文件的undo表空間

 

什麼是UNDO?

Oracle創建並管理用於回滾,撤銷,更改到資料庫的信息,此類信息主要包括事務的操作的記錄,主要是在他們被提交前,這些記錄被統稱為undo
undo
記錄的作用主要包括:

  • 在發出ROLLBACK命令是進行事物回滾
  • 恢複數據庫
  • 實現讀一致性
  • 使用falshback query來查詢較早時間點的數據
  • 使用flashback特性恢復邏輯損壞

ROLLBACK命令被提交時,undo記錄被用來撤銷未提交的事務對資料庫做的變更。在資料庫恢復時,undo記錄用來撤銷未被提交的redo log對數據文件做的變更。undo記錄通過記錄之前的數據映像的方式實現一個用戶訪問正在由另一個用戶修改的數據時的讀一致性。

 

 

自動undo管理介紹

這個章節介紹自動undo管理的概念,並討論如下主題:

  • 自動undo管理概覽
  • 關於undo保留期

自動undo管理概覽

用於管理撤消信息和空間,Oracle 提供了一個完全自動化的機制,稱為自動撤消管理。使用自動撤消管理,資料庫在undo表空間中管理undo段。從Oracle11g開始,自動undo管理是新創建資料庫的預設模式。在使用DBCA 創建資料庫時會自動創建一個自動擴展的undo表空間UNDOTBS1 

undo表空間也可以被手工創建,創建方法參考"Creating an Undo Tablespace".

 

當實例啟動時,資料庫自動選擇第一個可用的undo表空間。如果沒有可用的undo表空間,實例就以沒有undo表空間的方式啟動,並存儲undo記錄在system表空間。這是不被推薦的,並且會在alert日誌中記錄警告'the system is running without an undo tablespace'.

如果在資料庫中存在多個undo表空間,你可以選擇指定其中一個作為undo表空間。這可以通過初始化參數 UNDO_TABLESPACE 設定。例:

UNDO_TABLESPACE = undotbs_01

如果指定的undo表空間不存在,則startup命令會失敗。在Oracle RAC 環境中可為每個實例單獨指定undo表空間。

資料庫也可運行在手工undo管理模式,在此模式下,undo空間通過回滾段管理,並且不使用undo表空間。

Note:
回滾段的空間管理相當複雜,Oracle 強烈建議將資料庫置於自動Undo管理模式.

如下是undo管理初始化參數的總結:

Initialization Parameter

Description

UNDO_MANAGEMENT

如果是auto或空,則使用自動undo管理,如果等於MANUAL
則為手工undo管理,預設為AUTO.

UNDO_TABLESPACE

可選,只在自動undo管理模式下生效,指定了undo表空間名。只當資料庫有多個undo表空間時並且在你需要指定實例訪問特定的undo表空間時使用。

 

如果使用了自動undo管理模式,那麼初始化參數中關於手工管理undo的參數將失效。

 

Note:
在早期的版本中,oracle預設是手工管理模式。如果要使用自動undo管理,你需要首先創建一個undo表空間,然後修改 UNDO_MANAGEMENT 初始化參數為 AUTO. 如果你的資料庫是9i或之後的版本,並且你想修改為自動undo管理,請查看Oracle Database Upgrade Guide .

 

空的UNDO_MANAGEMENT11g之後預設為自動undo管理,但是在之前預設為手工管理.所以在升級到11g的時候需要小心該參數. Oracle Database Upgrade Guide 描述了遷移到自動undo管理的正確方式,包含瞭如何設定undo表空間大小的信息。

關於undo保留期

在事務被提交以後,undo數據就不再被事務回滾和事務恢復需要。然而對於讀一致性的目的來說,長查詢(long-running queries)可能會需要這部分早期的undo信息來提供數據塊更早的映像信息。而且Oracle Flashback 特性也依賴於早期的undo信息的可用性。出於這些原因,undo信息保留的越久越好。

當使用了自動undo管理,就會有一個當前的undo retention period, 它指定了在Undo信息被覆蓋前會被oracle保留的最短時間。那些比當前的undo retention period老的(被提交)的undo信息被稱為過期的(expired,並且它們的空間是可以被當前事務覆蓋的。那些還未超出現在的undo retention periodundo信息被稱為未過期的(unexpired,會為一致性讀和Oracle Flashback操作保留。

Oracle 會依據undo表空間大小和系統的活動自動調整undo保留期,你也可以通過修改 UNDO_RETENTION 初始化參數自由設定最小的undo保留期。它的直接影響是:

  • 對於固定大小的undo表空間來說,該參數不生效。資料庫總是會根據undo表空間大小和資料庫活動來調整該參數為最合適的可用的保留期 "Automatic Tuning of Undo Retention"
  • 對於自動擴展的undo表空間來說,Oracle會嘗試提供由 UNDO_RETENTION 指定的最短的undo保留期當表空間不足時,表空間會選擇自動擴展而不是覆蓋未過期數據。如果指定了undo表空間的MAXSIZE ,當達到該值時,資料庫可能會開始覆蓋未過期undo信息。被DBCA自動創建的UNDOTBS1表空間是自動擴展的。

 

自動undo保留期調優

oracle依據undo表空間的配置自動調整undo保留期。

  • 如果undo表空間被配置為AUTOEXTEND, 資料庫自動調整undo保留期到一個比系統中最長的一個活動查詢還要長的時間點。但是,這個保留期對於Oralce Flashback操作來說可能是不足的。如果Oralce Flashback操作提示snapshot too old錯誤,這預示著你必須手工干預來保證有足夠的undo data提供給閃回操作。為了更好的支持Oralce Flashback特性,你可以設置UNDO RETENTION 參數等於一個最長的期望閃回操作時間,同時也要修改undo tablespace到一個合適的固定大小。
  • 如果undo表空間是固定大小的。資料庫根據表空間大小和當前系統負載自動調整undo保留期到一個最合適的保留期。一般來說這個保留期會大大超過最長的活動查詢的時間。

如果你準備修改undo表空間為固定大小,你必須指定它足夠大,如果空間太小,會報 如下兩個錯誤:

  • DML 操作因為沒有足夠的undo提供給新的transactions而失敗。
  • 長查詢操作報snapshot too old錯誤,這表明沒有足夠的undo數據來保證讀一致性。

 

See "Sizing a Fixed-Size Undo Tablespace" for more information

 

Note:

自動調整undo保留期不支持LOB類型.這是因為LOB類型的undo信息保留在他自己的LOB段而不是undo段。對於LOB,資料庫嘗試使用UNDO_RETENTION設定的最小的undo保留期。然後如果空間變低,未過期的LOB undo信息可能會被覆蓋。

 

See Also:

"Setting the Minimum Undo Retention Period"

 

保留期保證

為了保證資料庫滿足最長的查詢或或者閃回操作,你可以使用retention guarantee. 如果retention guarantee被使用,指定的最小的undo保留期就被保證了; 資料庫永遠不覆蓋未過期undo數據,即使事務因為undo表空間不足而失敗。如果沒使用retention guarantee ,資料庫會在undo空間較低時覆蓋未過期數據,這樣就降低了系統的undo保留期。該選項(retention guarantee)預設被禁用

 

WARNING:

使用retention guarantee 會導致並行DML操作失敗小心使用.

 

使用retention guarantee可通過在創建資料庫或創建undo表空間時指定retention guarante子句來設定。或者,稍候你可以在alter tablespace語句中添加該子句。禁用該特性通過retention noguarantee子句。

可以通過查看 DBA_TABLESPACES 視圖查看re

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 語句 不走索引而是表掃描的字句 "Is null" "<>", "!=", "!>", "!<", "Not", "Not exist", "Not in", "Not like" "Like '%500'" (字元串前面有%的) NOT IN會多次掃描表,使 ...
  • 本文為mariadb官方手冊:How to Quickly Insert Data Into MariaDB的譯文。 原文:https://mariadb.com/kb/en/how-to-quickly-insert-data-into-mariadb/ 我提交到MariaDB官方手冊的譯文:ht ...
  • 環境前提: centos 6.5 x64 jdk 1.8 elasticsearch 6.1.4 logstash 6.1.4 kibana 6.1.4 mysql 5.x 保證上面軟體已經安裝,並且正常啟動。 1.配置logstash 腳本 表結構如下: 2.啟動運行 ./logstash -f ...
  • 獲取RPM包 # wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm 列出RPM包里都有哪些文件 # rpm -qpl mysql57-community-release-el7-11.noarch.r ...
  • 本文內容: 複製文件法 利用mysqldump 利用select into outfile 其它(列舉但不介紹) 首發日期:2018-04-19 有些時候,在備份之前要先做flush tables ,確保所有數據都被寫入到磁碟中。 複製文件法: 對於myisam存儲引擎的資料庫,它的表結構(.frm... ...
  • int 類型的數據 可以在資料庫里存成 char字元串類型的數據; 純數字的字元串 可以在資料庫里存儲為 int的數據類型。 ...
  • 本文為mariadb官方手冊:INSERT ON DUPLICATE KEY UPDATE的譯文。 原文:https://mariadb.com/kb/en/insert-on-duplicate-key-update/ 我提交到MariaDB官方手冊的譯文:https://mariadb.com/ ...
  • 隨著Linux 7 版本的普及,但Oracle資料庫主流版本仍是11gR2,11.2.0.4 是生產安裝首選。由於11.2.0.4對Linux 7 的支持不很完美,在Linux 7 上安裝會遇到幾處問題,以此記錄下來。 https://docs.oracle.com/cd/E11882_01/rel ...
一周排行
    -Advertisement-
    Play Games
  • 前言 插件化的需求主要源於對軟體架構靈活性的追求,特別是在開發大型、複雜或需要不斷更新的軟體系統時,插件化可以提高軟體系統的可擴展性、可定製性、隔離性、安全性、可維護性、模塊化、易於升級和更新以及支持第三方開發等方面的能力,從而滿足不斷變化的業務需求和技術挑戰。 一、插件化探索 在WPF中我們想要開 ...
  • 歡迎ReaLTaiizor是一個用戶友好的、以設計為中心的.NET WinForms項目控制項庫,包含廣泛的組件。您可以使用不同的主題選項對項目進行個性化設置,並自定義用戶控制項,以使您的應用程式更加專業。 項目地址:https://github.com/Taiizor/ReaLTaiizor 步驟1: ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • Channel 是乾什麼的 The System.Threading.Channels namespace provides a set of synchronization data structures for passing data between producers and consume ...
  • efcore如何優雅的實現按年分庫按月分表 介紹 本文ShardinfCore版本 本期主角: ShardingCore 一款ef-core下高性能、輕量級針對分表分庫讀寫分離的解決方案,具有零依賴、零學習成本、零業務代碼入侵適配 距離上次發文.net相關的已經有很久了,期間一直在從事java相關的 ...
  • 前言 Spacesniffer 是一個免費的文件掃描工具,通過使用樹狀圖可視化佈局,可以立即瞭解大文件夾的位置,幫助用戶處理找到這些文件夾 當前系統C盤空間 清理後系統C盤空間 下載 Spacesniffer 下載地址:https://spacesniffer.en.softonic.com/dow ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • 一、ReZero簡介 ReZero是一款.NET中間件 : 全網唯一開源界面操作就能生成API , 可以集成到任何.NET6+ API項目,無破壞性,也可讓非.NET用戶使用exe文件 免費開源:MIT最寬鬆協議 , 一直從事開源事業十年,一直堅持開源 1.1 純ReZero開發 適合.Net Co ...
  • 一:背景 1. 講故事 停了一個月沒有更新文章了,主要是忙於寫 C#內功修煉系列的PPT,現在基本上接近尾聲,可以回頭繼續更新這段時間分析dump的一些事故報告,有朋友微信上找到我,說他們的系統出現了大量的http超時,程式不響應處理了,讓我幫忙看下怎麼回事,dump也抓到了。 二:WinDbg分析 ...
  • 開始做項目管理了(本人3年java,來到這邊之後真沒想到...),天天開會溝通整理需求,他們講話的時候忙裡偷閑整理一下常用的方法,其實語言還是有共通性的,基本上看到方法名就大概能猜出來用法。出去打水的時候看到外面太陽好好,真想在外面坐著曬太陽,回來的時候好兄弟三年前送給我的鍵盤D鍵不靈了,在打"等待 ...