虚拟机启动的时候复制了一份,然后用复制出来那个启动发现数据库无法启动,相当于服务器掉电。恢复步骤如下:
1,先是ORA-01172: recovery of thread 1 stuck at block 272 of file 3
ORA-01151: use media recovery to recover block, restore backup if needed
SQL> select file#,name from v$datafile;
FILE# NAME
---------- --------------------------------------------------------------------------------
1 /u01/oracle/oradata/orcl/system01.dbf
2 /u01/oracle/oradata/orcl/sysaux01.dbf
3 /u01/oracle/oradata/orcl/undotbs01.dbf
4 /u01/oracle/oradata/orcl/users01.dbf
5 /u01/oracle/oradata/orcl/crmtbs01.dbf
6 /u01/oracle/oradata/orcl/crmtbs02.dbf
7 /u01/oracle/oradata/orcl/comptbs01.dbf
8 /u01/oracle/oradata/orcl/crmidxtbs01.dbf
9 /u01/oracle/oradata/orcl/crmidxtbs02.dbf
10 /u01/oracle/oradata/orcl/compidxtbs01.dbf
10 rows selected.
recover一下试试,按照提示是3文件出问题了,即undotbs01.dbf:
SQL> recover datafile 3;
Media recovery complete.
再次启库:
SQL> alter database open;
2,又报错:ORA-03113: end-of-file on communication channel。估计还是undo文件损坏
startup mount;
alter system set undo_management=manual scope=spfile;
shutdown immediate;
startup;
成功启动。哈哈,高兴跳起来,接下来开启应用程序发现白美了。
3,开启应用程序,又报ORA-01552: 非系统表空间 'USERS' 不能使用系统回退段
故障分析:UNDO表空间数据文件受损,导致执行更新操作失败。
故障修复:C:Documents and SettingsAdministrator>sqlplus / as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 9月 20 17:26:38 2012
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到:
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL> create undo tablespace "UNDOTBS02" datafile 'D:oracleproduct10.2.0oradatazjportUNDOTBS02.DBF' size 128m reuse autoextend on next 10m maxsize 2048m;
表空间已创建。
SQL> alter system set undo_tablespace=UNDOTBS02 scope=spfile;
系统已更改。
SQL> alter system set undo_management=auto scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。
数据库装载完毕。
数据库已经打开。
SQL> DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;
表空间已删除。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup;
ORACLE 例程已经启动。