ITPub博客

首页 > Linux操作系统 > Linux操作系统 > undo&temp的重建

undo&temp的重建

原创 Linux操作系统 作者:yingyifeng306 时间:2011-10-26 23:19:50 0 删除 编辑
undo&temp表空间的重建
数据库undo和temp已经扩展到30多G,空间无法释放,计划重建undo表空间和temp表空间
创建新的undo表空间和temp表空间,创建前先查询原表空间名字和数据文件位置:
SQL> show parameter undo
SQL> SELECT TABLESPACE_NAME FROM DBA_TABLESPACES WHERE CONTENTS='TEMPORARY';
SQL> SELECT FILE#,NAME FROM V$TEMPFILE;
SQL> select tablespace_name from dba_tablespaces;
创建新的undo和temp表空间。
创建temp:
SQL> create temporary tablespace temp2
  2  tempfile 'E:\XXXXXX\XXXXX\XXXX.dbf' size 100m autoextend on;
创建undo:
SQL> create undo tablespace undotbs2 datafile 'E:\XXXXXX\XXXXX\XXXX.dbf' size 100m autoextend on;
替换temp:
确认原temp是否空闲:
SQL> SELECT USERNAME,USER FROM V$SORT_USAGE WHERE TABLESPACE='TEMP'
SQL> alter database default temporary tablespace TEMP1
SQL> drop tablespace TEMP including contents and datafiles
查看是否正确删除temp表空间。

替换undo:
确认undo表空间中无事务存在:
SQL> select count(*) from v$transaction;
SQL> select segment_name,owner from dba_rollback_segs where tablespace_name='UNDOTBS1';
确认数据库能否重启,如果能重启,则重启主机,如果不能重启,则查到对应的进程号并杀掉进程:
select p.SPID from v$session s,v$process p where s.PADDR=p.ADDR and s.SID in (select s.sid From v$transaction t,v$session s where t.addr=s.taddr);
查询对应的事务的sid
select s.sid From v$transaction t,v$session s where t.addr=s.taddr;
从对应的sid查找spid:
select p.spid from v$session s,v$process p where s.paddr=p.addr and sid=XX
进而杀掉操作系统进程:
kill -9 。。。
修改undo参数:
alter system set undo_tablespace='UNDOTBS2' SCOPE=BOTH;
SQL> ALTER TABLESPACE UNDOTBS1 OFFLINE;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/23732248/viewspace-709748/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 存储迁移方案
下一篇: v$session 视图
请登录后发表评论 登录
全部评论
ITpub论坛高可用版主,擅长研究Oracle 内部原理、新特性、高可用和性能调优等,多年来一直保持着对新事务旺盛的求知欲。热切关注 Oracle 和其它相关技术

注册时间:2011-10-12

  • 博文量
    291
  • 访问量
    1592987