• 系统损坏,移植Oracle(9.2.0.1)数据库(无备份数据文件进行恢复)


    A机系统环境:

    软件:Windows2003Server、Oracle9.2.0.1
    硬件:DellSC420(P43.0、2G内存、160GSATA硬盘)

    Oracle 数据量:11G。

    症状:局域网被病毒感染,网络瘫痪;系统损坏。

    解决步骤:
    1、把服务器硬盘取下挂到B(Dell Dimension 4550)机把Oracle数据(data file,control file,redo file,archive logfile,spfile,pwdfile )取出。由于硬盘轻微损坏oracle 一表空间文件(redo file)无法取出,故从重建undotbs表空间文件开始(用软件修复无果只能是重建)。

    2、在B机上面按照A机oracle环境配置安装Oracle 。

    3、首先把B机上面所有服务全部关闭,然后把data file,control file,redo file,archive logfile,spfile,pwdfile 文件覆盖B机文件。
    注:data file,control file,redo file,archive logfile,spfile,pwdfile 文件位置:如果你的oracle系统和system系统表空间安装在一起。那就很好找了,例如:我的oraclehome在D盘,sid是:“ogtlogdb”

    pwdfile、spfile等在:D:\oracle\admin\ogtlogdb
    DataFile、redoFile等在:D:\oracle\oradata\ogtlogdb

    4、在SQLPlus中登陆“sys/sys@ogtlogdb as sysdba”(本人第一使用sql的时候在cmd下面这样是不成功的,所以先在命令行中敲入“SQLPlus”再敲入“sys/sys@ogtlogdb as sysdba”)。

    5、关闭数据库:sql>Shutdown

    6、重起数据库,记住启动时加载出错的文件:SQL >Startup force
    屏幕如下:
      Total System Global Area  126950220 bytes
      Fixed Size                   453452 bytes
      Variable Size             109051904 bytes
      Database Buffers           16777216 bytes
      Redo Buffers                 667648 bytes
      数据库装载完毕。
      ORA-01157: 无法标识/锁定数据文件 9 - 请参阅 DBWR 跟踪文件
      ORA-01110: 数据文件 9: 'D:\ORACLE\ORADATA\XINAHE\USERS01.DBF'

    7、把出错和丢失文件全部OffLine drop
    sql>alter database datafile 'D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF' offline drop;
    如果此处出现其他数据文件错误就和执行上面语句把数据文件offline drop掉。

    8、sql>alter database open;
    屏幕返回:Database altered;
    如果还有数据文件提示错误反复执行第五步。
    直到执行本步骤屏幕返回Database altered为止。

    9、重建Undotbs表空间:Create undo tablespace undotbs datafile 'C:\ORACLE\ORADATA\ORCL\UNDOTBS02.DBF' size 100M;
    屏幕返回:Tablespace created.

    10、修复第五步中出现错误的数据文件。
    sql>recover automatic datafile 1;
    屏幕返回:完成介质恢复。
    sql>recover automatic datafile 19;
    屏幕返回:完成介质恢复。
    把所有offline drop 掉的数据文件用上面语句恢复。

    11、把offline drop 掉的文件重新online:
    sql>alter database datafile 'D:\ORACLE\ORADATA\ORCL\UNDOTBS01.DBF' online;
    sql>alter database datafile 'D:\ORACLE\ORADATA\ORCL\UNDOTBS019.DBF' online;

    12、alter database open;
    屏幕返回:database opened.

    13、重新启动机器(把oracle 服务设置为自动启动)。




    备注:有时候Oracle停电之后出现的SYSTEM01.DBF文件损坏等问题,可以通过以上方法恢复,如果实在恢复表,或者是非归档模式,可以使用:
    Oracle系统的隐含命令:
     alter system set "_allow_resetlogs_corruption"=true scope=spfile;

    将UNDO日志改为手动模式:
    alter system set undo_management='manual' scope=spfile;

    以上设置后过几分钟后,shutdown一下,再启动可以临时性的读出数据。

  • 相关阅读:
    English Training Material
    SingleThreadModel is deprecated in Servlet API version 2.4
    What is the difference Apache (Http Server) and Tomcat (Servlet Container)
    Add a stylesheet link programmatically in ASP.NET
    Detail in Response.redirect and Server.transfer in ASP.NET
    @font-face usage
    实习面试总结(只写了昨天腾讯的面试和拿到offer的一个小公司, 有空再把前面的补上吧)
    redis-cli启动问题
    关于结构体内存对齐
    memcpy 和 memmove
  • 原文地址:https://www.cnblogs.com/mohai/p/308123.html
Copyright © 2020-2023  润新知