今天开发那边的一套数据库的undo表空间不知道被谁设置成了自动扩展,然后所谓的屋漏偏逢连夜雨的是,

开发人员今天跑了一个很大的事物,然后直接后果就是undo表空间不断被扩展,直到把文件系统写爆了。没办法得把undo表空间删了重建以回收空间啊。安装常规的操作:

先新建一个新的undo表空间:

create undo tablespace tmpundo datafile '/soft/Oracle/oradata/sitjf/tmpundo01.dbf'size 1g autoextend off;

把新建的undo表空间设置为默认undo表空间:

alter system set undo_tablespace=tmpundo;

接下来就是删除原有undo表空间undotbs1了,但是我发现我悲剧了,删除报错:

SQL> DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;
CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE '/soft/oracle/oradata/sitjf/undotbs01.dbf' SIZE 1G AUTOEXTEND OFF;
DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES
*
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU1_2181731349$' found, terminate
dropping tablespace

尝试过重启数据库,依然无效,尝试删除数据文件后,依然是报错:

SQL> ALTER DATABASE DATAFILE '/soft/oracle/oradata/sitjf/undotbs01.dbf' OFFLINE DROP;
Database altered.

最后弄的没办法了,还是Google一下吧,于是参照Google上的解决方法顺利的处理了:

1、修改init$ORACLE_SID.ora参数文件,为:

undo_management=manual
undo_retention=10800
undo_tablespace=tmpundo
_CORRUPTED_ROLLBACK_SEGMENTS = (_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$,_SYSSMU1_2181731349$)

及,把undo修改为手动管理,并把默认undo表空间设置为新建的临时过渡undo表空间tmpundo。

最重要的是_CORRUPTED_ROLLBACK_SEGMENTS参数,改参数Oracle会假设事务已经回滚,而不会进行其他的检查。一般UNDO表空间丢失或损害的时候可以尝试使用这个隐含参数。

然后以init$ORACLE_SID.ora参数文件启动数据库

SQL> startup force pfile='?/dbs/initsitjf.ora'
ORACLE instance started.

Total System Global Area 3423965184 bytes
Fixed Size 2211584 bytes
Variable Size 1761607936 bytes
Database Buffers 1644167168 bytes
Redo Buffers 15978496 bytes
Database mounted.
Database opened.

现在就可以删除undotbs1表空间了

SQL> drop tablespace undotbs1 including contents and datafiles;
Tablespace dropped.

然后重建undotbs1表空间
SQL> create undo tablespace undotBS1 datafile '/soft/oracle/oradata/sitjf/undotbs01.dbf' size 100M ;
Tablespace created.

重新修改undo表空间为自动管理,并且设置默认undo表空间为undotbs1,通过init参数修改。

undo_management=auto
undo_retention=10800
undo_tablespace=undotbs1

重启数据库,现在就可以删除过渡undo表空间tmpundo了:

SQL> drop tablespace tmpundo including contents;
Tablespace dropped.

现在空间已经回收了,undo表空间也被收缩了。

注:

也可以使用drop rollback命令来删除回滚段_SYSSMU1_2181731349$,undo表空间必须为manual管理方式

DROP ROLLBACK SEGMENT "_SYSSMU1_2181731349$";

查看回滚段

SELECT SEGMENT_NAME, OWNER, TABLESPACE_NAME, STATUS FROM DBA_ROLLBACK_SEGS;

=================================================================================--------------------------------------

4) offline the rollback segment:
alter system set "_smu_debug_mode"=4;

使用 _smu_debug_mode=4并使用manual的方式管理UNDO,即将回滚段设置为手工的debug模式

alter rollback segment "_SYSSMU8$" offline;

select status from dba_rollback_segs where segment_id=8;

5) if STATUS=OFFLINE
drop rollback segment "_SYSSMU8$";
alter system set "_smu_debug_mode"=0;

---------------------------------==================================================================

本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:https://www.linuxidc.com/Linux/2012-08/68465.htm

重建UNDO表空间遭遇ORA-01548的更多相关文章

  1. 在PDB级别中如何切换或重建UNDO表空间

    Oracle 12.1版本中,UNDO表空间仅存在CDB级别(共享UNDO),来自于AskScuti博客园. Oracle 12.2版本开始,UNDO表空间同时可以存在每个PDB级别(本地UNDO). ...

  2. oracle重建undo表空间

    create undo tablespace UNDOTBS2 datafile 'D:\oracle\product\10.2.0\oradata\ttonline\UNDOTBS02.DBF' s ...

  3. 总结Oracle8i 的UNDO表空间损坏(ORA-01092及ORA-00600【4193】)情况下的数据库不完全恢复的经历

    服务器断电重启导致备份生产环境的恢复目录库无法进行启动,提示Ora-01092例程终止.强行断开连接 查看跟踪日志: Wed Jan 10 08:41:37 2018 Errors in file d ...

  4. Oracle undo 表空间管理 (摘DAVID)

    Oracle 的Undo有两种方式: 一是使用undo 表空间,二是使用回滚段. 我们通过 undo_management 参数来控制使用哪种方式,如果设为auto,就使用UNDO 表空间,这时必须要 ...

  5. 【Oracle】重做undo表空间

    重做undo表空间 场景: alert日志,报了如下错误: [oraprod@arpinfo bdump]$ tail -f alert_PROD.log Errors in file /ora115 ...

  6. Oracle备份恢复之无备份情况下恢复undo表空间

    UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚, ...

  7. 如何删除回滚段状态为NEEDS RECOVERY的undo表空间

    环境:RHEL 6.4 + Oracle 11.2.0.4 背景:备份恢复的测试库在一次不完全恢复后,没有来及做有效的全备,又一次数据库故障导致数据库无法正常open. 只能离线部分数据文件打开数据库 ...

  8. UNDO表空间损坏,爆满,ORA-600[4194]/[4193]错误解决

    模拟手工删除UNDO表空间 在ORADATA 中把UNDOTBS01.DBF 删除 模拟启库 SQL> STARUP; * 第 1 行出现错误: ORA-01157: 无法标识/锁定数据文件 2 ...

  9. Oracle创建新undo表空间最佳实践(包含段检查)

    在处理一则ORA-600 [4194]案例时,参考MOS文档:Step by step to resolve ORA-600 4194 4193 4197 on database crash (文档 ...

随机推荐

  1. [待优化笔记]原生JS实现验证框架 checkFun

    ;(function(){ /** 验证框架 checkFun * 使用方法: * <input class="required" type="text" ...

  2. vuejs2.0与1.x版本中怎样使用js实时访问input的值的变化

    vuejs 2.0中js实时监听input 在2.0的版本中,vuejs把v-el 和 v-ref 合并为一个 ref 属性了,可以在组件实例中通过 $refs 来调用.这意味着 v-el:my-el ...

  3. 中国 AI 天才养成计划:清华姚班和 100 个「张小龙」

    https://daily.zhihu.com/story/9653612?from=timeline&isappinstalled=0   AI财经社,专注未来,以及更好的生活 真正的 AI ...

  4. 「Android」GreenDao

    译文 版本:greenDAO 3.2.2 官网:http://greenrobot.org/greendao/ GitHub:https://github.com/greenrobot/greenDA ...

  5. Android-简单总结一下图片压缩

    最近项目需要用到图片压缩,所以简单总结一下.大致分为三种压缩. 图片质量压缩. 意思就是降低图片的质量,针对文件处理,但本身的像素点并不会减少. 本来像素点是这样的,经过算法计算,若一个像素点周围所存 ...

  6. MySQL 5.6.20-enterprise-commercial的参数文件位置问题

    今天在折腾MySQL的参数文件时,突然发现MySQL 5.6.20-enterprise-commercial-advanced-log这个版本数据库的参数文件my.cnf的位置有点奇怪,如下所示: ...

  7. MySQL 如何查看表的存储引擎

    MySQL 如何查看表的存储引擎   在MySQL中如何查看单个表的存储引擎? 如何查看整个数据库有那些表是某个特殊存储引擎,例如MyISAM存储引擎呢?下面简单的整理一下这方面的知识点. 如果要查看 ...

  8. mssql sqlserver 批量删除所有存储过程的方法分享

    转自:http://www.maomao365.com/?p=6864 摘要: 下文讲述采用sql脚本批量删除所有存储过程的方法,如下所示: 实验环境:sqlserver 2008 R2 平常使用sq ...

  9. 使用GDB调试gp(转载)

    使用 gdb 调试 postgres greenplum zalax3030人评论715人阅读2012-07-11 10:07:15   错误信息的获取途径有几种 :  1. 最简单的就是看Postg ...

  10. java.lang.NumberFormatException: Infinite or NaN

      1.异常提示: java.lang.NumberFormatException: Infinite or NaN 2.原因:无法格式化的数字,此数字要么不是个数字,要么是无穷大的数字,从而导致 B ...