zoukankan      html  css  js  c++  java
  • 【转载】只有.dbf数据文件进行数据库恢复

    此篇文章为转载,来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26015009/viewspace-714742/
    个人mark下,在之后dbf的情况下,如何不完整恢复,拿出数据。

    由于数据库服务器崩溃,造成了无法进入系统进行数据库备份,只能把oracle相关文件拷贝出来。对于拷贝出来的文件在测试机上进行一次不完全恢复,具体流程如下所示:
    1、安装oracle 10g服务端并创建一个与要进行恢复的数据库相同名称的实例(db_name,sid,字符集一样,因为在创建控制文件时,会判断你要恢复的dbf文件中文件头信息中的数据库名是否与所在的实例名是否一样)
    2、以sysdba身份进行备份控件文件到udmp目录的trace文件(语句:alter database backup controlfile to trace)
    3、Shutdown immediate停止数据库,备份当前~oracleproduct10.2.0oradata目录中的文件,接着删除这些文件并把需恢复的数据库的所有.dbf文件拷到此目录下。其中 system01.dbf,sysaux01.dbf和存储真实数据的.dbf文件是必要的
    (只要DBF就可以了,日志和控制文件不要)。
    4、以sysdba进入并执行startup nomount。把数据库启动到nomount状态。
    5、从第2步备份出来trace文件中拷贝CREATE CONTROLFILE部分语句来重建控制文件。此处应根据实际情况增删表空间文件记录,如以下黑体部分则为新增记录。
    CREATE CONTROLFILE set Database ocp Resetlogs
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
    LOGFILE
    GROUP 1 'C:oracleproduct10.2.0oradataocpRED001.LOG'SIZE 50M,
    GROUP 2 'C:oracleproduct10.2.0oradataocpRED002.LOG'SIZE 50M,
    GROUP 3 'C:oracleproduct10.2.0oradataocpRED003.LOG'SIZE 50M
    DATAFILE
    'D:oradataSYSTEM01.DBF',--要恢复的数据所在的dbf文件
    'D:oradataUNDOTBS01.DBF',--要恢复的数据所在的dbf文件
    'D:oradataSYSAUX01.DBF',--要恢复的数据所在的dbf文件
    'D:oradataUSERS01.DBF',--要恢复的数据所在的dbf文件
    'D:oradataEXAMPLE01.DBF',--要恢复的数据所在的dbf文件
    'D:oradataHYGEIA01.DBF',--要恢复的数据所在的dbf文件
    'D:oradataHYGEIA02.DBF',--要恢复的数据所在的dbf文件
    'D:oradataHYGEIA03.DBF'--要恢复的数据所在的dbf文件
    CHARACTER SET ZHS16GBK
    6 alter database open resetlogs;
    7 重新创建临时表空间
    8 查看恢复后结果

    第二种情况(其实要恢复数据库只要system01.dbf,sysaux01.dbf和存储真实数据的.dbf文件)
    1、安装oracle 10g服务端并创建一个与要进行恢复的数据库相同名称的实例(db_name,sid,字符集一样,因为在创建控制文件时,会判断你要恢复的dbf文件中文件头信息中的数据库名是否与所在的实例名是否一样)
    2、以sysdba身份进行备份控件文件到udmp目录的trace文件(语句:alter database backup controlfile to trace)
    3、Shutdown immediate停止数据库,备份当前~oracleproduct10.2.0oradata目录中的文件,接着删除这些文件并把需恢复的数据库的所有.dbf文件拷到此目录下。其中 system01.dbf,sysaux01.dbf和存储真实数据的.dbf文件是必要的
    (只要DBF就可以了,日志和控制文件不要)。
    4、以sysdba进入并执行startup nomount。把数据库启动到nomount状态。
    5、从第2步备份出来trace文件中拷贝CREATE CONTROLFILE部分语句来重建控制文件。此处应根据实际情况增删表空间文件记录,如以下黑体部分则为新增记录。
    CREATE CONTROLFILE set Database ocp resetlogs
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
    LOGFILE
    GROUP 1 'D:oracleproduct10.2.0oradataocpRED001.LOG'SIZE 50M,
    GROUP 2 'D:oracleproduct10.2.0oradataocpRED002.LOG'SIZE 50M,
    GROUP 3 'D:oracleproduct10.2.0oradataocpRED003.LOG'SIZE 50M
    DATAFILE
    'D:oracleproduct10.2.0oradataocpSYSTEM01.DBF',--损坏的数据库的system表空间的数据文件
    'D:oracleproduct10.2.0oradataocpSYSAUX01.DBF',--损坏的数据库的sysaux表空间的数据文件
    'D:oracleproduct10.2.0oradataocpHYGEIA01.DBF',--要恢复的数据所在的dbf文件
    'D:oracleproduct10.2.0oradataocpHYGEIA02.DBF', --要恢复的数据所在的dbf文件
    'D:oracleproduct10.2.0oradataocpHYGEIA03.DBF' --要恢复的数据所在的dbf文件
    CHARACTER SET ZHS16GBK

    6、Shutdown immediate
    7、在adminpfile目录下的init.ora里加入隐含参数:
    _allow_resetlogs_corruption=true
    _allow_terminal_recovery_corruption=true
    undo_tablespace='SYSTEM'
    undo_management='MANUAL'
    8、执行startup pfile='D:oracleproduct10.2.0adminorclpfileinit.ora(文件名和目录按照实际情况而定)' mount force;
    9、Recover database recover database until cancel进行介质恢复。
    10、 Alter database open resetlogs打开数据库可能不成功:此处出现了ORA-03113 " ORA-03113: 通信通道的文件结尾"的错误提示。
    11、 重新启动数据库(startup) ,结果出现以下错误提示:
    ora-01113:文件1需要介质恢复
    ora-01110:数据文件1:'D:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF'
    12、 从新恢复表空间文件recover datafile D:ORACLEPRODUCT10.2.0ORADATAORCLSYSTEM01.DBF(其它表空间文件可能也需要恢复)
    13、 alter database open; 数据库已更新
    14.重新创建UNDOTBS1表空间
    create undo tablespace undotbs1 DATAFILE
    'D:oracleproduct10.2.0oradataorclundotbs01.dbf' SIZE 200M
    15、Shutdown immediate
    16、在adminpfile目录下的init.ora里加入隐含参数:
    删除_allow_resetlogs_corruption=true
    删除_allow_terminal_recovery_corruption=true
    undo_tablespace='UNDOTBS1'
    undo_management='AUTO'
    17.startup pfile='D:oracleproduct10.2.0adminorclpfileinit.ora
    18、 full export备份数据库。
    19 重新创建临时表空间
    20 查看恢复后结果

  • 相关阅读:
    SecureRandom
    一个不错的架构图:基于SpringCloud的微服务项目
    Android 增量更新完全解析 是增量不是热修复
    Android热修复方案比较
    Android Activity作为dialog对话框的使用详细介绍
    Android 微信分享不出去?四步搞定!
    Android:用签名打包后微信分享失效
    Android 根据QQ号跳转到QQ聊天界面
    Android fragment-findFragmentByTag 始终返回 null
    Android RecyclerView遇到notifyDataSetChanged无效时的解决方案
  • 原文地址:https://www.cnblogs.com/zhangshengdong/p/13826668.html
Copyright © 2011-2022 走看看