1. 程式人生 > >如何Shrink Undo表空間,釋放過度佔用的空間

如何Shrink Undo表空間,釋放過度佔用的空間

環境:
OS:Red Hat Enterprise Linux AS release 4 (Nahant)
DB:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production

一臺Oracle10gR2資料庫報出如下錯誤:
ORA-1653: unable to extend table SYSMAN.MGMT_SYSTEM_ERROR_LOG by 8 in  tablespace SYSAUX
ORA-1653: unable to extend table SYSMAN.MGMT_SYSTEM_ERROR_LOG by 8 in  tablespace SYSAUX
ORA-1653: unable to extend table SYSMAN.MGMT_SYSTEM_ERROR_LOG by 8 in  tablespace SYSAUX
ORA-1653: unable to extend table SYSMAN.MGMT_SYSTEM_ERROR_LOG by 8 in  tablespace SYSAUX
ORA-1653: unable to extend table SYSMAN.MGMT_SYSTEM_ERROR_LOG by 8 in  tablespace SYSAUX

登陸檢查,發現是SYSAUX表空間空間用盡,不能擴充套件,嘗試手工擴充套件SYSAUX表空間:
 alter database datafile '+ORADG/danaly/datafile/sysaux.266.600173881' resize 800m
Tue Nov 29 23:31:38 2005
ORA-1237 signalled during: alter database datafile '+ORADG/danaly/datafile/sysaux.266.600173881' resize 800m...

出現ORA-1237錯誤,提示空間不足。這時候我才認識到是磁碟空間可能被用完了.

是誰"偷偷的"用了那麼多空間呢(本來有幾十個G的Free磁碟空間的)?
檢查資料庫表空間佔用空間情況:
SQL> select tablespace_name,sum(bytes)/1024/1024/1024 GB
  2  from dba_data_files group by tablespace_name
  3  union all
  4  select tablespace_name,sum(bytes)/1024/1024/1024 GB
  5  from dba_temp_files group by tablespace_name order by GB;

TABLESPACE_NAME                        GB
------------------------------ ----------
USERS                          .004882813
UNDOTBS2                        .09765625
SYSTEM                         .478515625
SYSAUX                         .634765625
WAPCM_TS_VISIT_DETAIL            .9765625
HY_DS_DEFAULT                           1
MINT_TS_DEFAULT                         1
MMS_TS_DATA2                        1.375
MMS_IDX_SJH                             2
MMS_TS_DEFAULT                          2
IVRCN_TS_DATA                           2

TABLESPACE_NAME                        GB
------------------------------ ----------
MMS_TS_DATA1                            2
CM_TS_DEFAULT                           5
TEMP                           20.5498047
UNDOTBS1                       27.1582031

15 rows selected.
不幸的發現,UNDO表空間已經擴充套件至27G,而TEMP表空間也擴充套件至20G,這2個表空間加起來佔用了47G的磁碟空間,導致了空間不足。
顯然曾經有大事務佔用了大量的UNDO表空間和Temp表空間,Oracle的AUM(Auto Undo Management)從出生以來就經常出現只擴充套件,不收縮(shrink)的情況(通常我們可以設定足夠的UNDO表空間大小,然後取消其自動擴充套件屬性).
現在我們可以採用如下步驟回收UNDO空間:

1.確認檔案
SQL> select file_name,bytes/1024/1024 from dba_data_files
  2  where tablespace_name like 'UNDOTBS1';

FILE_NAME
--------------------------------------------------------------------------------
BYTES/1024/1024
---------------
+ORADG/danaly/datafile/undotbs1.265.600173875
          27810
2.檢查UNDO Segment狀態
SQL> select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks
  2  from v$rollstat order by rssize;

       USN      XACTS RSSIZE/1024/1024/1024 HWMSIZE/1024/1024/1024    SHRINKS
---------- ---------- --------------------- ---------------------- ----------
         0          0            .000358582             .000358582          0
         2          0            .071517944             .071517944          0
         3          0             .13722229              .13722229          0
         9          0            .236984253             .236984253          0
        10          0            .625144958             .625144958          0
         5          1            1.22946167             1.22946167          0
         8          0            1.27175903             1.27175903          0
         4          1            1.27895355             1.27895355          0
         7          0            1.56770325             1.56770325          0
         1          0            2.02474976             2.02474976          0
         6          0             2.9671936              2.9671936          0

11 rows selected.
3.建立新的UNDO表空間
SQL> create undo tablespace undotbs2 ;
(經測試,在9i環境下後面還要加上datafile '/opt/..../undotbs2.dbf' size 1024M)
Tablespace created.
4.切換UNDO表空間為新的UNDO表空間
SQL> alter system set undo_tablespace=undotbs2 scope=both;

System altered.

建立了新的UNDO表空間以後,如果不知道系統使用的是pfile還是spfile檔案,應使用引數both,會同時修改spfile檔案,避免出現衝突。


5.等待原UNDO表空間所有UNDO SEGMENT OFFLINE
SQL> select usn,xacts,status,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks
  2 from v$rollstat order by rssize;


       USN      XACTS STATUS          RSSIZE/1024/1024/1024 HWMSIZE/1024/1024/1024    SHRINKS
---------- ---------- --------------- --------------------- ---------------------- ----------
        14          0 ONLINE                     .000114441             .000114441          0
        19          0 ONLINE                     .000114441             .000114441          0
        11          0 ONLINE                     .000114441             .000114441          0
        12          0 ONLINE                     .000114441             .000114441          0
        13          0 ONLINE                     .000114441             .000114441          0
        20          0 ONLINE                     .000114441             .000114441          0
        15          1 ONLINE                     .000114441             .000114441          0
        16          0 ONLINE                     .000114441             .000114441          0
        17          0 ONLINE                     .000114441             .000114441          0
        18          0 ONLINE                     .000114441             .000114441          0
         0          0 ONLINE                     .000358582             .000358582          0

       USN      XACTS STATUS          RSSIZE/1024/1024/1024 HWMSIZE/1024/1024/1024    SHRINKS
---------- ---------- --------------- --------------------- ---------------------- ----------
         6          0 PENDING OFFLINE             2.9671936              2.9671936          0

12 rows selected.
再看:
11:32:11 SQL> /

       USN      XACTS STATUS          RSSIZE/1024/1024/1024 HWMSIZE/1024/1024/1024    SHRINKS
---------- ---------- --------------- --------------------- ---------------------- ----------
        15          1 ONLINE                     .000114441             .000114441          0
        11          0 ONLINE                     .000114441             .000114441          0
        12          0 ONLINE                     .000114441             .000114441          0
        13          0 ONLINE                     .000114441             .000114441          0
        14          0 ONLINE                     .000114441             .000114441          0
        20          0 ONLINE                     .000114441             .000114441          0
        16          0 ONLINE                     .000114441             .000114441          0
        17          0 ONLINE                     .000114441             .000114441          0
        18          0 ONLINE                     .000114441             .000114441          0
        19          0 ONLINE                     .000114441             .000114441          0
         0          0 ONLINE                     .000358582             .000358582          0

11 rows selected.

Elapsed: 00:00:00.00
6.刪除原UNDO表空間

11:34:00 SQL> drop tablespace undotbs1 including contents;
(本人經測試覺得其實是否可以用drop tablespace undotbs1 including contents and datafiles;直接連硬盤裡面的dbf檔案件一起刪除)
Tablespace dropped.

Elapsed: 00:00:03.13
7.檢查空間情況
由於我使用的ASM管理,可以使用10gR2提供的信工具asmcmd來察看空間佔用情況.
[[email protected] ~]$ export ORACLE_SID=+ASM
[[email protected] ~]$ asmcmd
ASMCMD> du
Used_MB      Mirror_used_MB
  21625               21625
ASMCMD> exit

空間已經釋放。

相關推薦

如何Shrink Undo空間,釋放過度佔用空間

環境:OS:Red Hat Enterprise Linux AS release 4 (Nahant)DB:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 一臺Oracle10gR

Oracle undo 空間不可用

line allow 如果 zed views 不存在 not 是否 pac      由於某次不小心操作,在切換表空間時沒有成功,但是由於把parameter undo的undo_management值改為了MANUAL所以在啟動數據庫時沒有報任何錯誤,但是給表插入數據時

[Oracle]理解undo空間

oracl 可能 用戶訪問 特性 active nts 一個用戶 新的 off 一、回退段介紹 在Oracle數據庫中,當某個事物對數據進行修改時,Oracle首先將數據的原始值保存到一個回退段中。一個事物只能將它的回退信息保存到一個回退段中,而多個並行事物可以使用同一個回

[Oracle]undo空間使用量為100%

2種 奇怪 nvl ack ont expire sed code cccccc 在Toad中發現undo表空間undotbs1使用量已經達到100%,但是奇怪的是數據庫並沒有hang住,依然可以正常運轉 通過Oracle提供的EM查看undotbs1表空間的使用,也達到

12c RAC擴容undo空間

tables auto rac dot xtend 擴展 ace create table Oracle 12cR1 RAC col sid for a10 col name for a20 col value for a20 select sid,name,value f

undo空間收縮

表空間 csharp 每年 整理 table 維護 undo表空間 true esp   當我們維護的數據庫每年有一兩次的數據變化特別大,由於這個問題,我們的undo表空間增長的十分迅速,而這種的數據量變化特別明顯的操作一年只發生一兩次,我們還不想保持這麽大的undo表空間

undo空間建立 : 資料庫恢復必備,資料保護體制

undo表空間建立:  create undo tablespace UNDOTBS1 datafile '/opt/oracle/oradata/CMCCWAP/undotbs01.dbf' size 200m autoextend on; .檢視資料庫的預設UNDO表空間

ORACLE RAC 11G 添加以及刪除UNDO空間

clu table alt 空間使用 11g 10g 分享 set nbsp 在生產環境上,由於閃存盤的容量有限,現在需要將閃存盤裏面的UNDO表空間,替換到非閃存的磁盤裏面。 磁盤的使用情況如下: 表空間使用情況如下: RAC兩個節點占用將近167G的空間。 操作步驟

Oracle 11gR2 Database UNDO空間使用率居高不下處理

一、UNDO表空間監控圖 Prometheus監控的到UNDO表空間使用率超過90%(90%為所有表空間告警閾值)。從圖中可以看到,多次增加UNDO表空間的DATAFILE,UNDO表空間達到40GB,沒過多久UNDO使用率又會超過90% 二、檢視UNDO塊的使用情況 select s.STATUS

sqlserver 刪除佔用空間隨筆

sqlserver伺服器的硬碟空間只有幾個G了,嘗試清理下表佔用空間 SELECT a.name, b.rows FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE

關於undo空間下資料檔案非自動擴充套件問題

      我這邊生產環境,一般undo表空間都會預先設定一個大小,並且保留資料檔案的自動擴充套件,一直也相安無事。最近有套系統的undo表空間一直報警,使用率超過85%。看了下表空間大小,才5個G,以後確實是undo表空間過小了,於是擴到10G。結果第二天又報警了

Oracle move和shrink釋放高水位空間

move 和shrink 的共同點 1、收縮段 2、消除部分行遷移 3、消除空間碎片 4、使資料更緊密 一、shrink 語法:   alter table TABLE_NAME shrink space [compact|cascate] segment shrink執行的兩個階段

釋放xcode佔用硬碟空間(轉)

  Xcode磁碟空間大清理 1、移除對舊裝置的支援 影響:可重新生成;再連線舊裝置除錯時,會重新自動生成。我移除了4.3.2, 5.0, 5.1等版本的裝置支援。 路徑:~/Library/Developer/Xcode/iOS DeviceSupport 2、移除舊版本的模擬器支援

MySQL 5.7新特性之線上收縮undo空間

1. MySQL 5.5時代的undo log 在MySQL5.5以及之前,大家會發現隨著資料庫上線時間越來越長,ibdata1檔案(即InnoDB的共享表空間,或者系統表空間)會越來越大,這會造成2個比較明顯的問題: (1)磁碟剩餘空間越來越小,到後期往往要加磁碟;

【oracle11g,13】空間管理2:undo空間管理(調優) ,閃回原理

SQL> col segment_name for a10 SQL> col status for a10; SQL> select segment_name,extent_id,file_id,blocks,bytes/1024 k,status from dba_undo_exten

Oracle UNDO空間

一、還原資料與還原表空間 還原資料是: • 原始的、修改之前的資料副本 • 針對更改資料的每個事務處理而捕獲 • 至少保留到事務處理結束 • 用於支援: – 回退操作 – 讀取一致性查詢 – Oracle 閃回查詢、Oracle 閃回事務處理和 Oracle 閃回表 – 從失敗的事務處理中進行恢復 還原

oracle undo空間不足的解決方法

資料庫大批量插入提交注意事項-undo: undo定義: UNDO 表空間用於存放UNDO資料,當執行DML操作(INSERT,UPDATE和DELETE)時,oracle會將這些操作的舊資料寫入到UNDO段滾段,還可以使用UNDO表空間.因為規劃和管理回滾段比較複雜,所

12c undo 空間的管理

1、檢視undo 表空間 開啟所有pdb [email protected]> show pdbs CON_ID CON_NAME OPEN MODE RESTRICTED ---------- --------------------

Oracle空間釋放與增加空間大小

1.drop表後並沒有釋放磁碟空間,這時可以通過縮小表空間釋放磁碟儲存 注:一個表空間可以有多個datafile 檢視所有的datafile,找到你要縮小的datafile select file#, name from v$datafile 從上面獲得要縮

關於undo空間配置錯誤的ORA-30012

      undo表空間是Oracle體系結構的重要組成部分,為什麼我們可以回滾,就是因為有它。資料庫任意資料的修改都會在undo表空間裡生成前映象,一是可以回滾,二是可以實現併發,以及一致性查詢。因此undo也是Oracle資料庫在建立和配置引數時必要的組成部分。本文描述