总结 ?ORA-01548: 已找到活动回退段 '_SYSSMU1$', 终止删除表空间?

来源:互联网 发布:阿里云服务器稳定吗 编辑:程序博客网 时间:2024/05/02 14:08

总结 ?ORA-01548: 已找到活动回退段 '_SYSSMU1$', 终止删除表空间?

出现的原因:由于服务器自动重新启动造成回滚事务没有及时提交造成数据库块的损坏,及后面造成一系列的问题。

 

 /*  :

 Wed Dec 08 15:20:03 2010

Errors in file d:/oracle/product/10.2.0/admin/taxdev/bdump/taxdev_smon_2572.trc:

ORA-01578: ORACLE data block corrupted (file # 48, block # 1919)

ORA-01110: data file 48: 'F:/UNDO0001'

 

 */

 

 

 

前提已经建立好表空间undo2:  

 

--DROP TABLESPACE UNDOTB1 INCLUDING CONTENTS AND DATAFILES;

 

CREATE UNDO TABLESPACE undo2 DATAFILE 

  'F:/UNDO02' SIZE 1000M AUTOEXTEND ON NEXT 50M MAXSIZE 8000M,

  'F:/UNDO03' SIZE 1000M AUTOEXTEND ON NEXT 50M MAXSIZE 8000M,

  'F:/UNDO04' SIZE 1000M AUTOEXTEND ON NEXT 50M MAXSIZE 8000M,

  'F:/UNDO05' SIZE 1000M AUTOEXTEND ON NEXT 50M MAXSIZE 8000M

ONLINE

RETENTION NOGUARANTEE

BLOCKSIZE 8K

FLASHBACK ON;

 

 

-- 删除回滚段 

 DROP TABLESPACE UNDO2 INCLUDING CONTENTS AND DATAFILES; 

 

 ?ORA-01548: 已找到活动回退段 '_SYSSMU1$', 终止删除表空间

 

 

 

--CREATE UNDO TABLESPACE UNDOTBS1 DATAFILE 'F:/UNDOTBS1.DBF' SIZE2000M;

 

/*

Wed Dec 08 15:20:03 2010

Errors in file d:/oracle/product/10.2.0/admin/taxdev/bdump/taxdev_smon_2572.trc:

ORA-01578: ORACLE data block corrupted (file # 48, block # 1919)

ORA-01110: data file 48: 'F:/UNDO0001'

*/

可是这里没有备份啊,那就先确定损坏的是什么

 

SELECT segment_name, segment_type, owner, tablespace_name

  FROM dba_extents 

 WHERE file_id = 48 AND 1919 BETWEEN block_id AND block_id + blocks - 1

 

 查询结果如下

 ---------------------------------------------------------------------

 segment_name   segment_type      owner        tablespace_name

   _SYSSMU18$      TYPE2 UNDO        SYS          UNDO2

 

 

--------------------------------

第 1 行出现错误:

ORA-12008: 实体化视图的刷新路径中存在错误

ORA-01578: ORACLE 数据块损坏 (文件号 48, 块号 1919)

ORA-01110: 数据文件 48: 'F:/UNDO0001'

ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2255

ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2461

ORA-06512: 在 "SYS.DBMS_SNAPSHOT", line 2430

ORA-06512: 在 "BLTS.XIMPORT", line 811

ORA-06512: 在 line 1

 

 12-08 16:59 问题未解决 没有头绪

 ---------------------------------------

 http://blog.csdn.net/roland_wg/archive/2010/04/11/5471770.aspx 参考网站

 

  /***

  ORA-01548: 已找到活动回退段'_SYSSMU1$',终止删除表空间 解决办法

  http://smfflynj.itpub.net/post/31928/289863

 

验证过程:

1 查看所有回滚段信息:

select segment_name,status,tablespace_name from dba_rollback_segs;

 

 

 

  ***/

SEGMENT_NAME    STATUS     TABLESPACE_NAME

------------------------------ ---------------- ------------------------------

 

SYSTEM    ONLINE SYSTEM

_SYSSMU2$OFFLINEUNDO01

_SYSSMU3$OFFLINEUNDO01

_SYSSMU4$OFFLINEUNDO01

_SYSSMU5$OFFLINEUNDO01

_SYSSMU6$OFFLINEUNDO01

_SYSSMU7$OFFLINEUNDO01

_SYSSMU8$OFFLINEUNDO01

_SYSSMU57$OFFLINEUNDO01

_SYSSMU1$PARTLY AVAILABLEUNDO01

_SYSSMU56$OFFLINEUNDO01

_SYSSMU55$OFFLINEUNDO01

_SYSSMU54$OFFLINEUNDO01

_SYSSMU53$OFFLINEUNDO01

_SYSSMU52$OFFLINEUNDO01

_SYSSMU51$OFFLINEUNDO01

_SYSSMU34$PARTLY AVAILABLEUNDO01

_SYSSMU33$OFFLINEUNDO01

_SYSSMU18$ONLINEUNDO2

_SYSSMU9$ONLINEUNDO2

_SYSSMU20$ONLINEUNDO2

_SYSSMU21$ONLINEUNDO2

_SYSSMU22$ONLINEUNDO2

_SYSSMU23$PARTLY AVAILABLEUNDO2

_SYSSMU24$PARTLY AVAILABLEUNDO2

_SYSSMU17$ONLINEUNDO2

_SYSSMU16$ONLINEUNDO2

_SYSSMU15$ONLINEUNDO2

_SYSSMU14$ONLINEUNDO2

_SYSSMU13$ONLINEUNDO2

_SYSSMU12$ONLINEUNDO2

_SYSSMU11$ONLINEUNDO2

_SYSSMU10$ONLINEUNDO2

_SYSSMU19$ONLINEUNDO2

 

已选择49行。

说明是有问题的。

 

 

 

 

处理过程

  --------------------------------

 1、 -- create undo tablespace undo2 datafile 'D:oracleoradataPS30710UNDOTBS2.DBF' size 1000M; 已经建立不需要在建立

     -- alter system set undo_tablespace=undotBS2;

      alter system set undo_tablespace=undo2;

      drop tablespace UNDO2 including contents;   (进行这部操作的时候会报下面的错):

        ORA-01548: 已找到活动回退段 '_SYSSMU1$', 终止删除表空间

 

 2、 修改文件init.ora.926200993317,如下:

       D:/oracle/product/10.2.0/admin/taxdev/pfile 

       undo_management=manual

       undo_retention=10800

       undo_tablespace=undo02

      _CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU10$,_SYSSMU57$,_SYSSMU56$,_SYSSMU55$,_SYSSMU54$,_SYSSMU53$,_SYSSMU52$,_SYSSMU51$,_SYSSMU34$,_SYSSMU33$)

 

3、启动服务

 

     startup pfile= 'D:/oracle/product/10.2.0/admin/taxdev/pfile/init.ora.926200993317' 

 

 

 

4、删除表空间

        drop tablespace UNDO01 including contents;

 

 

 

 

5、  修改init.ora.926200993317,如下:

undo_management=auto

undo_retention=10800

undo_tablespace=undo2

_CORRUPTED_ROLLBACK_SEGMENTS =(_SYSSMU18$,_SYSSMU9$,_SYSSMU20$,_SYSSMU21$,_SYSSMU22$,_SYSSMU23$,_SYSSMU24$,_SYSSMU10,_SYSSMU11,_SYSSMU12,_SYSSMU13,_SYSSMU14

 ,_SYSSMU15,_SYSSMU16,_SYSSMU17,_SYSSMU19)

 

 

 

6 关闭服务,并且用下面的命令重新启动服务

startup pfile=' D:/oracle/product/10.2.0/admin/taxdev/pfile/init.ora.92620099331'

 

7/拷贝spfile文件,原先的spfile文件做好备份

 

8 关闭服务器,重新启动服务器,即可。

select segment_name,status,tablespace_name from dba_rollback_segs;

 

-------------------------------------------------------------------------

SEGMENT_NAMESTATUSTABLESPACE_NAME

SYSTEMONLINESYSTEM

_SYSSMU9$OFFLINEUNDO2

_SYSSMU10$ONLINEUNDO2

_SYSSMU11$ONLINEUNDO2

_SYSSMU12$ONLINEUNDO2

_SYSSMU13$ONLINEUNDO2

_SYSSMU14$ONLINEUNDO2

_SYSSMU15$ONLINEUNDO2

_SYSSMU16$ONLINEUNDO2

_SYSSMU17$ONLINEUNDO2

_SYSSMU18$NEEDS RECOVERYUNDO2

_SYSSMU19$ONLINEUNDO2

_SYSSMU20$NEEDS RECOVERYUNDO2

_SYSSMU21$NEEDS RECOVERYUNDO2

_SYSSMU22$NEEDS RECOVERYUNDO2

_SYSSMU23$NEEDS RECOVERYUNDO2

_SYSSMU24$NEEDS RECOVERYUNDO2

 

 

--表空间已经删除 undo01已经删除里面的回滚事务也删除

 

 

2010-12-08-  18:30 晚上开始备份数据库 

 

2010-12-09 早晨解决备份  

-------------------------------------------------------------------

 

/*检查日志数据库出现ORA-01578错误:数据块损坏(文件号 26, 块号 3283302)

 

[error][ora-01578]数据块损坏后重建索引? */

 

--------------------------------------------------------

2010-12-09 早晨检查数据库备份发现有数据库报错 提示如下:

 

....

. . 正在导出表                      T_DJ_TFYXX

EXP-00056: 遇到 ORACLE 错误 1578

ORA-01578: ORACLE 数据块损坏 (文件号 6, 块号 320089)

ORA-01110: 数据文件 6: 'D:/BK_DEV01.ORA'

. . 正在导出表                      

 

 

/* 查询出错的块*/

SELECT segment_name, segment_type

  FROM dba_extents

 WHERE file_id = 6 AND 320089 BETWEEN block_id AND block_id + blocks - 1;

 

结果为:

segment_name                           segment_type

-----------------------     ------------------------

T_DJ_TFYXX                             TABLE

 

说明:T_DJ_TFYXX为物化视图,直接把数据 Truncate 掉,重新导入数据。ok!

---------------------------------------------------------------------------------------------------

 

 2010-12-09 早晨检查数据库日志发现 

 

ORA-12012: 自动执行作业 81 出错

ORA-01578: ORACLE 数据块损坏 (文件号 26, 块号 3283302)

ORA-01110: 数据文件 26: 'D:/ORACLE/PRODUCT/10.2.0/ORADATA/TAXDEV/BKDEV02'

ORA-06512: 在 "BLTS.XIMPORT", line 527

ORA-06512: 在 "BLTS.XIMPORT", line 745

ORA-06512: 在 line 1

 

--查询出错的块

SELECT *

  FROM dba_extents

 WHERE file_id = 26 AND 3283302 BETWEEN block_id AND block_id + blocks - 1;

 ---------------------------------------------

 SEGMENT_NAME                  SEGMENT_TYPE

 

 IDX_SB_DECLARE_YJKQX_CS       INDEX

 

 

 用以下语句查询:上面SQL和下面的效果一样

    /* Formatted on 2010/12/09 09:58 (Formatter Plus v4.8.8) */

SELECT segment_name, segment_type

  FROM dba_extents

 WHERE file_id = 26 AND 3283302 BETWEEN block_id AND block_id + blocks - 1;

 

结果为:

segment_name                           segment_type

-----------------------     ------------------------

  IDX_SB_DECLARE_YJKQX_CS                    INDEX

 

 

 

检查发现 BLT_WH_SB_DECLARE 中索引坏了 

 

--重建索引 15分钟 OK

alter index IDX_SB_DECLARE_YJKQX_CS rebuild online;

------------------------------------------------------------------------------

 

 

 

 

 

原创粉丝点击