日期:2014-05-16  浏览次数:20444 次

UNDO表空间失败的处理方法
  本文档中,测试环境是AIX6.1,日文系统。
一、UNDO表空间异常的现象
  1、表空间文件,如果被我们自己无意中删除,或者被其他程序破坏的话,Oracle将无法正常启动,也无法正常退出。
SQL> shutdown immediate
ORA-00376: ファイル12を読み込むことはできません。
ORA-01110: データファイル12: '/opt/oradata/DTCDB/undotbs_01.dbf'
  2、通过Oracle命令删除UNDO表空间,同样也会出现错误。
$ sqlplus /nolog
con
SQL*Plus: Release 11.1.0.6.0 - Production on 水 3月 14 17:52:46 2012

Copyright (c) 1982, 2007, Oracle.  All rights reserved.


SQL> conn /as sysdba
Connected to an idle instance.


SQL> startup

ORACLE instance started.
Total System Global Area 3874926592 bytes
Fixed Size                  2144080 bytes
Variable Size            1761609904 bytes
Database Buffers         2097152000 bytes
Redo Buffers               14020608 bytes
Database mounted.
Database opened.


SQL> drop tablespace undotbs;

drop tablespace undotbs
*
ERROR at line 1:
ORA-01548:
アクティブなロールバック?セグメント'_SYSSMU11_1331712400$'があります。表領域の
削除を終了しました
  3、通过创建UNDO表空间,由于表空间名称已经存在,同样也不可能成功的。
SQL> create undo tablespace undotbs1 datafile '/opt/oradata/DTCDB/undotbs_01.dbf' size 10m autoextend on next 1m maxsize 1024m;
create undo tablespace undotbs1 datafile '/opt/oradata/DTCDB/undotbs_01.dbf' size 10m autoextend on next 1m maxsize 1024m
*
ERROR at line 1:
ORA-01537: ファイル'/opt/oradata/DTCDB/undotbs_01.dbf'を追加できません -
すでにデータベースの一部として存在します
  4、如果创建一个新的UNDO表空间,即UNDO表空间名换一个新的,不在使用默认的表空间名称;然后删除原来默认表空间,同样出错。
SQL> create undo tablespace undotbs1 datafile '/opt/oradata/DTCDB/undotbs_02.dbf' size 10m autoextend on next 1m maxsize 1024m;
Tablespace created.


SQL> drop tablespace undotbs;

drop tablespace undotbs
*
ERROR at line 1:
ORA-01548:
アクティブなロールバック?セグメント'_SYSSMU11_1331712400$'があります。表領域の
削除を終了しました
  5、直接向UNDO表空间中添加数据库文件,还是出错。
SQL> alter tablespace undotbs add datafile '/opt/oradata/DTCDB/undotbs_01.dbf' size 10m autoextend on next 1m maxsize 1024m;
alter tablespace undotbs add datafile '/opt/oradata/DTCDB/undotbs_01.dbf' size 10m autoextend on next 1m maxsize 1024m
*
ERRO