li
  当前位置:主页 > 备份恢复 > 文章内容
li
UNDO表空间的ORA-1122错误解决方法(3)
来源: www.ixdba.net  作者: IXDBA.NET官方    时间:2008-03-21   阅读:24  
本文章共2146字,分2页,当前第1页,快速翻页:
 

紧接上篇的话题:

http://www.ixdba.net/article/cb/1355.html

http://www.ixdba.net/article/20/1356.html

上一篇文章中尝试使用隐含参数_offline_rollback_segments来打开数据库,这里还可以选择将UNDO表空间的数据文件直接删除,然后使用_corrupted_rollback_segments参数来打开数据库,整个过程于上一篇介绍的方法类似。

SQL> STARTUP MOUNT
ORACLE
例程已经启动。

Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。
SQL> ALTER DATABASE OPEN;
ALTER DATABASE OPEN
*
ERROR
位于第 1 :
ORA-01122:
数据库文件 2 验证失败

ORA-01110:
数据文件 2: 'F:ORACLEORADATATESTUNDOTBS01.DBF'
ORA-01200: 25600
的实际文件大小小于26880块的正确大小

下面尝试使用_corrupted_rollback_segments打开数据库,使用_offline_rollback_segments参数时,Oracle还会尝试进行数据块的延迟清除,而对于_corrupted_rollback_segments来说,Oracle假设事务已经回滚,而不会进行其他的检查。一般UNDO表空间丢失或损害的时候可以尝试使用这个隐含参数:

SQL> ALTER DATABASE DATAFILE 'F:ORACLEORADATATESTUNDOTBS01.DBF' OFFLINE DROP;

数据库已更改。

下面创建初始化参数PFILE

SQL> SHUTDOWN IMMEDIATE
ORA-01109:
数据库未打开

已经卸载数据库。
ORACLE
例程已经关闭。
SQL> CREATE PFILE='F:INITTEST.ORA' FROM SPFILE;

文件已创建。

手工添加下面的初始化参数:

*.undo_management='MANUAL'
_corrupted_rollback_segments=(_SYSSMU1$,_SYSSMU2$,_SYSSMU3$,_SYSSMU4$,_SYSSMU5$,_SYSSMU6$,_SYSSMU7$,_SYSSMU8$,_SYSSMU9$,_SYSSMU10$)

IXDBA.NET社区论坛

可以通过上一篇文章中给出的方法打开数据库查询DBA_ROLLBACK_SEGS视图来获取回滚段列表。

对于没有启动的数据库,可以通过linux操作系统命令stringssystem表空间的数据文件中获取回滚段信息。

对于windows环境下的Oracle,可以将数据文件通过ftp,拷贝到linux系统中,然后执行strings命令:

strings system01.dbf | grep _SYSSMU

下面利用修改后的PFILE打开数据库:

SQL> STARTUP PFILE=F:INITTEST.ORA
ORACLE
例程已经启动。

Total System Global Area 76619308 bytes
Fixed Size 454188 bytes
Variable Size 50331648 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
数据库装载完毕。数据库已经打开。

下面的处理方法就和上一篇文章中介绍的比较类似了,先删除回滚段,然后删除回滚表空间,然后建立新的UNDO表空间:

SQL> SELECT SEGMENT_NAME, OWNER, TABLESPACE_NAME, STATUS
2 FROM DBA_ROLLBACK_SEGS;

SEGMENT_NAME OWNER TABLESPACE_NAME STATUS
--------------- ------ -------------------- ----------------
SYSTEM SYS SYSTEM ONLINE
_SYSSMU1$ PUBLIC UNDOTBS1 NEEDS RECOVERY
_SYSSMU2$ PUBLIC UNDOTBS1 NEEDS RECOVERY
_SYSSMU3$ PUBLIC UNDOTBS1 NEEDS RECOVERY
_SYSSMU4$ PUBLIC UNDOTBS1 NEEDS RECOVERY
_SYSSMU5$ PUBLIC UNDOTBS1 NEEDS RECOVERY
_SYSSMU6$ PUBLIC UNDOTBS1 NEEDS RECOVERY
_SYSSMU7$ PUBLIC UNDOTBS1 NEEDS RECOVERY
_SYSSMU8$ PUBLIC UNDOTBS1 NEEDS RECOVERY
_SYSSMU9$ PUBLIC UNDOTBS1 NEEDS RECOVERY
_SYSSMU10$ PUBLIC UNDOTBS1 NEEDS RECOVERY

已选择11行。

SQL> DROP ROLLBACK SEGMENT "_SYSSMU1$";

回退段已删除。

SQL> DROP ROLLBACK SEGMENT "_SYSSMU2$";

回退段已删除。

SQL> DROP ROLLBACK SEGMENT "_SYSSMU3$";

回退段已删除。

SQL> DROP ROLLBACK SEGMENT "_SYSSMU4$";



阅读更多内容1 · 2 · 下一页>>


  上一篇: UNDO表空间的ORA-1122错误解决方...   下一篇: 使用Flashback Query 恢复误删除...
li
 §相关评论  
 热点文章

·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 编辑推荐
·Oracle数据库远程复制与异地容
·Oracle 11g备份恢复功能增强
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·UNDO表空间的ORA-1122错误解决
·使用Flashback Query 恢复误删
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是
·ORA-01843:无效的月份
li
 相关篇章
·UNDO表空间的ORA-1122错误解决方...
·UNDO表空间的ORA-1122错误解决(...
·Oracle 11g备份恢复功能增强
·Oracle数据库远程复制与异地容灾...
·RMAN备份恢复之SPFILE的恢复(三...
·Oracle提示的优先级最高?——一...
·备份之脱机表空间备份
·备份之全库一致性备份
·备份之联机表空间备份
·备份之控制文件备份
·使用Flashback Query 恢复误删除...
·如何开启/关闭oracle的归档
·Rman的format格式中的%s类似的东...
·怎么样创建RMAN恢复目录
·ORA-01843:无效的月份,这个是什...
·ORA-01843:无效的月份
·执行exec dbms_logmnr_d.build('...
·rman怎么样在恢复的时候移动数据...
·操作系统重装,如何恢复oracle数...
·联机日志损坏如何恢复
 
li
设为首页 | 关于我们 | 技术服务 | 收藏本站 | 网站地图 | 联系方式 | 本站友情连接