ITPub博客

首页 > 数据库 > Oracle > 丢失undo文件和隐含参数_allow_resetlogs_corruption恢复

丢失undo文件和隐含参数_allow_resetlogs_corruption恢复

原创 Oracle 作者:dotaddjj 时间:2011-11-25 17:38:58 0 删除 编辑

今早的pub的一个帖子引起了自己的兴趣,说到是错误删除undo表空间数据文件无法打开,此时如果我们有恢复,那直接restore然后recover就行了!模拟下不用备份集恢复的情况吧!

关闭数据库在os上删除数据文件13

SQL> shutdown abort;

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup;

ORA-32004: obsolete and/or deprecated parameter(s) specified

ORACLE 例程已经启动。

Total System Global Area 524288000 bytes

Fixed Size 1249968 bytes

Variable Size 390073680 bytes

Database Buffers 130023424 bytes

Redo Buffers 2940928 bytes

数据库装载完毕。

ORA-01157: 无法标识/锁定数据文件 13 - 请参阅 DBWR 跟踪文件

ORA-01110: 数据文件 13: 'D:ORACLEPRODUCT10.2.0ORADATAORCLUNTBSO02.DBF'

SQL> alter database datafile 13 offline drop;

数据库已更改。

Alter database datafile 13 offline drop并不会删除此数据文件,只是将数据文件离线

归档模式:alter database datafile 'file_name' offline 和 offline drop 没有什么区别,因为都需要进行介质恢复。

非归档模式: 更多是offline drop

SQL> alter database open;

数据库已更改。

刚开始自己想直接把这个数据文件从untbso02表空间删掉,不过报错了!

数据库已经open,如果我们删除untbso02表空间的这个数据文件13了

SQL> alter tablespace untbso02 drop datafile 13;

alter tablespace untbso02 drop datafile 13

*

第 1 行出现错误:

ORA-03263: 无法删除表空间 UNTBSO02 的第一个文件

表空间的第一个数据文件无法删除,首先存储的表空间的元数据

如果此时删除表空间untbso02的其他文件了,下面的datafile 6是先前已经建好的

SQL> alter tablespace untbso02 drop datafile 6;

alter tablespace untbso02 drop datafile 6

*

第 1 行出现错误:

ORA-03262: 文件非空

SQL> alter tablespace untbso02 drop datafile 6;

alter tablespace untbso02 drop datafile 6

*

第 1 行出现错误:

ORA-03264: 无法删除本地管理的表空间中的脱机数据文件

如果此时我们创建一个空的数据文件则可以动态删除。

SQL> alter tablespace untbso02 add datafile 'd:test01.dbf' size 10m;

表空间已更改。

SQL> alter tablespace untbso02 drop datafile 'd:test01.dbf';

表空间已更改。

看来对表空间中的数据文件只能在oracle中删除非空和非第一个和online的数据文件。

这里重建一个undo删除原来的undo

SQL> drop tablespace untbso02 including contents and datafiles;

表空间已删除。

SQL> create tablespace undotbnew datafile 'd:oracleproduct10.2.0oradataorcl

undotbnew01.dbf' size 50M;

表空间已创建。

SQL> alter system set undo_tablespace=undotbnew scope=spfile;

系统已更改。

但是此时个人在这里还是有个疑问的:此时我们删除缺省的undo表空间,由于数据库是非正常关闭的,此时重启数据库时,很可能需要使用undo来恢复信息,而由于丢失了undo表空间数据文件,此时那部分undo信息可能不存在了而使数据出现丢失了。

不过这里如果有备份归档,那么恢复将是非常轻松地事情的。

这里说下隐含参数_allow_resetlogs_corruption的特殊恢复:

无备份,如果current重做日志或者active日志丢失顺坏,非正常关闭会丢失提交的数据,由于意外关闭,空间文件的stop scn和数据文件头的启动scn不一致,而不一致是数据库无法打开的最终原因!而oracle提供了一个隐含参数_allow_resetlogs_corruption用于跳过一致性检索强制打开数据库.

这里就简单列出其中的操作

Shutdown abort

Alter system set “_allow_resetlogs_corruption”=true scope=spfile

Startup mount

Recover database using backup controlfile until cancel

SQL> recover database using backup controlfile until cancel;

ORA-00279: 更改 2080349273 (在 11/25/2011 14:36:15 生成) 对于线程 1 是必需的

ORA-00289: 建议:

D:ORACLEPRODUCT10.2.0FLASH_RECOVERY_AREAORCLARCHIVELOG2011_11_25O1_MF_1_

174_%U_.ARC

ORA-00280: 更改 2080349273 (用于线程 1) 在序列 #174 中

指定日志: {=suggested | filename | AUTO | CANCEL}

cancel

ORA-01547: 警告: RECOVER 成功但 OPEN RESETLOGS 将出现如下错误

ORA-01194: 文件 1 需要更多的恢复来保持一致性

ORA-01110: 数据文件 1: 'D:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF'

ORA-01112: 未启动介质恢复

Alter database open resetlogs

此时比较幸运顺利打开了,之前第一次测试出现一大堆的ora-00600错误,然后马上exp所有数据,重建数据库imp。

另一次测试open resetlogs阶段出现的ora-00600

Errors in file d:oracleproduct10.2.0adminorcludumporcl_ora_460.trc:

ORA-00600: 内部错误代码, 参数: [2662], [0], [2080349279], [0], [2109503153], [4194313], [], []

Fri Nov 25 17:23:09 2011

Errors in file d:oracleproduct10.2.0adminorcludumporcl_ora_460.trc:

ORA-00600: 内部错误代码, 参数: [2662], [0], [2080349279], [0], [2109503153], [4194313], [], []

Fri Nov 25 17:23:09 2011

Error 600 happened during db open, shutting down database

USER: terminating instance due to error 600

Fri Nov 25 17:23:09 2011

Errors in file d:oracleproduct10.2.0adminorclbdumporcl_pmon_2992.trc:

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

Fri Nov 25 17:23:09 2011

Errors in file d:oracleproduct10.2.0adminorclbdumporcl_lgwr_3816.trc:

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

Fri Nov 25 17:23:09 2011

Errors in file d:oracleproduct10.2.0adminorclbdumporcl_dbw0_3024.trc:

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

Fri Nov 25 17:23:09 2011

Errors in file d:oracleproduct10.2.0adminorclbdumporcl_mman_2516.trc:

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

Fri Nov 25 17:23:10 2011

Errors in file d:oracleproduct10.2.0adminorclbdumporcl_p001_408.trc:

ORA-00600: internal error code, arguments: [15784], [600], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

Fri Nov 25 17:23:10 2011

Errors in file d:oracleproduct10.2.0adminorclbdumporcl_psp0_3416.trc:

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

Fri Nov 25 17:23:11 2011

Errors in file d:oracleproduct10.2.0adminorclbdumporcl_p000_3396.trc:

ORA-00600: internal error code, arguments: [15784], [600], [], [], [], [], [], []

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

Fri Nov 25 17:23:11 2011

Errors in file d:oracleproduct10.2.0adminorclbdumporcl_ckpt_1848.trc:

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

Fri Nov 25 17:23:13 2011

Errors in file d:oracleproduct10.2.0adminorclbdumporcl_reco_2420.trc:

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

Fri Nov 25 17:23:13 2011

Errors in file d:oracleproduct10.2.0adminorclbdumporcl_smon_1212.trc:

ORA-00600: internal error code, arguments: [], [], [], [], [], [], [], []

关于上述ora-0060错误等到自己对oracle有更深入的了解后再来对此处理吧!

[@more@]

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/25362835/viewspace-1056541/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    220
  • 访问量
    1663029