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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...