|
|
9i如果有备份,
拷贝回来 recover 以下就可以了
没有备份的话 如下。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> alter database datafile 'C:\ORACLE\ORADATA\TESTDB\UNDOTBS01.DBF' offline;
数据库已更改。
SQL> alter database open;
数据库已更改。
SQL> select US#,NAME,ts#,STATUS$,FLAGS from undo$ where STATUS$ <> 3;
US# NAME TS# STATUS$ FLAGS
---------- ------------------------------ ---------- ---------- ----------
1 _SYSSMU1$ 1 2
2 _SYSSMU2$ 1 2
3 _SYSSMU3$ 1 2
4 _SYSSMU4$ 1 2
5 _SYSSMU5$ 1 2
6 _SYSSMU6$ 1 2
7 _SYSSMU7$ 1 2
8 _SYSSMU8$ 1 2
9 _SYSSMU9$ 1 2
10 _SYSSMU10$ 1 2
11 _SYSSMU11$ 1 5
SQL> select count(*) from arch; --这里表是不能读取一致性了
select count(*) from arch
*
ERROR 位于第 1 行:
ORA-00376: ???????? 2
ORA-01110: ???? 2: 'C:\ORACLE\ORADATA\TESTDB\UNDOTBS01.DBF'
SQL> shutdown
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL>
编辑INITtestdb_undo.ORA'
*.undo_management='AUTO'
*.undo_retention=10800
*.undo_tablespace='UNDOTBS1'
_allow_resetlogs_corruption=true
_corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$,_SYSSMU11$)
_offline_rollback_segments=true
SQL> startup pfile='C:\oracle\ora92\database\INITtestdb_undo.ORA';
ORACLE 例程已经启动。
Total System Global Area 101784276 bytes
Fixed Size 453332 bytes
Variable Size 75497472 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> alter database open;
数据库已更改。
SQL> select count(*) from arch;
COUNT(*)
----------
104822
再创建新的undo表空间
drop 坏的undo tablespace
最好做一个整库的导出,并导入到新系统
|
|
|
|
|
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/203348/viewspace-1291302/
,如需转载,请注明出处,否则将追究法律责任。