日期:2014-05-17  浏览次数:20851 次

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

------解决方案--------------------
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打开数据库。这种方式的后果是之前未写入数据库的数据会丢失



;
------解决方案--------------------
冷恢复即可
------解决方案--------------------
参考这个帖子:
http://topic.csdn.net/u/20080409/18/0677f065-faf4-467f-a102-495997220e81.html