溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何監(jiān)控和管理Oracle UNDO表空間

發(fā)布時間:2021-11-09 14:57:15 來源:億速云 閱讀:340 作者:小新 欄目:關系型數(shù)據(jù)庫

這篇文章主要介紹了如何監(jiān)控和管理Oracle UNDO表空間,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。


對Oracle數(shù)據(jù)庫UNDO表空間的監(jiān)控和管理是我們?nèi)粘W钪匾墓ぷ髦?,UNDO表空間通常都是Oracle自動化管理(通過undo_management初始化參數(shù)確定);UNDO表空間是用于存儲DML操作的前鏡像數(shù)據(jù),它是實例恢復,數(shù)據(jù)回滾,一致性查詢功能的重要組件;我們常常會忽略對它的監(jiān)控,這會導致UNDO表空間可能出現(xiàn)以下問題:
1).空間使用率100%,導致DML操作無法進行。
2).告警日志中出現(xiàn)大量的ORA-01555告警錯誤。
3).實例恢復失敗,數(shù)據(jù)庫無法正常打開。

一.對Oracle自動化管理UNDO

由于UNDO是自動化管理,可干預的地方非常的少,更多的是監(jiān)控,通過以下幾個地方可對UNDO表空間實施一定的干預:

1).初始化參數(shù)

undo_management=AUTO     表示實例自動化管理UNDO表空間,從Oracle 9i開始,Oracle引進了AUM(Automatic Undo Management)。
undo_retention=900       事務提交后,相應的UNDO數(shù)據(jù)保留的時間,單位:秒。
undo_tablespace=UNDOTBS1 活動的UNDO表空間。
_smu_debug_mode=33554432
_undo_autotune=TRUE

2).Automatic UNDO Retention

 Automatic UNDO Retention是10g的新特性,在10g和之后的版本的數(shù)據(jù)庫,這個特性是默認啟用的。
在Oracle Database 10g中當自動undo管理被啟用總是存在一個當前的undo retention,Oracle Database嘗試至少保留舊的undo信息到該時間數(shù)據(jù)庫收集使用情況統(tǒng)計信息,基于這些統(tǒng)計信息和UNDO表空間大小來調(diào)整undo retention的時間。
    Oracle Database基于undo表空間大小和系統(tǒng)活動自動調(diào)整undo retention,通過設置UNDO_RETENTION初始化參數(shù)指定undo retention的最小值。

查看Oracle自動調(diào)整UNDO RETENTION的值可以通過以下查詢獲得:
SELECT TO_CHAR(BEGIN_TIME, 'MM/DD/YYYY HH24:MI:SS') BEGIN_TIME,TUNED_UNDORETENTION FROM V$UNDOSTAT;

 針對自動擴展的UNDO表空間系統(tǒng)至少保留UNDO到參數(shù)指定的時間,自動調(diào)整UNDO RETENTION以滿足查詢對UNDO的要求,這可能導致UNDO急劇擴張,可以考慮不設置UNDO RETENTION值。

針對固定的UNDO表空間,系統(tǒng)根據(jù)最大可能的undo retention進行自動調(diào)整,參考基于UNDO表空間大小和使用歷史進行調(diào)整,這將忽略UNDO_RETENTION,除非表空間啟用了RETENTION GUARANTEE。

自動調(diào)整undo retention不支持LOB,因為不能在undo表空間中存儲任何有關LOBs事務的UNDO信息。

可以通過設置_undo_autotune=FALSE,顯示的關閉Automatic UNDO Retention功能。

3).TUNED_UNDORETENTION計算的值很大導致UNDO表空間增長很快?

當使用的UNDO表空間非自動增長,tuned_undoretention是基于UNDO表空間大小的使用率計算出來的,在一些情況下,特別是較大的UNDO表空間時,這將計算出較大的值。

為了解決此行為,設置以下的實例參數(shù):
_smu_debug_mode=33554432

設置該參數(shù),TUNED_UNDORETENTION就不基于undo表空間大小的使用率計算,代替的是設置(MAXQUERYLEN +300)和UNDO_RETENTION的最大值。

4).UNDO表空間數(shù)據(jù)文件自動擴展

如果UNDO表空間是一個自動擴展的表空間,那么很有可能UNDO表空間狀態(tài)為EXPIRED的EXTENT不會被使用(這是為了減少報ORA-01555錯誤的幾率,這將導致UNDO表空間變得很大;如果將UNDO表空間設置為非自動擴展,那么狀態(tài)為EXPIRED的EXTENT就能被利用,這樣可以一定程度控制UNDO表空間的大小,但這樣會增加ORA-01555報錯和UNDO空間不足報錯的風險。合理的非自動擴展的UNDO表空間大小,以及合理的UNDO_RETENTION設置可以確保穩(wěn)定的UNDO空間使用。

5).UNDO表空間guarantee屬性

  如果UNDO表空間是noguarantee狀態(tài),Oracle不確保提交后的事務對應的UNDO表空間中的數(shù)據(jù)會保留UNDO_RETENTION指定的時長,如果UNDO表空間不足,其他事務將可能偷盜相應的未過期的空間;將UNDO表空間設置為guarantee能夠確保提交后的事務對應UNDO表空間中的數(shù)據(jù)在任何情況下都將保留UNDO_RETENTION指定的時長。
    
SQL> SELECT tablespace_name, retention FROM dba_tablespaces where tablespace_name='UNDOTBS1';

TABLESPACE_NAME                                              RETENTION
------------------------------------------------------------ ----------------------
UNDOTBS1                                                     NOGUARANTEE

SQL> alter tablespace undotbs1 retention guarantee;

表空間已更改。

SQL> SELECT tablespace_name, retention FROM dba_tablespaces where tablespace_name='UNDOTBS1';

TABLESPACE_NAME                                              RETENTION
------------------------------------------------------------ ----------------------
UNDOTBS1                                                     GUARANTEE

6).UNDO表空間大小

 針對不同類型的業(yè)務系統(tǒng),需要有充足的UNDO表空間,確保系統(tǒng)能夠正常的運行。UNDO空間的大小跟業(yè)務系統(tǒng)有關系,也跟UNDO_RETENTION和UNDO表空間的GUARANTEE屬性有關系,通常我們可以通過V$UNDOSTAT的統(tǒng)計信息估算出需要的UNDO表空間大小。

二.監(jiān)控UNDO表空間使用情況。

作為管理員來說,針對UNDO表空間更重要的是日常的監(jiān)控工作,監(jiān)控常用到以下的視圖:
a).DBA_ROLLBACK_SEGS
DBA_ROLLBACK_SEGS describes rollback segments.

b).V$ROLLSTAT
V$ROLLSTAT contains rollback segment statistics.

c).V$TRANSACTION
V$TRANSACTION lists the active transactions in the system.

d).V$UNDOSTAT
V$UNDOSTAT displays a histogram of statistical data to show how well the system is working. The available statistics include undo space consumption, transaction concurrency, and length of queries executed in the instance. You can use this view to estimate the amount of undo space required for the current workload. Oracle uses this view to tune undo usage in the system. The view returns NULL values if the system is in manual undo management mode.

Each row in the view keeps statistics collected in the instance for a 10-minute interval. The rows are in descending order by the BEGIN_TIME column value. Each row belongs to the time interval marked by (BEGIN_TIME, END_TIME). Each column represents the data collected for the particular statistic in that time interval. The first row of the view contains statistics for the (partial) current time period. The view contains a total of 576 rows, spanning a 4 day cycle.

e).DBA_UNDO_EXTENTS
DBA_UNDO_EXTENTS describes the extents comprising the segments in all undo tablespaces in the database.  This view shows the status and size of each extent in the undo tablespace.

DBA_UNDO_EXTENTS.STATUS有三個值:
ACTIVE      表示未提交事務還在使用的UNDO EXTENT,該值對應的UNDO SEGMENT的DBA_ROLL_SEGMENTS.STATUS一定是ONLINE或PENDING OFFLINE狀態(tài),一旦沒有活動的事務在使用UNDO SEGMENT,那么對應的UNDO SEGMENT就變成OFFLINE狀態(tài)。
EXPIRED     表示已經(jīng)提交且超過了UNDO_RETENTION指定時間的UNDO EXTENT。
UNEXPIRED 表示已經(jīng)提交但是還沒有超過UNDO_RETENTION指定時間的UNDO EXTENT。

Oracle重復使用UNDO EXTENT的原則如下:
1).ACTIVE狀態(tài)的EXTENT在任何情況下都不會被占用。
2).如果是自動擴展的UNDO表空間,Oracle會保證EXTENT至少保留UNDO_RETENTION指定的時間。
3).如果自動擴展空間不足或者UNDO表空間是非自動擴展,Oracle會嘗試重復使用同一個段下面EXPIRED狀態(tài)的EXTENT,如果本段中沒有這樣的EXTENT,就會去偷別的段下面EXPIRED狀態(tài)的EXTENT,如果依然沒有這樣的EXTENT,就會使用本段UNEXPIRED的EXTENT如果還是沒有,那么會去偷別的段的UNEXPIRED的EXTENT,這個都沒有,就會報錯。

1.UNDO表空間空間使用情況。

1).UNDO表空間總大小。
 UNDO表空間下也以段的形式存儲數(shù)據(jù),每個事務對應一個段,這種類型的段通常被稱為回滾段,或者UNDO段。默認情況下,數(shù)據(jù)庫實例會初始化10個UNDO段,這主要是為了避免新生成的事務對UNDO段的爭用。

UNDO表空間的總大小就是UNDO表空間下的所有數(shù)據(jù)文件大小的總和:
SQL> select tablespace_name,contents from dba_tablespaces where tablespace_name='UNDOTBS1';

TABLESPACE_NAME                                              CONTENTS
------------------------------------------------------------ ------------------
UNDOTBS1                                                     UNDO

SQL> select tablespace_name,sum(bytes)/1024/1024 mb from dba_data_files where tablespace_name='UNDOTBS1'  group by tablespace_name;

TABLESPACE_NAME                                                      MB
------------------------------------------------------------ ----------
UNDOTBS1                                                             90

2).查看UNDO表空間的使用情況。
該使用情況可以通過三個視圖來查看:

SQL> select owner,segment_name,bytes/1024/1024 mb from dba_segments where tablespace_name='UNDOTBS1';


OWNER      SEGMENT_NAME                           MB
---------- ------------------------------ ----------
SYS        _SYSSMU12_2867006942$                .125
SYS        _SYSSMU11_3120896088$                .125
SYS        _SYSSMU10_1735367849$               2.125
SYS        _SYSSMU9_3051513041$                2.125
SYS        _SYSSMU8_2280151962$                2.125
SYS        _SYSSMU7_825858386$                 .9375
SYS        _SYSSMU6_2597279618$                3.125
SYS        _SYSSMU5_247215464$                 3.125
SYS        _SYSSMU4_437228663$                 2.125
SYS        _SYSSMU3_3104504842$                5.125
SYS        _SYSSMU2_2464850095$                2.125
SYS        _SYSSMU1_2523538120$                3.125

已選擇12行。

select sum(bytes)/1024/1024 mb from dba_segments where tablespace_name='UNDOTBS1';

        MB
----------
25.4375


SQL>  select segment_name, v.rssize/1024/1024 mb
      From dba_rollback_segs r, v$rollstat v
      Where r.segment_id = v.usn(+)
      order by segment_name ;

SEGMENT_NAME                           MB
------------------------------ ----------
SYSTEM                           .3671875
_SYSSMU10_1735367849$           2.1171875
_SYSSMU11_3120896088$
_SYSSMU12_2867006942$
_SYSSMU1_2523538120$            3.1171875
_SYSSMU2_2464850095$            2.1171875
_SYSSMU3_3104504842$            5.1171875
_SYSSMU4_437228663$             2.1171875
_SYSSMU5_247215464$             3.1171875
_SYSSMU6_2597279618$            3.1171875
_SYSSMU7_825858386$              .9296875
_SYSSMU8_2280151962$            2.1171875
_SYSSMU9_3051513041$            2.1171875

已選擇13行。


通過上面的三個查詢可以看出,兩個視圖查詢的值幾乎一致,通常在巡檢的時候,我們習慣查詢dba_segments視圖來確定UNDO表空間的使用情況,但查詢V$ROLLSTAT數(shù)據(jù)更加準確。

3).查詢事務使用的UNDO段及大小。
很多客戶想知道,我的UNDO表空間超過了90%,是哪些會話的事務占用了這些空間
SQL>  select s.sid,s.serial#,s.sql_id,v.usn,segment_name,r.status, v.rssize/1024/1024 mb
      From dba_rollback_segs r, v$rollstat v,v$transaction t,v$session s
      Where r.segment_id = v.usn and v.usn=t.xidusn and t.addr=s.taddr
      order by segment_name ;


       SID    SERIAL# SQL_ID                            USN SEGMENT_NAME                                         STATUS                                   MB
---------- ---------- -------------------------- ---------- ------------------------------------------------------------ -------------------------------- ----------
         8        163                                     5 _SYSSMU5_247215464$                                  ONLINE                            3.1171875

 通過這個SQL語句可以查詢到會話對應的活動事務使用的UNDO段名稱,以及該段占用的UNDO空間大小,對于非活動事務占用了UNDO空間是由Oracle實例根據(jù)參數(shù)配置自動化管理的。

2.根據(jù)Oracle對UNDO表空間的統(tǒng)計信息調(diào)整UNDO參數(shù)及大小。

 最后我們要談談V$UNDOSTAT視圖,該視圖的作用是用于指導管理員調(diào)整UNDO表空間的參數(shù)及表空間大小,每行表示的是10分鐘的數(shù)據(jù),最多可保留576行,4天一個周期,如果該視圖沒有數(shù)據(jù),那么UNDO可能是手動管理方式。下面對該視圖字段的含義進行說明:

BEGIN_TIME DATE Identifies the beginning of the time interval  時間間隔開始時間。
END_TIME DATE Identifies the end of the time interval    時間間隔結(jié)束時間。
UNDOTSN NUMBER Represents the last active undo tablespace in the duration of time. The tablespace ID of the active undo tablespace is returned in this column. If more than one undo tablespace was active in that period, the active undo tablespace that was active at the end of the period is reported.  時間間隔活動的UNDO表空間個數(shù),返回的是活動UNDO表空間的ID號,如果大于1個活動的UNDO表空間,將報告在時間間隔最后被激活的UNDO表空間ID號。
UNDOBLKS NUMBER Represents the total number of undo blocks consumed. You can use this column to obtain the consumption rate of undo blocks, and thereby estimate the size of the undo tablespace needed to handle the workload on your system.  表示總共消費的UNDO塊數(shù),可以使用這個字段獲得undo塊的消費比率,由此來估算處理系統(tǒng)負載需要的UNDO表空間大小。
TXNCOUNT NUMBER Identifies the total number of transactions executed within the period  在這個時期內(nèi)總共執(zhí)行的事務數(shù)。
MAXQUERYLEN NUMBER Identifies the length of the longest query (in seconds) executed in the instance during the period. You can use this statistic to estimate the proper setting of the UNDO_RETENTION initialization parameter. The length of a query is measured from the cursor open time to the last fetch/execute time of the cursor. Only the length of those cursors that have been fetched/executed during the period are reflected in the view.  在這個時期該實例執(zhí)行的最長查詢時間(單位:秒),可以使用這個統(tǒng)計信息估算UNDO_RETENTION初始化參數(shù)的大概值。查詢的時間精確到從游標打開到最后提取/執(zhí)行時間。只有當這些游標的查詢時間在這個時期被提取/執(zhí)行才能被反映到該視圖。
MAXQUERYID VARCHAR2(13) SQL identifier of the longest running SQL statement in the period  在這個時期運行最長時間的SQL語句標識符。
MAXCONCURRENCY NUMBER Identifies the highest number of transactions executed concurrently within the period  在這個時期并行執(zhí)行的最大事務數(shù)。
UNXPSTEALCNT NUMBER Number of attempts to obtain undo space by stealing unexpired extents from other transactions  嘗試從其他事務通過偷盜的方式獲得的未過期的undo空間區(qū)間數(shù)。
UNXPBLKRELCNT NUMBER Number of unexpired blocks removed from certain undo segments so they can be used by other transactions  從某些UNDO段移除未過期的塊數(shù),他們被用于其它事務。
UNXPBLKREUCNT NUMBER Number of unexpired undo blocks reused by transactions  事務重新使用未過期的undo塊數(shù)。
EXPSTEALCNT NUMBER Number of attempts to steal expired undo blocks from other undo segments  嘗試從其他UNDO段偷盜過期的UNDO塊數(shù)。
EXPBLKRELCNT NUMBER Number of expired undo blocks stolen from other undo segments  從其他UNDO段偷盜的過期的UNDO塊數(shù)。
EXPBLKREUCNT NUMBER Number of expired undo blocks reused within the same undo segments  在相同UNDO段重新使用的過期的UNDO塊數(shù)。
SSOLDERRCNT NUMBER Identifies the number of times the error ORA-01555 occurred. You can use this statistic to decide whether or not the UNDO_RETENTION initialization parameter is set properly given the size of the undo tablespace. Increasing the value of UNDO_RETENTION can reduce the occurrence of this error.  標識ORA-01555錯誤發(fā)生的次數(shù),可以使用這個統(tǒng)計信息決定針對給定的UNDO表空間是否設置UNDO_RETENTION初始化參數(shù)。增加UNDO_RETENTION的值可以減少這個錯誤的發(fā)生。
NOSPACEERRCNT NUMBER Identifies the number of times space was requested in the undo tablespace and there was no free space available. That is, all of the space in the undo tablespace was in use by active transactions. The corrective action is to add more space to the undo tablespace.  在UNDO表空間沒有自由空間活動的情況下,空間請求的次數(shù),所有UNDO表空間的空間被活動的事務使用,這需要添加更多的空間到UNDO表空間。
ACTIVEBLKS NUMBER Total number of blocks in the active extents of the undo tablespace for the instance at the sampled time in the period  在時間間隔,針對該實例,UNDO表空間活動區(qū)間的塊個數(shù)。
UNEXPIREDBLKS NUMBER Total number of blocks in the unexpired extents of the undo tablespace for the instance at the sampled time in the period  在時間間隔,針對該實例,UNDO表空間未過期的塊個數(shù)。
EXPIREDBLKS NUMBER Total number of blocks in the expired extents of the undo tablespace for the instance at the sampled time in the period  在時間間隔,針對該實例,UNDO表空間過期區(qū)間的塊個數(shù)。
TUNED_UNDORETENTION NUMBER Amount of time (in seconds) for which undo will not be recycled from the time it was committed. At any point in time, the latest value of TUNED_UNDORETENTION is used to determine whether data committed at a particular time in the past can be recycled.  提交之后UNDO不能被回收的總時間(單位:秒)。


下面是查詢V$UNDOSTAT的例子:

SELECT TO_CHAR(BEGIN_TIME, 'MM/DD/YYYY HH24:MI:SS') BEGIN_TIME,  
  TO_CHAR(END_TIME, 'MM/DD/YYYY HH24:MI:SS') END_TIME,  
  UNDOTSN, UNDOBLKS, TXNCOUNT, MAXCONCURRENCY AS "MAXCON", 
  MAXQUERYLEN, TUNED_UNDORETENTION  
  FROM v$UNDOSTAT; 

通常當字段UNXPSTEALCNT和EXPBLKREUCNT是非零值,表示有空間壓力。
如果字段SSOLDERRCNT是非零值,表示UNDO_RETENTION設置不合理。
如果字段NOSPACEERRCNT是非零值,表示有一系列空間問題。
在10g DBA_HIST_UNDOSTAT視圖包括了V$UNDOSTAT快照統(tǒng)計信息。
注意:如果參數(shù)_undo_autotune=FALSE,X$KTUSMST2將沒有數(shù)據(jù)生成,該表是DBA_HIST_UNDOSTATS視圖的源表。


三.釋放UNDO表空間。

  UNDO表空間被撐得過大,有些時候我們需要釋放這些空間,通常的做法是新建一個UNDO,然后設置使用新建的UNDO表空間,最后DROP原有UNDO表空間。下面通過一個例子來演示這個過程:
SQL> col segment_name format a30
SQL> col tablespace_name format a30
SQL>
SQL> select segment_name, tablespace_name, r.status,
      (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
      max_extents, v.curext CurExtent
      From dba_rollback_segs r, v$rollstat v
      Where r.segment_id = v.usn(+)
      order by segment_name ;

SEGMENT_NAME                   TABLESPACE_NAME                STATUS                           INITIALEXTENT NEXTEXTENT MAX_EXTENTS  CUREXTENT
------------------------------ ------------------------------ -------------------------------- ------------- ---------- ----------- ----------
SYSTEM                         SYSTEM                         ONLINE                                  112            56       32765          4
_SYSSMU10_1735367849$          UNDOTBS1                       ONLINE                                  128            64       32765          2
_SYSSMU11_3120896088$          UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU12_2867006942$          UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU1_2523538120$           UNDOTBS1                       ONLINE                                  128            64       32765          2
_SYSSMU2_2464850095$           UNDOTBS1                       ONLINE                                  128            64       32765          2
_SYSSMU3_3104504842$           UNDOTBS1                       ONLINE                                  128            64       32765          2
_SYSSMU4_437228663$            UNDOTBS1                       ONLINE                                  128            64       32765          2
_SYSSMU5_247215464$            UNDOTBS1                       ONLINE                                  128            64       32765          3
_SYSSMU6_2597279618$           UNDOTBS1                       ONLINE                                  128            64       32765          3
_SYSSMU7_825858386$            UNDOTBS1                       ONLINE                                  128            64       32765          9
_SYSSMU8_2280151962$           UNDOTBS1                       ONLINE                                  128            64       32765          3
_SYSSMU9_3051513041$           UNDOTBS1                       ONLINE                                  128            64       32765          2

已選擇13行。

當前所有的回滾段在屬于UNDOTBS1表空間。

SQL> create undo tablespace undotbs2 datafile 'E:\APP\ORADATA\ORCL3\undotbs02.dbf' size 20m autoextend on next 100m;

表空間已創(chuàng)建。

SQL> show parameter undo

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
undo_management                      string                 AUTO
undo_retention                       integer                900
undo_tablespace                      string                 UNDOTBS1

SQL> alter system set undo_tablespace='UNDOTBS2';

系統(tǒng)已更改。

SQL> show parameter undo

NAME                                 TYPE                   VALUE
------------------------------------ ---------------------- ------------------------------
undo_management                      string                 AUTO
undo_retention                       integer                900
undo_tablespace                      string                 UNDOTBS2

SQL> select segment_name, tablespace_name, r.status,
      (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
      max_extents, v.curext CurExtent
      From dba_rollback_segs r, v$rollstat v
      Where r.segment_id = v.usn(+)
      order by segment_name ;

SEGMENT_NAME                   TABLESPACE_NAME                STATUS                           INITIALEXTENT NEXTEXTENT MAX_EXTENTS  CUREXTENT
------------------------------ ------------------------------ -------------------------------- ------------- ---------- ----------- ----------
SYSTEM                         SYSTEM                         ONLINE                                  112            56       32765          5
_SYSSMU10_1735367849$          UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU11_3120896088$          UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU12_2867006942$          UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU13_3398750080$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU14_3208386744$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU15_2082453576$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU16_2746861185$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU17_3752120760$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU18_3475721077$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU19_1407063349$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU1_2523538120$           UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU20_910603223$           UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU21_1261247597$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU22_1117177365$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU2_2464850095$           UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU3_3104504842$           UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU4_437228663$            UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU5_247215464$            UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU6_2597279618$           UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU7_825858386$            UNDOTBS1                       ONLINE                                  128            64       32765          9
_SYSSMU8_2280151962$           UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU9_3051513041$           UNDOTBS1                       OFFLINE                                 128            64       32765

已選擇23行。

雖然將數(shù)據(jù)庫實例使用的UNDO表空間指向了新表空間,但是依然有過去的事務在使用UNDOTBS1表空間下面的段,這個時候不能直接DROP UNDOTBS1(執(zhí)行DROP命令也會報錯),必須等待UNDOTBS1表空間下的所有段狀態(tài)變成OFFLINE才能DROP

SQL> select segment_name, tablespace_name, r.status,
      (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
      max_extents, v.curext CurExtent
      From dba_rollback_segs r, v$rollstat v
      Where r.segment_id = v.usn(+)
     order by segment_name;


SEGMENT_NAME                   TABLESPACE_NAME                STATUS                           INITIALEXTENT NEXTEXTENT MAX_EXTENTS  CUREXTENT
------------------------------ ------------------------------ -------------------------------- ------------- ---------- ----------- ----------
SYSTEM                         SYSTEM                         ONLINE                                  112            56       32765          5
_SYSSMU10_1735367849$          UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU11_3120896088$          UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU12_2867006942$          UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU13_3398750080$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU14_3208386744$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU15_2082453576$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU16_2746861185$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU17_3752120760$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU18_3475721077$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU19_1407063349$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU1_2523538120$           UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU20_910603223$           UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU21_1261247597$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU22_1117177365$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU2_2464850095$           UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU3_3104504842$           UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU4_437228663$            UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU5_247215464$            UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU6_2597279618$           UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU7_825858386$            UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU8_2280151962$           UNDOTBS1                       OFFLINE                                 128            64       32765
_SYSSMU9_3051513041$           UNDOTBS1                       OFFLINE                                 128            64       32765

已選擇23行。

UNDOTBS1表空間下的所有段狀態(tài)都變成了OFFLINE,這個時候可以DROP UNDOTBS1來釋放空間。

SQL> drop tablespace undotbs1 including contents and datafiles;

表空間已刪除。

 雖然能DROP,只是說明沒有事務在使用舊的UNDO表空間,這并不表示所有的UNDO EXTENT已經(jīng)過期(DBA_UNDO_EXTENTS.STATUS,如果有某些查詢需要用到這些存儲在舊UNDO表空間上過期或未過期的EXTENT時,將收到ORA-01555的報錯。

SQL> select segment_name, tablespace_name, r.status,
      (initial_extent/1024) InitialExtent,(next_extent/1024) NextExtent,
      max_extents, v.curext CurExtent
      From dba_rollback_segs r, v$rollstat v
      Where r.segment_id = v.usn(+)
      order by segment_name ;


SEGMENT_NAME                   TABLESPACE_NAME                STATUS                           INITIALEXTENT NEXTEXTENT MAX_EXTENTS  CUREXTENT
------------------------------ ------------------------------ -------------------------------- ------------- ---------- ----------- ----------
SYSTEM                         SYSTEM                         ONLINE                                  112            56       32765          5
_SYSSMU13_3398750080$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU14_3208386744$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU15_2082453576$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU16_2746861185$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU17_3752120760$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU18_3475721077$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU19_1407063349$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU20_910603223$           UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU21_1261247597$          UNDOTBS2                       ONLINE                                  128            64       32765          0
_SYSSMU22_1117177365$          UNDOTBS2                       ONLINE                                  128            64       32765          0

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何監(jiān)控和管理Oracle UNDO表空間”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業(yè)資訊頻道,更多相關知識等著你來學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI