undo 损坏案列(二)

2014-11-24 17:31:00 · 作者: · 浏览: 1
ndotbs1 表空online


如是操作:


报错三
SQL> alter tablespace UNDOTBS1 offline;
alter tablespace UNDOTBS1 offline
*
ERROR at line 1:
ORA-01191: file 3 is already offline - cannot do a normal offline
ORA-01110: data file 3: '/u01/app/oracle/oradata/gtadata13/undotbs01.dbf'
--- 此时心想,怎么不能offline了,看能否风能 temporary offline

查询数据文件头,select FILE#,checkpoint_change#,recover, fuzzy from v$datafile_header;


最后通过 SQL> alter system checkpoint; --做一个检查点,再试试:
System altered.
SQL> alter tablespace undotbs1 offline temporary;
Tablespace altered.


再次通过 dba_tablespaces 查看 undotbs1 的状态,发现 是否offline。 offline 状态。


8 测试再看看能否通过其他用户连接或client 连接:
-- 发现ok,可以通过其他用户连接了,但是一些程序 涉及到报错:


报错四:


执行存储过程失败 ORA-00376: 此时无法读取文件 3
ORA-01110: 数据文件 3: '/u01/app/oracle/oradata/gtadata13/undotbs01.dbf'
ORA-06512: 在 "GTA_DATA.SP_QA_TIMELINESS", line 54
ORA-06512: 在 line 1


如是想了想 ,确实,因为undotbs1 是通过物理删除的,那么oracle 一致性 会是这些需要recovery恢复:


9 既然offline,可否删除掉,(估计比较麻烦,这回退给干掉了,怎么回退了?)


通过dba_rollback_segs 发现 还有很多 recovery 的undotbs1 段需要回滚恢复,是数据一致性。


SQL> select segment_name,tablespace_name,status from dba_rollback_segs;
SEGMENT_NAME TABLESPACE_NAME STATUS
------------------------------ ------------------------------ ----------------
SYSTEM SYSTEM ONLINE
_SYSSMU122_928896348$ UNDOTBS1 OFFLINE
_SYSSMU121_4101333926$ UNDOTBS1 OFFLINE
_SYSSMU120_471964226$ UNDOTBS1 OFFLINE
_SYSSMU119_3645569891$ UNDOTBS1 OFFLINE
_SYSSMU118_1816999230$ UNDOTBS1 OFFLINE
_SYSSMU117_3513527861$ UNDOTBS1 OFFLINE
_SYSSMU116_2167311593$ UNDOTBS1 OFFLINE
_SYSSMU90_1969094056$ UNDOTBS1 NEEDS RECOVERY
_SYSSMU89_2804401042$ UNDOTBS1 NEEDS RECOVERY
_SYSSMU88_3446396459$ UNDOTBS1 NEEDS RECOVERY
_SYSSMU87_268667266$ UNDOTBS1 NEEDS RECOVERY
_SYSSMU86_1912503840$ UNDOTBS1 NEEDS RECOVERY
_SYSSMU85_2732352333$ UNDOTBS1 NEEDS RECOVERY
_SYSSMU84_1805825668$ UNDOTBS1 NEEDS RECOVERY
_SYSSMU83_1984855352$ UNDOTBS1 NEEDS RECOVERY
_SYSSMU212_1777710046$ UNDOTBS2 ONLINE
_SYSSMU211_3260590093$ UNDOTBS2 ONLINE
_SYSSMU210_1915944113$ UNDOTBS2 ONLINE
_SYSSMU209_2868303011$ UNDOTBS2 ONLINE
_SYSSMU208_3687438092$ UNDOTBS2 ONLINE
_SYSSMU207_752508113$ UNDOTBS2 ONLINE


此时,百度,及询问了一些高手,说最好做个备份: 如是想通过expdp 导入导出:


报错五:


[oracle@gtadata13 dump_dir]$ impdp dcsys/DCSYS directory=dump_dir dumpfile=TBL_CHN_FN_ForecFin.dmp
Import: Release 11.2.0.3.0 - Production on Wed Jan 22 14:40:30 2014
Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.
Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORA-31626: job does not exist
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.KUPV$FT", line 1042
ORA-31637: cannot create job SYS_IMPORT_FULL_01 for user DCSYS
ORA-31632: master table "DCSYS.SYS_IMPORT_FULL_01" not found, invalid, or inaccessible
ORA-31635: unable to establish job resource synchronization
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 79
ORA-06512: at "SYS.KUPV$FT_INT", line 2401
ORA-00376: file 3 cannot be read at this time
ORA-01110: data file 3: '/u01/app/oracle/oradata/gtadata13/undotbs01.dbf'
-- 这也不行,看来,只能老实的弄了


10 ,打算删除 这offline undotbs1表空间,看是否跳过:


报错六:


SQL> drop tablespace undot