本文主要是介绍如何 重建undo表空间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如果一个undo表空间已经扩展到一定大小,并且硬盘空间吃紧,可以优先考虑将undo表空间重建,再观察和评估后续的方案。同时如何杜绝以后undo表空间过大的问题,原理可处理方式可以参考这篇文章。oracle undo表空间过大
查看当前使用的undo表空间
show parameter undo;select * from v$parameter ;
重建undo表空间
create undo tablespace undotbs2 datafile 'D:\ORADB\ORADATA\ORCL\UNDOTBS201.DBF' size 4G autoextend off; alter tablespace undotbs2 add datafile 'D:\ORADB\ORADATA\ORCL\UNDOTBS202.DBF' size 4G autoextend off ;
切换表空间
alter system set undo_tablespace=undotbs2 scope=both;
查看当前的undo1 的回滚段状态
select segment_name,tablespace_name,status from dba_rollback_segs t where tablespace_name='UNDOTBS1' and status='ONLINE'
下线在线的回滚段
ALTER ROLLBACK SEGMENT "_SYSSMU9$" OFFLINE;
查找到相关的事务ID
SELECT s.sid,serial#, u.name ,r.status 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 and r.status='PENDING OFFLINE' ;
删除旧undo表空间
drop tablespace undotbs1 including contents and datafiles;
这篇关于如何 重建undo表空间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!