没有RMAN备份的情况下,误删数据文件undotbs01.dbf,如何恢复?

1.问题描述
没有RMAN备份的情况下,误删UNDOTBS表空间的数据文件后,sqlplus / as sysdba进入数据库,报错如下信息
ORA-01157: cannot identify/lock data file 3 - see DBWR trace file
ORA-01110: data file 3: '/u01/app/oracle/oradata/easdb/undotbs01.dbf'
查看数据库状态为mounted

2.解决方法
2.1.手动杀死数据库进程
方法如下:
2.1.1.查询数据库pmon进程的PID号
[oracle@easdb dbs]$ ps -ef |grep pmon
oracle 2536 1 0 09:36 ? 00:00:00 ora_pmon_easdb
oracle 12032 11195 0 12:04 pts/1 00:00:00 grep --color=auto pmon
2.1.2.杀死pmon进程
[oracle@easdb dbs]$ kill -9 2536
此时数据库已经关闭。
2.2.绕过检查点登录
2.2.1.先shutdown,以restrict模式打开数据库

2.2.2以OFFLINE DROP选项删除丢失或损坏的数据文件,再打开数据库

2.2.3.修改pfile参数文件,添加隐藏参数
vi initeasdb.ora
加入如下两行:
*._allow_resetlogs_corruption=TRUE
*._corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)
这个参数应当包含ROLLBACK_SEGMENTS中损坏的表空间的所有的回滚段,查询方式如下;
select tablespace_name, owner, segment_name, status from dba_rollback_segs where TABLESPACE_NAME='UNDOTBS3';
2.2.4.以RESTRICT模式指定pfile打开数据库
startup restrict pfile='/u01/app/oracle/product/11.2.0/dbhome_1/dbs/init.ora';

此时数据库已经是open状态了
查看spfile为空值。create spfile from pfile;

重新登录后再次查看spfile。

2.3.删除原来
没有RMAN备份的情况下,误删数据文件undotbs01.dbf,如何恢复?
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。



