Oracle 過時技術(一) 回滾段手動管理

2021-04-25 08:33:06 字數 943 閱讀 4675

回滾段概述

回滾段用於存放資料修改之前的值(包括資料修改之前的位置和值)。回滾段的頭部包含正在使用的該回滾段事務的資訊。乙個事務只能使用乙個回滾段來存放它的回滾資訊,而乙個回滾段可以存放多個事務的回滾資訊。

回滾段的作用

事務回滾:當事務修改表中資料的時候,該資料修改前的值(即前影像)會存放在回滾段中,當使用者回滾事務(rollback)時,oracle將會利用回滾段中的資料前影像來將修改的資料恢復到原來的值。

事務恢復:當事務正在處理的時候,例程失敗,回滾段的資訊儲存在重做日誌檔案中,oracle將在下次開啟資料庫時利用回滾來恢復未提交的資料。

讀一致性:當乙個會話正在修改資料時,其他的會話將看不到該會話未提交的修改。而且,當乙個語句正在執行時,該語句將看不到從該語句開始執行後的未提交的修改(語句級讀一致性)。當oracle執行select語句時,oracle依照當前的系統改變號(system change number-scn)來保證任何前於當前scn的未提交的改變不被該語句處理。可以想象:當乙個長時間的查詢正在執行時,若其他會話改變了該查詢要查詢的某個資料塊,oracle將利用回滾段的資料前影像來構造乙個讀一致性檢視。

總結

用過oracle9i以前版本資料庫的人都清楚,回滾段規劃管理一直是一項不可忽視的工作。乙個業務處理資料庫一般需要建多個回滾段,有些系統甚至需要建上百個回滾段來滿足併發事務的處理,對於大資料批處理一般還需要建立專用的大回滾段,以保證事務期間回滾段能儲存全部的事務資料。

從oracle9i開始,乙個很顯著的新特性就是引入了自動的回滾段管理,只要建立乙個撤銷表空間就可以了,所有的事務回滾資料都可以在這個撤銷表空間裡管理,再也不用去為該建多少個多大的回滾段擔憂了。採用自動管理後資料庫也很少出現回滾段不夠的錯誤。我想從9ir2後的資料庫基本上都採用自動管理了,因為自動管理大大減少了資料庫的維護工作,總體效能也很好。

ORACLE 建立回滾段

create rollback segment rs01 tablespace ts name storage initial 8m next 8m maxextents unlimited 回滾段管理一直是oracle資料庫管理的乙個難題,本文通過例項介紹oracle回滾段的概念,用法和規劃及問題...

ORACLE回滾段管理(上)

回滾段管理一直是oracle資料庫管理的乙個難題,本文通過例項介紹oracle回滾段的概念,用法和規劃及問題的解決。回滾段概述 回滾段用於存放資料修改之前的值 包括資料修改之前的位置和值 回滾段的頭部包含正在使用的該回滾段事務的資訊。乙個事務只能使用乙個回滾段來存放它的回滾資訊,而乙個回滾段可以存放...

oracle檢視回滾段資訊

select rownum,sys.dba rollback segs.segment name name,v rollstat.extents extents,v rollstat.rssize size in bytes,v rollstat.xacts xacts,v rollstat.get...