论坛首页 综合技术论坛

数据库临时表空间出错问题解决

浏览 3500 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-01-22  

2009-01-21绿园区中医院数据库不能启动,
提示错误码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;
数据库正常启动,所有数据正常.

 

论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics