因为C盘扩容,把临近的D盘数据备份到E盘,修改了注册表和服务,折腾了很久oracle实例还是无法启动,于是只能卸载重装oracle,从DBF文件恢复数据。
sqlplus / as sysdba
alter database backup controlfile to trace;
执行shutdown immediate命令停止数据库实例。
把目录E:\oracle11g\app\oracle\oradata的实例XE备份
将需要还原的老数据库实例的所有DBF文件复制进去
一般在目录:E:\oracle11g\app\oracle\diag\rdbms\xe\xe\trace
找到原来的log文件,老目录:E:\D_backup\oracle_11g\app\oracle\fast_recovery_area\XE\ONLINELOG
将原来的log文件复制到新的数据库相应的目录,E:\oracle11g\app\oracle\fast_recovery_area\XE\ONLINELOG
根据实际情况修改
CREATE CONTROLFILE REUSE DATABASE "XE" NORESETLOGS NOARCHIVELOG
MAXLOGFILES 16
MAXLOGMEMBERS 3
MAXDATAFILES 100
MAXINSTANCES 8
MAXLOGHISTORY 292
LOGFILE
GROUP 1 'E:\ORACLE11G\APP\ORACLE\FAST_RECOVERY_AREA\XE\ONLINELOG\O1_MF_1_JGJ36F71_.LOG' SIZE 50M BLOCKSIZE 512,
GROUP 2 'E:\ORACLE11G\APP\ORACLE\FAST_RECOVERY_AREA\XE\ONLINELOG\O1_MF_2_JGJ36FF6_.LOG' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
'E:\ORACLE11G\APP\ORACLE\ORADATA\XE\SYSTEM.DBF',
'E:\ORACLE11G\APP\ORACLE\ORADATA\XE\SYSAUX.DBF',
'E:\ORACLE11G\APP\ORACLE\ORADATA\XE\UNDOTBS1.DBF',
'E:\ORACLE11G\APP\ORACLE\ORADATA\XE\USERS.DBF',
'E:\ORACLE11G\APP\ORACLE\ORADATA\XE\SYSTEM2.DBF',
'E:\ORACLE11G\APP\ORACLE\ORADATA\XE\SYSTEM3.DBF',
'E:\ORACLE11G\APP\ORACLE\ORADATA\XE\SYSTEM4.DBF',
'E:\ORACLE11G\APP\ORACLE\ORADATA\XE\SYSTEM5.DBF'
CHARACTER SET AL32UTF8
;
执行startup nomount,启动数据库到nomount状态
执行创建控制文件的SQL语句
恢复数据库,然后开始执行下面的命令
> RECOVER DATABASE
> ALTER DATABASE OPEN;
如果老数据库有TMP.DBF和CONTROL.BDF,可能导致控制文件的SQL执行失败。可以删除这两个DBF,然后修改sql重试。
oracle10G-通过DBF文件恢复数据
作者:爱吃鱼的菲菲