• 由 dbf 表空间文件恢复 Oracle 数据


    一、需求分析

    服务器A中的数据库实例被删除,幸好dbf文件还在,遂准备由dbf文件恢复数据到服务器B续命,待恢复的数据库实例名为 orcl1

    服务器B中的数据库为新安装,已经初始化好 orcl 实例,首先对比两个实例的dbf文件

    ↑ 服务器A中待恢复的 orcl1 实例dbf文件 ↑

    ↑ 服务器B中的 orcl 实例dbf文件 ↑ 

    对比可知新增的dbf文件是PORTAL.DBF、SDE.DBF、WZYZT.DBF,猜测各自对应三个同名用户

    思路就出来了:

    1、新建orcl1实例

    2、新增三个表空间文件

    3、新增三个同名用户,分别授权

    4、恢复数据查看校验

    二、创建orcl1实例

    1、打开 “开始 - 所有程序 - Oracle - OraDb11g_home1 - 配置和移植工具 - Database Configuration Assistant”

    步骤 1:默认

    步骤 2:默认

    步骤 3:全局数据库名:orcl1,SID:orcl1

    步骤 4:默认

    步骤 5 填写管理员账户的密码

    后面全部默认

    确认开始创建orcl1实例

     done,使用 PL/SQL 进行连接测试

    三、恢复dbf

    1、使用 PL/SQL 连接到orcl1实例,创建表空间及用户,对用户授权

    create tablespace portal datafile 'C:appAdministratororadataorcl1portal.dbf' size 1024M;
    create tablespace sde datafile 'C:appAdministratororadataorcl1sde.dbf' size 1024M;
    create tablespace wzyzt datafile 'C:appAdministratororadataorcl1wzyzt.dbf' size 1024M;
    
    create user portal identified by portal default tablespace portal;
    create user sde identified by sde default tablespace sde;
    create user wzyzt identified by wzyzt default tablespace wzyzt;
    
    grant connect,dba,resource to portal;
    grant connect,dba,resource to sde;
    grant connect,dba,resource to wzyzt;

    2、使用 sqlplus 以 sysdba 身份登录,对控制文件进行备份;

    sqlplus /nolog(此处不能加分号,否则黑屏窗口会一闪而过)

    conn /as sysdba 登录

    执行 alter database backup controlfile to trace; 备份控件文件到trace文件 

    找到oracle的安装目录,如:C:appAdministrator,按修改时间降序,找到最近的trace文件(orcl1_ora_xxx.trc)备份好(建议使用Everything)

    3、shutdown immediate 停止数据库实例

    4、备份C:appAdministratororadata目录下的该实例文件夹(例如:orcl),接着将该实例文件夹删除,必须是全部删除,在oradata文件夹下新建orcl1文件夹把需恢复的dbf拷贝到orcl1目录下。

    5、执行 startup nomount,把数据库启动到nomount状态

    6、从第2步备份出来trace文件中拷贝CREATE CONTROLFILE部分语句来重建控制文件:

    红框 1 改为ARCHIVELOG

    红框 2 因为前面是根据恢复的dbf创建了对应表空间,所以这里不用改,但还是需要确认一下

    执行修改后的sql

    CREATE CONTROLFILE REUSE DATABASE "ORCL1" NORESETLOGS  ARCHIVELOG
        MAXLOGFILES 16
        MAXLOGMEMBERS 3
        MAXDATAFILES 100
        MAXINSTANCES 8
        MAXLOGHISTORY 292
    LOGFILE
      GROUP 1 'C:APPADMINISTRATORORADATAORCL1REDO01.LOG'  SIZE 50M BLOCKSIZE 512,
      GROUP 2 'C:APPADMINISTRATORORADATAORCL1REDO02.LOG'  SIZE 50M BLOCKSIZE 512,
      GROUP 3 'C:APPADMINISTRATORORADATAORCL1REDO03.LOG'  SIZE 50M BLOCKSIZE 512
    -- STANDBY LOGFILE
    DATAFILE
      'C:APPADMINISTRATORORADATAORCL1SYSTEM01.DBF',
      'C:APPADMINISTRATORORADATAORCL1SYSAUX01.DBF',
      'C:APPADMINISTRATORORADATAORCL1UNDOTBS01.DBF',
      'C:APPADMINISTRATORORADATAORCL1USERS01.DBF',
      'C:APPADMINISTRATORORADATAORCL1PORTAL.DBF',
      'C:APPADMINISTRATORORADATAORCL1SDE.DBF',
      'C:APPADMINISTRATORORADATAORCL1WZYZT.DBF'
    CHARACTER SET ZHS16GBK
    ;

    7、执行 recover database,这两个报错直接无视

    8、执行 alter database open;

    恢复完成,登录数据库进行验证

    参考链接:http://blog.sina.com.cn/s/blog_a59b6d310102vat0.html

  • 相关阅读:
    Amoeba for MySQL读写分离配置
    基于amoeba实现mysql数据库的读写分离/负载均衡
    Amoeba实现mysql主从读写分离
    OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
    openerp用wizard导入excel数据
    OpenERP在product中增加外部网络链接图片
    OpenERP7.0安装后提示“not supported" ,如何去掉此提示
    windows命令行设置IP与DNS
    ubuntu开机自动启动xampp/lampp的两种方法
    [Python]网络爬虫(五):urllib2的使用细节与抓站技巧
  • 原文地址:https://www.cnblogs.com/nihaorz/p/15239489.html
Copyright © 2020-2023  润新知