Oracle 11G rollback段出错修复

测试服务器的磁盘满了,经分析由于测试服务器经常进行大量数据清理,UNDO表空间占了太多空间,于是打算新建UNDO表空间(UNDOTBS2),把旧(UNDOTBS1)的清理掉。
删除旧空间的时候发现怎么都删不了,报错说有回滚段被占用。
于是用查看回滚段情况:
select owner,segment_name,SEGMENT_ID,FILE_ID,BLOCK_ID,STATUS,tablespace_name from dba_rollback_segs;
 
结果显示 _SYSSMU14_1571488672$,_SYSSMU16_3431913684$ 等多个在UNDOTBS1上的回滚段的STATUS显示“NEEDS RECOVERY”,即这些回滚段有错误需要修复,阻止了删除UNDOTBS1。
 
上网搜索相关修复方法,按实际情况拟定修复方案,最后成功修复。方案如下:
  1. 用实例的system账号以DBA身份登录sqlplus:
    • sqlplus system/**** as sysdba
  2. 关闭数据库:
    • shutdown immediate
  3. 创建pfile文件:
    • create pfile 'c:/pfile.ora' from spfile
  4. 修改pfile文件,添加以下参数:
    • *.undo_management='Manual'
    • _corrupted_rollback_segments=('_SYSSMU14_1571488672$','_SYSSMU16_3431913684$')
  5. 启动数据库:
    • startup pfile='c:/pfile.ora'
  6. 删除状态为needs Recovery的segment:
    • drop rollback segment "_SYSSMU14_1571488672$"; 
    • 注意是用双引号,删除会有报错信息,只要删除了就忽略出错信息吧。
  7. 重启数据库并删除undo表空间:
    • drop tablespace UNDOTBS1 including contents and datafiles;
  8. 修改pfile.ora,去除之前添加的隐藏参数启动数据库:
    • startup pfile='c:/pfile.ora'
  9. 检查数据库是否能正常工作。
  10. 检查正常,确认完成修复,重启服务器。
 
 
以下为修复中使用过的一些命令记录:
查询正在运行的事务的回滚段使用情况
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;

查询数据文件情况
select * from dba_data_files where tablespace_name like 'UNDOTBS1';

查询回滚空间的使用情况
select usn,xacts,status,rssize/1024/1024/1024, hwmsize/1024/1024/1024,shrinks from v$rollstat order by rssize;

创建新的UNDO表空间
create undo tablespace undotbs2 datafile 'D:\app\Administrator\oradata\QAS\UNDOTBS02.DBF' size 10m reuse autoextend on next 100m maxsize 20g;

指定系统使用新的UNDO表空间
alter system set undo_tablespace=undotbs2 scope=both;

显示UNDO相关参数
show parameter undo;
 
几个参考链接:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值