前几天重装系统,忘了备份数据库了。现在只剩下一些.dbf的数据文件了,是完整的。请问有什么办法能够恢复原来的表结构。

解决方案 »

  1.   

    redo log在吗?之前数据库是归档模式还是非归档?如果非归档,那么就不幸了。如果是归档模式,先用其他数据库执行backup controlfile to trace,然后去udump文件夹下把trace文件打开,里面有一段是重新生成控制文件的脚本,脚本类似于
    CREATE CONTROLFILE REUSE DATABASE "TEST" RESETLOGS  ARCHIVELOG
        MAXLOGFILES 16
        MAXLOGMEMBERS 3
        MAXDATAFILES 100
        MAXINSTANCES 8
        MAXLOGHISTORY 292
    LOGFILE
      GROUP 1 '/oracle/oradata/test/redo01.log'  SIZE 50M,
      GROUP 2 '/oracle/oradata/test/redo02.log'  SIZE 50M,
      GROUP 3 '/oracle/oradata/test/redo03.log'  SIZE 50M
    -- STANDBY LOGFILE
    DATAFILE
      '/oracle/oradata/test/system01.dbf',
      '/oracle/oradata/test/undotbs01.dbf',
      '/oracle/oradata/test/sysaux01.dbf',
      '/oracle/oradata/test/users01.dbf',
      '/oracle/oradata/test/test01.dbf'
    CHARACTER SET WE8ISO8859P1复制脚本后根据你DBF实际存放的路径进行修改,然后建一个空数据库,把控制文件脚本运行一下,然后把数据库打开到mount阶段,然后alter database open resetlogs打开数据库。这种方式的后果是之前未写入数据库的数据会丢失;
      

  2.   

    参考这个帖子:
    http://topic.csdn.net/u/20080409/18/0677f065-faf4-467f-a102-495997220e81.html
      

  3.   

     耽误大家时间了,我直接在原来的目录重新安装了ORACLE,覆盖原来的目录,但是我盘符从F变成E了,我又rename了所有DATAFILE redo 以及spfile,现在可以了。谢谢