最近執行乙個資料量比較大的儲存過程,造成undo表空間達到16g左右,但是直接採用resize的方式又無法縮小其大
小,因此經網上搜尋,採用了undo表空間重建的方式來縮小去空間大小,具體步驟如下:
1)建立備用undo表空間
create undo tablespace newundotbs datafile 'd:\oracle\product\10.2.0\oradata\telemt\newundotbs01.dbf' size 2500m
2)切換undo表空間
為新建的undo表空間
alter system set undo_tablespace=newundotbs scope=spfile
shutdown immediate
startup
3)drop原表空間
drop tablespace undotbs1 including contents and datafiles
然後將資料庫關閉刪除d:\oracle\product\10.2.0\oradata\telemt\undotbs01.dbf該檔案
如果無法刪除檢視v$transaction檢視看是否有事務在執行,若有可以與v$session關聯找出sid和serial#並kill掉,然後再dropundotbs1表空間
4)建立原undo表空間
create undo tablespace undotbs1 datafile 'd:\oracle\product\10.2.0\oradata\telemt\undotbs01.dbf' size 2500m
5)再切換undo表空間
為原來的undo表空間
alter system set undo_tablespace=undotbs1 scope=spfile
6)關閉重起並把備用undo表空間drop
shutdown immediate
startup
drop tablespace newundotbs including contents and datafiles
重建Undo表空間
檢視各表空間名稱 select name from v tablespace 檢視某個表空間資訊 select file name,bytes 1024 1024 from dba data files where tablespace name like undotbs1 檢視回滾段的使用情況,哪...
undo表空間損壞
操作如下 sqlplus as sysdba 繼續執行命令 alter database open 例項終止。強制斷開連線 recover database recover datafile 1 recover datafile 2 系統提示 介質恢復成功 以為恢復成功就,直接,startup fo...
oracle縮小表空間
資料庫用久了難免會出現沒有 的空間,如果空間太大可使用以下方法進行 查詢用個表所占用的空間 sql view plain copy select tablespace name,100 sum max sum alloc nvl sum free,0 sum max as capa per,sum ...