Oracle釋放undo表空間的實(shí)際操作步驟
在實(shí)際操作中數(shù)據(jù)庫(kù)維護(hù)數(shù)據(jù)庫(kù)的編程的運(yùn)行中我們經(jīng)常會(huì)遇到過(guò)這樣的情況,就是Oracle釋放undo表空間,以下的文章主要是對(duì)Oracle釋放undo表空間的實(shí)際操作步驟的介紹,望你瀏覽之后會(huì)有所收獲。
對(duì)大數(shù)據(jù)量做DML操作之后,得把Oracle釋放undo表空間擴(kuò)展到十幾個(gè)G或者幾十個(gè)G 但是這些表空間的所占用磁盤(pán)的物理空間又不會(huì)被Oracle所釋放。
如果你用的是PC機(jī)很可能會(huì)遇到磁盤(pán)空間不足的問(wèn)題,經(jīng)過(guò)個(gè)人整理經(jīng)過(guò)如下操作可以重構(gòu)Oracle釋放undo表空間,同樣temp表空間也可能在你查詢大數(shù)據(jù)或則創(chuàng)建索引的時(shí)候無(wú)限擴(kuò)大導(dǎo)致磁盤(pán)空間不足,同樣可以用如下方式解決此問(wèn)題:
查看各表空間名稱
- select name from v$tablespace
查看某個(gè)表空間信息
- select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'UNDOTBS1';
查看回滾段的使用情況,哪個(gè)用戶正在使用回滾段的資源,如果有用戶最好更換時(shí)間(特別是生產(chǎn)環(huán)境)。
- select s.username, u.name from v$transaction t,v$rollstat r, v$rollname u,v$session s
- where s.taddr=t.addr and t.xidusn=r.usn and r.usn=u.usn order by s.username;
檢查UNDO Segment狀態(tài)
- select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
創(chuàng)建新的Oracle釋放UNDO表空間,并設(shè)置自動(dòng)擴(kuò)展參數(shù);
- create undo tablespace undotbs2 datafile
'D:\Oracle\PRODUCT\10.1.0\ORADATA\ORCL\UNDOTBS02.DBF'
size 10m reuse autoextend on next 100m maxsize unlimited;
動(dòng)態(tài)更改spfile配置文件;
- alter system set undo_tablespace=undotbs2 scope=both;
等待原UNDO表空間所有UNDO SEGMENT OFFLINE;
- select usn,xacts,status,rssize/1024/1024/1024,
hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
再執(zhí)行看UNDO表空間所有UNDO SEGMENT ONLINE;
- select usn,xacts,status,rssize/1024/1024/1024,
hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
刪除原有的UNDO表空間;
- drop tablespace undotbs1 including contents;
確認(rèn)刪除是否成功;
- select name from v$tablespace;
最后需要在重啟數(shù)據(jù)庫(kù)或者重啟計(jì)算機(jī)后到存儲(chǔ)數(shù)據(jù)文件的路徑下刪除數(shù)據(jù)文件(為什么要手動(dòng)刪除呢:以上步驟只是刪除了Oracle釋放undo表空間的邏輯關(guān)系,即刪除了數(shù)據(jù)文件在數(shù)據(jù)字典中的關(guān)聯(lián),不會(huì)自動(dòng)刪除項(xiàng)關(guān)聯(lián)的數(shù)據(jù)文件)。
【編輯推薦】

















