如何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資料庫在建立和配置引數時必要的組成部分。本文描述