undo資料表空間概述

來源:互聯網
上載者:User

undo資料表空間概述

UNDO的簡要概序:
   
1. 一般的資料表空間中的段是手動建立的,undo資料表空間和普通的資料表空間相似,但是undo資料表空間中undo段,undo段是自動產生的;Oracle自動使用、維護undo段。
2. 一般資料表空間中的段是我們自己手動使用的,而undo表中的段是oracle自動使用的。

show parameter undo_tablespace;//查詢當前的undo資料表空間
NAME                                              TYPE        VALUE                                                                                             
-------------------------------------------------- ----------- ----------------
undo_tablespace                                    string      UNDOTBS1     

select * from v$rollname;//當前有多少段
//下面的段是系統提供的復原段:
    1. 對資料庫物件進行操作的時候,也就是使用資料字典的時,SYSTEM的UNDO段才會使用
    2. 如果undo資料表空間壞了,可能會使用SYSTEM段
0    SYSTEM
//下面的是存在於 UNDOTBS1中,這下面段是在資料庫運行一段時間會自動調整的段
1    _SYSSMU1_3780397527$
2    _SYSSMU2_2232571081$
3    _SYSSMU3_2097677531$
4    _SYSSMU4_1152005954$
5    _SYSSMU5_1527469038$
6    _SYSSMU6_2443381498$
7    _SYSSMU7_3286610060$
8    _SYSSMU8_2012382730$
9    _SYSSMU9_1424341975$
10    _SYSSMU10_3550978943$

select SEGMENT_NAE,BLOCKS,EXTENTS from dba_segments where SEGMENT_NAME='SYSTEM';//在system的資料表空間中段的大小

SYSTEM    48    6

--UNDO資料表空間佔用空間情況以及資料檔案存放位置
    select file_name,bytes/1024/1024 from dba_data_files
    where tablespace_name like '%UNDOTBS%';

/u01/app/oracle/oradata/jiagulun/undotbs01.dbf    90


select SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BLOCKS from dba_extents where SEGMENT_NAME='SYSTEM';//段所佔的區

SYSTEM    SYSTEM    0    1    128    8
SYSTEM    SYSTEM    1    1    136    8
SYSTEM    SYSTEM    2    1    528    8
SYSTEM    SYSTEM    3    1    536    8
SYSTEM    SYSTEM    4    1    544    8
SYSTEM    SYSTEM    5    1    552    8

select SEGMENT_NAME,TABLESPACE_NAME,EXTENT_ID,FILE_ID,BLOCK_ID,BLOCKS from dba_extents where SEGMENT_NAME='_SYSSMU7_3286610060$';

_SYSSMU7_3286610060$    UNDOTBS1    0    3    224    8
_SYSSMU7_3286610060$    UNDOTBS1    1    3    232    8
_SYSSMU7_3286610060$    UNDOTBS1    2    3    312    8
_SYSSMU7_3286610060$    UNDOTBS1    3    3    1024    128
_SYSSMU7_3286610060$    UNDOTBS1    4    3    11392    128

通過上面可以看到對於系統的undo段中的區是連續的,而且區中的塊也是連續的
但是對於非系統的undo段中的區不是連續的,但是區中的塊是連續的

undo資料表空間的管理方式:在9i以前資料表空間自動建立,段是自動建立;但是區是手動分區的,這樣就會存在一些問題:
    一些比較大的DML語言跑跑就因為undo段夠就會出現問題,空間不足。
                在其後就自動分配了,在某些請款下也會自動回收的。
show parameter undo;
NAME                                              TYPE        VALUE                                                                                             
-------------------------------------------------- ----------- ----------------------------------------------------------------------------------------------------
undo_tablespace                                    string      UNDOTBS1                                                                                           
NAME                                              TYPE        VALUE                                                                                             
-------------------------------------------------- ----------- ----------------------------------------------------------------------------------------------------
undo_management                                    string      AUTO                                                                                               
undo_retention                                    integer    900                                                                                               
undo_tablespace                                    string      UNDOTBS1                                                                                           


undo資料表空間的作用
    1. oracle會在事務開啟的時候使用undo:
          在oracle在修改資料的時候,oracle會把被修改的資料放入undo表
          空間的undo段裡面。(當修改語句越多,使用的undo段越多)正
          因為儲存了被修改的資料,所以undo可以復原
    2. 保證一個會話讀不到另外一個會話未提交的資料,靠undo資料表空間儲存原資料,所以undo保證讀一致性
    3. oracle的執行個體崩潰恢複:前滾,復原*

Undo段中區的狀態
    free:從來沒有用過的
    expired:當過了undo_retention時間,oracle會釋放。原則expired不會被釋放。未測時間
    inactive:表示事務已經提交,但是還沒有過undo_retention,原則上是要保留undo_retention時間,但是空間壓力比較
              大,可以被覆蓋
    active:表示在事務還未提交時,所使用區的狀態,不可以被覆蓋

undo_retention
    alter tablespace undotbs1 retention guarantee//設定inactive區的資料至少儲存undo_retention後才被覆蓋
    alter tablespace undotbs1 retention noguarantee

select TABLESPACE_NAME, RETENTION from dba_tablespaces;
SYSTEM    NOT APPLY
SYSAUX    NOT APPLY
UNDOTBS1    GUARANTEE
TEMP    NOT APPLY
USERS    NOT APPLY
EXAMPLE    NOT APPLY

當進行DML時,就會使用FREE空間,當FREE空間不夠時就擴undo資料表空間的,當擴不了時,就使用EXPIRED的,當設定資料表空間為guarantee時,
就使用不了inactive那麼事務就必須掛起。當資料表空間設定為Noguarantee時就使用inactive,假如inactive使用不夠就事務掛起

--------------------------------------------------------------------------------

RMAN備份與恢複之undo資料表空間丟失

關於Oracle 釋放過度使用的undo資料表空間

Oracle undo的一些理解

Oracle undo 鏡像資料探究

Oracle 復原(ROLLBACK)和撤銷(undo)

Linux-6-64下安裝Oracle 12C筆記

在CentOS 6.4下安裝Oracle 11gR2(x64)

Oracle 11gR2 在VMWare虛擬機器中安裝步驟

Debian 下 安裝 Oracle 11g XE R2

--------------------------------------------------------------------------------

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.