首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

Oracle 11G rollback段失误修复

2013-11-16 
Oracle 11G rollback段出错修复测试服务器的磁盘满了,经分析由于测试服务器经常进行大量数据清理,UNDO表空

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。?上网搜索相关修复方法,按实际情况拟定修复方案,最后成功修复。方案如下:

    用实例的system账号以DBA身份登录sqlplus:sqlplus system/**** as sysdba关闭数据库:shutdown immediate创建pfile文件:create pfile 'c:/pfile.ora' from spfile修改pfile文件,添加以下参数:*.undo_management='Manual'_corrupted_rollback_segments=('_SYSSMU14_1571488672$','_SYSSMU16_3431913684$')启动数据库:startup pfile='c:/pfile.ora'删除状态为needs Recovery的segment:drop rollback segment "_SYSSMU14_1571488672$";?注意是用双引号,删除会有报错信息,只要删除了就忽略出错信息吧。重启数据库并删除undo表空间:drop tablespace UNDOTBS1 including contents and datafiles;修改pfile.ora,去除之前添加的隐藏参数启动数据库:startup pfile='c:/pfile.ora'检查数据库是否能正常工作。检查正常,确认完成修复,重启服务器。
??以下为修复中使用过的一些命令记录:查询正在运行的事务的回滚段使用情况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;?几个参考链接:http://blog.csdn.net/life_dba/article/details/9139353http://blog.csdn.net/cockcrow/article/details/598703http://www.dba-oracle.com/t_fix_undo_log_corruption.htm

热点排行