oracle undo表空间满了如何清理

avatar
作者
筋斗云
阅读量:0

当Oracle undo表空间满了,可以通过以下步骤来清理:

  1. 查看undo表空间使用情况:
SELECT tablespace_name, sum(bytes) / 1024 / 1024 AS "Undo Space (MB)" FROM dba_undo_extents GROUP BY tablespace_name; 
  1. 找出占用undo表空间较大的事务:
SELECT r.name, t.xidusn, t.xidslot, t.xidsqn, t.start_time FROM v$transaction t, v$session s, v$rollname r WHERE t.addr = s.taddr AND s.ses_addr = t.ses_addr AND t.xidusn = r.usn; 
  1. 杀掉占用undo表空间过大的事务:
ALTER SYSTEM KILL SESSION 'sid,serial#'; 
  1. 执行回滚操作:
ROLLBACK; 
  1. 扩展undo表空间:
ALTER DATABASE DATAFILE 'undo_datafile_path' RESIZE size; 
  1. 重建undo表空间:
CREATE UNDO TABLESPACE new_undo_ts DATAFILE 'new_undo_datafile_path' SIZE size; 

注意:在执行以上操作之前,请务必备份重要数据,以避免数据丢失。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!