oracle 11g从DBF文件恢复数据

oracle 11g从DBF文件恢复数据

  • oracle 11g从DBF文件恢复数据
    • sqlplus登录数据库
        • 备份控制文件
        • 停止数据库
        • 备份新数据库的DBF(实例名:XE)
        • 找到刚刚备份的trc文件
        • 打开trc后开始构建数据恢复命令
        • 开始恢复
      • 错误排查
      • 参考

oracle 11g从DBF文件恢复数据

因为C盘扩容,把临近的D盘数据备份到E盘,修改了注册表和服务,折腾了很久oracle实例还是无法启动,于是只能卸载重装oracle,从DBF文件恢复数据。

sqlplus登录数据库

sqlplus / as sysdba

备份控制文件

alter database backup controlfile to trace;
在这里插入图片描述

停止数据库

执行shutdown immediate命令停止数据库实例。
oracle 11g从DBF文件恢复数据_第1张图片

备份新数据库的DBF(实例名:XE)

把目录E:\oracle11g\app\oracle\oradata的实例XE备份
将需要还原的老数据库实例的所有DBF文件复制进去
oracle 11g从DBF文件恢复数据_第2张图片

找到刚刚备份的trc文件

一般在目录:E:\oracle11g\app\oracle\diag\rdbms\xe\xe\trace
oracle 11g从DBF文件恢复数据_第3张图片

打开trc后开始构建数据恢复命令

找到原来的log文件,老目录:E:\D_backup\oracle_11g\app\oracle\fast_recovery_area\XE\ONLINELOG
将原来的log文件复制到新的数据库相应的目录,E:\oracle11g\app\oracle\fast_recovery_area\XE\ONLINELOG
oracle 11g从DBF文件恢复数据_第4张图片
根据实际情况修改
oracle 11g从DBF文件恢复数据_第5张图片

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状态
oracle 11g从DBF文件恢复数据_第6张图片
执行创建控制文件的SQL语句

oracle 11g从DBF文件恢复数据_第7张图片

恢复数据库,然后开始执行下面的命令

> RECOVER DATABASE
> ALTER DATABASE OPEN;

在这里插入图片描述
oracle 11g从DBF文件恢复数据_第8张图片

错误排查

如果老数据库有TMP.DBF和CONTROL.BDF,可能导致控制文件的SQL执行失败。可以删除这两个DBF,然后修改sql重试。

参考

oracle10G-通过DBF文件恢复数据
作者:爱吃鱼的菲菲

你可能感兴趣的:(学习总结,oracle,数据库,sql,数据恢复,DBF文件)