Oracle下資料表空間收縮深入理解

來源:互聯網
上載者:User

Oracle下資料表空間收縮深入理解

在Oracle下在建立資料表空間時一般沒有特殊的需求時都是使用可自動擴充的資料表空間以便於日常的管理,這樣在日常情況下就不用監控資料表空間大小,在沒有使用自動成長的資料表空間建議在80%左右的時候就要增加新的物理檔案已保障其穩定,而在Oracle中使用自動成長的資料表空間,在使用中其物理檔案會隨著資料表空間的增加而增加而在實際情況中可能會因為業務的改變而沒有使用那麼多的資料表空間,這時我們就可以通過Oracle下的資料表空間縮減回收來回收未使用的資料表空間物理檔案所使用的磁碟資源,在Oracle下回收資料表空間很簡單,在Oracle的系統下除了使用者自行定義的資料表空間還有如下幾個預設資料表空間:

資料表空間 說明
EXAMPLE 如果在安裝時有選擇“執行個體方案”選項,則在Oracle中會有該資料表空間,如未選擇則沒有,此資料表空間中存放的是各範例的資料
SYSAUX SYSTEM資料表空間的輔助空間。主要用於儲存資料字典的其他資料對象,這可以減少SYSTEM資料表空間的負荷
SYSTEM 存放資料字典,其中包括表、視圖、預存程序等等相關資料
TEMP 存放SQL語句處理的表和索引的資訊,如:在資料排序時就會佔用此資料表空間
UNDOTBS1 存放撤銷資料的資料表空間
USERS 一般用於存放Oracle的使用者資料

而預設的資料表空間的相關詳細資料可以通過sys使用者下的DBA_DATA_FILES、DBA_FREE_SPACE、DBA_SEGMENTS這3張字典表查到相關資料表空間所存放的資料對象、類型及資料表空間的相關物理檔案和擁有者的相關記錄,如下用於查詢Oracle下資料表空間的使用詳細情況

SELECT      F.TABLESPACE_NAME  "資料表空間名" ,   D.TOT_GROOTTE_MB  "資料表空間大小(M)" ,   D.TOT_GROOTTE_MB - F.TOTAL_BYTES  "已使用空間(M)" ,   TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,2), '990.99' ) ||  '%'  "使用比" ,   F.TOTAL_BYTES  "空閑空間(M)" ,   F.MAX_BYTES  "最大塊(M)"    FROM  ( SELECT  TABLESPACE_NAME,   ROUND( SUM (BYTES) / (1024 * 1024), 2) TOTAL_BYTES,   ROUND( MAX (BYTES) / (1024 * 1024), 2) MAX_BYTES    FROM  SYS.DBA_FREE_SPACE    GROUP  BY  TABLESPACE_NAME) F,   ( SELECT  DD.TABLESPACE_NAME,    ROUND( SUM (DD.BYTES) / (1024 * 1024), 2) TOT_GROOTTE_MB    FROM  SYS.DBA_DATA_FILES DD    GROUP  BY  DD.TABLESPACE_NAME) D    WHERE  D.TABLESPACE_NAME = F.TABLESPACE_NAME         AND  F.TABLESPACE_NAME <>  'EXAMPLE'         AND  F.TABLESPACE_NAME <>  'SYSAUX'         AND  F.TABLESPACE_NAME <>  'SYSTEM'         AND  F.TABLESPACE_NAME <>  'UNDOTBS1'         AND  F.TABLESPACE_NAME <>  'USERS'         AND  F.TABLESPACE_NAME <>  'EXAMPLE'    ORDER  BY  1;

而在使用資料表空間收縮也很簡單:

SELECT  FILE_NAME  FROM  SYS.DBA_DATA_FILES  WHERE  TABLESPACE_NAME =  'TEST' ;#查詢出TEST資料表空間的物理檔案路徑 ALTER  TABLESPACE TEST  COALESCE ;#回收資料表空間片段 ALTER  DATABASE  DATAFILE  '/usr/local/u01/oracle/oradata/oracle/test.dbf'  RESIZE 2M;#回收資料表空間

相關文章

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.