ITPub博客

首页 > 数据库 > Oracle > undo表空间切换

undo表空间切换

原创 Oracle 作者:adrain_001 时间:2014-11-10 12:09:53 0 删除 编辑

RAC中各实例使用各自的undo表空间。undo表空间满后的处理方式有两种:1、扩充undo表空间、2、创建新的undo表空间,并却换到新undo表空间。下面介绍第二种方式。
1、创建新的undo表空间 
  created tablespace undotbs3 datafile '+DATA/DSSP/DATAFILE/UNDOTBS03.dbf' size 10M autoextend on maxsize 200000M;
2、将新建的undo表空间设为本实例的undo表空间
  alter system set undo_tablespace = 'UNDOTBS3' scope=both;
3、验证本实例的undo表空间
  show parameter undo_tablespace;
4、等待原undo表空间offline

select r.status "status",
     r.segment_name "Name",  

r.tablespace_name "Tablespace",  

s.extents "Extents",  

TO_CHAR((s.bytes/1024/1024),'99999990.000') "Size"  

FROM sys.dba_rollback_segs      r, sys.dba_segments    s  

WHERE  r.segment_name = s.segment_name  

AND   s.segment_type IN ('ROLLBACK', 'TYPE2 UNDO')  

and   r.tablespace_name='UNDOTBS1'  and status='ONLINE' ;
   如果上面有状态为online的对象,可以查处对应的sid,serial#。
5、查看当前是什么在使用这个回滚段
     select r.name,s.sid,s.serial# serial

s.username ,s.machine ,  

t.start_time,t.status ,  

t.used_ublk ,  

substr(s.program, 1, 15)    "operate"  

FROM  v$session s, v$transaction t, v$rollname  r,v$rollstat  g  

WHERE  t.addr = s.taddr  

AND  t.xidusn = r.usn  

AND r.usn = g.usn  

ORDER BY t.used_ublk desc; 
6、根据sid查处具体的sql
     select sql_text from v$session a,v$sqltext_with_newlines b  

where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value)=b.hash_value  


and a.sid=&sid order by piece;
   如果查出的sql不重要可以kill掉。
7、删除原undo表空间
   drop tablespace undotbs2 including contents and datafiles;
  查看表空间及数据文件是否已被删除。
 如果不成功,可参考博文:undo无法drop。

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

上一篇: undo无法drop
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2012-02-13

  • 博文量
    112
  • 访问量
    262797