一次数据库恢复的经历

XXXXoracle8i数据库临时表空间出问题恢复
在XXX医院数据库不能启动,
提示错误码ora-01113 ??4?????
ora-01110:????4:'D:\oracle\oradata\orcl\temp01.dbf'
到现场后执行startup force;同样提示上面的错误,
startup mount提示数据库已经装载,但是不能open;
系统是东软的医保程序,由于不了解对方的业务和系统,连应用用户的密码都不知道,所以在恢复
的时候心里面也非常害怕,必竞我也不是专职的DBA,想好了如何进行恢复和用户交待了在恢复过程中可能出现的问题.
第一步先将orcl下所有的实例全都备份到移动硬盘中,6G,备份了大约3个小时.
第二步备份完之后连接数据库启动到mount状态
connect / as sysdba;
startup mount;
alter database datafile 'D:\oracle\oradata\orcl\temp01.dbf' offline;
执行后出错,晕了,后来一查资料mount状态下是不能使表空间下线的.
drop tablespace temp也不行,折腾了半天.
重新整理思路,从控制文件入手开始做,让系统在启动时不加载temp01.dbf文件.
执行:alter database backup controlfile to trace 此文件会生成在oracle\admin\orcl\udump\最后一个文件.
如果是oracle10g可以在这个语句后面加上 as '文件路径文件名'
 将文件打开,找到如下部分,copy出来,形成一个文件如放在D:盘 controlfile.txt
startup nomount;注意此处一定启动到数据库的nomount状态.
CREATE CONTROLFILE REUSE DATABASE "ORCL" NORESETLOGS  NOARCHIVELOG
--  SET STANDBY TO MAXIMIZE PERFORMANCE
    MAXLOGFILES 5
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 1
    MAXLOGHISTORY 226
LOGFILE
  GROUP 1 'D:\ORACLE\ORADATA\ORCL\REDO01.LOG'  SIZE 100M,
  GROUP 2 'D:\ORACLE\ORADATA\ORCL\REDO02.LOG'  SIZE 100M,
  GROUP 3 'D:\ORACLE\ORADATA\ORCL\REDO03.LOG'  SIZE 100M
-- STANDBY LOGFILE
DATAFILE
  'D:\ORACLE\ORADATA\ORCL\SYSTEM01.DBF',
  'D:\ORACLE\ORADATA\ORCL\TEMP01.DBF',
  'D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF',
  'D:\ORACLE\ORADATA\ORCL\INDX01.DBF',
  'D:\ORACLE\ORADATA\ORCL\TOOLS01.DBF',
  'D:\ORACLE\ORADATA\ORCL\USERS01.DBF'
CHARACTER SET US7ASCII
;
上面'D:\ORACLE\ORADATA\ORCL\TEMP01.DBF',这一段也不要加,不加载临时表空间文件启动数据库
下面这一段先不要加,  'D:\ORACLE\ORADATA\ORCL\TEMP01.DBF',
# Recovery is required if any of the datafiles are restored backups,
# or if the last shutdown was not normal or immediate.
 RECOVER DATABASE
# Database can now be opened normally.
ALTER DATABASE OPEN;
# Commands to add tempfiles to temporary tablespaces.
# Online tempfiles have complete space information.
# Other tempfiles may require adjustment.
 ALTER TABLESPACE TEMP ADD TEMPFILE 'D:\ORACLE\ORADATA\ORCL\TEMP01.DBF' REUSE;
# End of tempfile additions.

执行完这一步之后我shutdown immediate数据库.
执行@d:\ controlfile.txt
执行完之后alter database open;
执行后报system01.dbf文件又有问题了.
然后执行 recover datafile 1(报错时哪个文件出错执行哪个文件)这次所有的文件都执行了一次.
然后alter database open才能会启动数据库.
然后drop tablespace temp including contents ;删除临时表空间和文件.
然后重新建立临时表空间和文件.
然后将上面的控制文件下面的那一段RECOVER DATABASE加上 ,再重新执行文件.
然后alter databse open;
数据库正常启动,所有数据正常.

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值