--檢視各表空間名稱
select name from v$tablespace
--檢視某個表空間資訊
select file_name,bytes/1024/1024 from dba_data_files where tablespace_name like 'undotbs1';
--檢視回滾段的使用情況,哪個使用者正在使用回滾段的資源,如果有使用者最好更換時間(特別是生產環境)。
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狀態
select usn,xacts,rssize/1024/1024/1024,hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;
--建立新的undo表空間,並設定自動擴充套件引數;
create undo tablespace undotbs2 datafile '/tmp/oradata/undotbs02.dbf' size 10m reuse autoextend on next 100m maxsize unlimited;
-- 動態更改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;
--再執行看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 and datafiles;
--確認刪除是否成功;
select name from v$tablespace;
create undo tablespace undotbs1 datafile '/home/oracle/oradata/undotbs01.dbf' size 10m reuse autoextend on next 100m maxsize unlimited;
alter system set undo_tablespace=undotbs1 scope=both;
drop tablespace undotbs2 including contents and datafiles;
最後需要在重啟資料庫或者重啟計算機後到儲存資料檔案的路徑下刪除資料檔案(為什麼要手動刪除呢:以上步驟只是刪除了oracle中undo表空間的邏輯關係,即刪除了資料檔案在資料字典中的關聯,不會自動刪除項關聯的資料檔案)。
UNDO 表空間重建(清理)
oracle的aum auto undo management 從出生以來就經常出現只擴充套件,不收縮 shrink 的情況 通常我們可以設定足夠的undo表空間大小,然後取消其自動擴充套件屬性 檢視表空間使用情況 select a.tablespace name,round a.total siz...
undo表空間損壞
操作如下 sqlplus as sysdba 繼續執行命令 alter database open 例項終止。強制斷開連線 recover database recover datafile 1 recover datafile 2 系統提示 介質恢復成功 以為恢復成功就,直接,startup fo...
undo表空間縮小
最近執行乙個資料量比較大的儲存過程,造成undo表空間達到16g左右,但是直接採用resize的方式又無法縮小其大 小,因此經網上搜尋,採用了undo表空間重建的方式來縮小去空間大小,具體步驟如下 1 建立備用undo表空間 create undo tablespace newundotbs dat...