首先让他登录到服务器,重启数据库:
SQL> shutdown immediate
SQL> startup
执行startup启动指令后,果然出现错误信息,显示为datafile 3文件异常。这里的datafile 3对应的是undo表空间,在打开数据库时,需要用到undo block 208来回滚没有提交的事务,但是block 208这个块有问题,提示需要恢复。
执行以下命令,进行数据文件恢复:
SQL> recover datafile 3;
结果提示上面的错误,说明datafile 3已经损坏,将其下线:
SQL> alter database datafile 3 offline drop;
既然数据库已经是open的状态,那么就可以创建新的undo表空间:
SQL> create undo tablespace UNDOTBS datafile 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\UNDOTBS.dbf' size 500m autoextend off;
指定UNDOTBS表空间为默认undo表空间:
SQL> alter system set undo_tablespace='UNDOTBS' scope=both;
确保所有UNDOTBS1的status都已变成offline:
SQL> select SEGMENT_NAME ,STATUS ,TABLESPACE_NAME from dba_rollback_segs;
当UNDOTBS1都为OFFLINE状态后,删除UNDOTBS1:
SQL> drop tablespace UNDOTBS1 including contents and datafiles;
重启数据库验证结果,问题已解决:
注意:
- 对于非归档模式下只能使用以下指令对数据文件置为离线,否则会提示错误:
SQL> alter database datafile 3 offline drop;
- 而对于归档模式,offline和offline drop没有什么区别