12
返回列表 发新帖
楼主: zhuaibing

HELP!!! undotbs01.dbf数据文件损坏,请教如何恢复?

[复制链接]
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
11#
发表于 2005-1-4 11:24 | 只看该作者
你有做備份嗎?是什麼備份?

使用道具 举报

回复
论坛徽章:
0
12#
 楼主| 发表于 2005-1-4 11:51 | 只看该作者
没有在oracle系统里面做备份,只是把整个数据库copy了一份,
因为undotbs01.dbf文件太大了,我就把它给删除了,现在我重新建了一个,我想把原来的给删除掉!

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
13#
发表于 2005-1-4 12:29 | 只看该作者
Piner有這方面的介紹,你看看對你是否有幫助:
如果在offline datafile的時候發現有活動的RBS,從而造成offline失敗的話,就執行下面的方法:
Steps:
a.ALTER ROLLBACK SEGMENT <rollback_segment> OFFLINE;
b.检测当然回滚段的状态。
SELECT SEGMENT_NAME, STATUS FROM DBA_ROLLBACK_SEGS
WHERE TABLESPACE_NAME = '<TABLESPACE_NAME>';
c.删除所有offline的回滚段
DROP ROLLBACK SEGMENT <rollback_segment>;
d.处理那些online状态的回滚段。
重新执行第二步的查询
如果你已经执行过offline操作的回滚段状态仍然是online,则说明这个回滚段内有活动的事务。你要接着查询
SELECT SEGMENT_NAME, XACTS ACTIVE_TX, V.STATUS
FROM V$ROLLSTAT V, DBA_ROLLBACK_SEGS
WHERE TABLESPACE_NAME = '<TABLESPACE_NAME>' AND SEGMENT_ID = USN;
如果没有返回结果,则证明存在丢失或损坏的数据文件的回滚段表空间中的所有回滚段都已经被offline了,然后重新执行第二步,第三步。如果查询有结果返回,则状态应该是"PENDING OFFLINE".接着查看ACTIVE_TX列,如果值为0,则表明此回滚段中已经没有未处理的事务了,很快就会被offline的,然后等它offline后重新执行2,3步后跳至第六步。如果值大于0,则继续到第五步。
.强制那些包含活动事务的回滚段offline。
活动的事务应该被提交或者回滚,执行下面的查询看看哪些用户占用了回滚段:
SELECT S.SID, S.SERIAL#, S.USERNAME, R.NAME "ROLLBACK"
FROM V$SESSION S, V$TRANSACTION T, V$ROLLNAME R
WHERE R.NAME IN ('<PENDING_ROLLBACK_1>', ... , '<PENDING_ROLLBACK_N>')
AND S.TADDR = T.ADDR AND T.XIDUSN = R.USN;
最好能直接联系到那些user让他们自己去回滚或者提交事务,如果不能做到的话,那就只能强制性的杀掉进程了。
ALTER SYSTEM KILL SESSION '<SID>, <SERIAL#>';
杀掉进程后再过一段时间后回滚段会自动清除那些事务,然后就可以回到第二步继续查询了。
f.删除回滚段。
DROP TABLESPACE <tablespace_name> INCLUDING CONTENTS;
g.重建回滚段并online它们

使用道具 举报

回复
论坛徽章:
168
马上加薪
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:10:582012新春纪念徽章
日期:2012-01-04 11:49:54蜘蛛蛋
日期:2011-12-05 16:08:56ITPUB十周年纪念徽章
日期:2011-11-01 16:19:41设计板块每日发贴之星
日期:2011-07-22 01:01:02ITPUB官方微博粉丝徽章
日期:2011-06-30 12:30:16管理团队成员
日期:2011-05-07 01:45:082011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:33
14#
发表于 2005-1-4 12:48 | 只看该作者

使用道具 举报

回复
论坛徽章:
0
15#
 楼主| 发表于 2005-1-4 12:49 | 只看该作者
SQL> ALTER ROLLBACK SEGMENT "_SYSSMU1$" OFFLINE;
ALTER ROLLBACK SEGMENT "_SYSSMU1$" OFFLINE
*
ERROR at line 1:
ORA-30019: Illegal rollback Segment operation in Automatic Undo mode


通过什么命令修改“Automatic Undo mode”这个模式?

使用道具 举报

回复
论坛徽章:
4
操作系统板块每日发贴之星
日期:2005-04-19 01:01:46授权会员
日期:2005-10-30 17:05:33管理团队2006纪念徽章
日期:2006-04-16 22:44:45会员2006贡献徽章
日期:2006-04-17 13:46:34
16#
发表于 2005-1-4 14:55 | 只看该作者
you need to shutdown the instance to reset
   undo_management=manual
in parameter file, to change undo mode.

After you shutdown, change  undo_mangement, then you can drop
original undo_tablespace, create a new one, and shutdown,  change back to "auto" undo.

Another way is: if you have backup of  undo tablespace,  do a media recovery after you shutdown.

NOTICE!!!
backup of undo datafiles is as important as other datafiles.

使用道具 举报

回复
论坛徽章:
0
17#
 楼主| 发表于 2005-1-5 09:31 | 只看该作者
奇怪!我新建的tablespace undotbs2 可以删除,但是原来的undotbs1删除时却报如下错误:
ERROR at line 1:
ORA-01548: active rollback segment '_SYSSMU1$' found, terminate dropping tablespace

也不能drop rollback segment  "_SYSSMU1$"
不明为什么,希望高人指教一下!谢谢!!!

还有在dbs目录下,一般有initxxx.ora文件,但是我这个没有,却有spfilexxx.ora和orapwxxx这两个文件

使用道具 举报

回复
论坛徽章:
0
18#
 楼主| 发表于 2005-1-6 11:37 | 只看该作者
顶一下!

使用道具 举报

回复
论坛徽章:
2
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34
19#
发表于 2005-1-6 11:40 | 只看该作者

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表