zoukankan      html  css  js  c++  java
  • RESTORE DATAFILE TO A NEW LOCATION

        如果存储datafile的磁盘坏了,这个时候就可能将数据文件还原到别的磁盘,然后进行恢复。

    恢复之前,首先检查是否设置了db_create_file_dest,如果设置了这个参数,那么rman默认的会将datafile恢复到db_create_file_dest指定的目录中,而这个时候由于db_create_file_dest指定的目录所在的磁盘损坏,可能导致恢复不成功。

        这个时候我们可以将db_create_file_dest参数去掉然后使用如下示例脚本将数据文件恢复到一个新目录

    run
    {
    set newname for datafile 1 to 'C:/oracle/product/10.2.0/oradata/ROBINSON/DATAFILE2/O1_MF_SYSTEM_5H1XWSC9_.DBF';  ----如果没有将db_create_file_dest参数禁用,这语句无效
    set newname for datafile 2 to 'C:/oracle/product/10.2.0/oradata/ROBINSON/DATAFILE2/O1_MF_UNDOTBS1_5H1XWSNJ_.DBF';
    set newname for datafile 3 to 'C:/oracle/product/10.2.0/oradata/ROBINSON/DATAFILE2/O1_MF_SYSAUX_5H1XWSF1_.DBF';
    set newname for datafile 4 to 'C:/oracle/product/10.2.0/oradata/ROBINSON/DATAFILE2/O1_MF_USERS_5H1XWSOD_.DBF';
    set newname for datafile 5 to 'C:/oracle/product/10.2.0/oradata/ROBINSON/DATAFILE2/O1_MF_ROBINSON_5H248YWC_.DBF';
    restore database;
    switch datafile all;
    recover database;
    alter database open;
    }

      或者更改db_create_file_dest参数,将其指定到一个新磁盘目录中,然后使用如下示例脚本恢复

    run
    {
    set newname for datafile 1 to new;   ---通过使用new关键字,rman会将datafile 1还原到db_create_file_dest指定目录
    set newname for datafile 2 to new;
    set newname for datafile 3 to new;
    set newname for datafile 4 to new;
    set newname for datafile 5 to new;
    restore database;
    switch datafile all;
    recover database;
    alter database open;
    }

    下面是测试步骤

    SQL> select name from v$datafile;  ---数据文件存放在C:/ORACLE/PRODUCT/10.2./STORAGE/ROBINSON/DATAFILE/目录中

    NAME
    --------------------------------------------------------------------------------
    C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H26LJMP_.DBF
    C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H26LJQB_.DBF
    C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H26LJNY_.DBF
    C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_USERS_5H26LJV1_.DBF
    C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H26LJPY_.DBF

    SQL> show parameter db_create_file_dest

    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    db_create_file_dest                  string      C:/oracle/product/10.2.0/storage 

    RMAN> shutdown immediate;

    数据库已关闭
    数据库已卸载
    Oracle 实例已关闭

    RMAN> startup mount;

    数据库已经启动

    RMAN> run
    2> {
    3> set newname for datafile 1 to 'C:/oracle/product/10.2.0/oradata/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H1XWSC9_.DBF';
    4> set newname for datafile 2 to 'C:/oracle/product/10.2.0/oradata/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H1XWSNJ_.DBF';
    5> set newname for datafile 3 to 'C:/oracle/product/10.2.0/oradata/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H1XWSF1_.DBF';
    6> set newname for datafile 4 to 'C:/oracle/product/10.2.0/oradata/ROBINSON/DATAFILE/O1_MF_USERS_5H1XWSOD_.DBF';
    7> set newname for datafile 5 to 'C:/oracle/product/10.2.0/oradata/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H248YWC_.DBF';
    8> restore database;
    9> switch datafile all;
    10> recover database;
    11> alter database open;
    12> }

    正在执行命令: SET NEWNAME
    使用目标数据库控制文件替代恢复目录

    正在执行命令: SET NEWNAME

    正在执行命令: SET NEWNAME

    正在执行命令: SET NEWNAME

    正在执行命令: SET NEWNAME

    启动 restore 于 04-11月-09
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: sid=155 devtype=DISK

    通道 ORA_DISK_1: 正在恢复数据文件00001
    输入数据文件副本 recid=56 stamp=702050992 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H267
    数据文件 00001 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H1XWSC9_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00002
    输入数据文件副本 recid=57 stamp=702050992 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H2
    数据文件 00002 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H1XWSNJ_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00003
    输入数据文件副本 recid=58 stamp=702050993 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H267
    数据文件 00003 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H1XWSF1_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00004
    输入数据文件副本 recid=59 stamp=702050993 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_5H2678
    数据文件 00004 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_5H1XWSOD_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00005
    输入数据文件副本 recid=60 stamp=702050993 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H2
    数据文件 00005 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H248YWC_.DBF

    故障转移到上一个备份

    通道 ORA_DISK_1: 正在恢复数据文件00001
    输入数据文件副本 recid=21 stamp=702049822 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H254
    数据文件 00001 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H1XWSC9_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00002
    输入数据文件副本 recid=22 stamp=702049822 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H2
    数据文件 00002 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H1XWSNJ_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00003
    输入数据文件副本 recid=23 stamp=702049822 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H254
    数据文件 00003 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H1XWSF1_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00004
    输入数据文件副本 recid=24 stamp=702049823 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_5H2542
    数据文件 00004 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_5H1XWSOD_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00005
    输入数据文件副本 recid=25 stamp=702049823 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H2
    数据文件 00005 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H248YWC_.DBF

    故障转移到上一个备份

    通道 ORA_DISK_1: 正在恢复数据文件00001
    输入数据文件副本 recid=41 stamp=702050592 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE2/O1_MF_SYSTEM_5H1X
    数据文件 00001 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H1XWSC9_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00002
    输入数据文件副本 recid=42 stamp=702050592 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE2/O1_MF_UNDOTBS1_5H
    数据文件 00002 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H1XWSNJ_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00003
    输入数据文件副本 recid=43 stamp=702050592 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE2/O1_MF_SYSAUX_5H1X
    数据文件 00003 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H1XWSF1_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00004
    输入数据文件副本 recid=44 stamp=702050593 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE2/O1_MF_USERS_5H1XW
    数据文件 00004 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_5H1XWSOD_.DBF

    通道 ORA_DISK_1: 正在恢复数据文件00005
    输入数据文件副本 recid=45 stamp=702050593 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE2/O1_MF_ROBINSON_5H
    数据文件 00005 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H248YWC_.DBF

    故障转移到上一个备份

    通道 ORA_DISK_1: 正在开始恢复数据文件备份集
    通道 ORA_DISK_1: 正在指定从备份集恢复的数据文件
    正将数据文件00001恢复到C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H1XWSC9_.DBF
    正将数据文件00002恢复到C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H1XWSNJ_.DBF
    正将数据文件00003恢复到C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H1XWSF1_.DBF
    正将数据文件00004恢复到C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_5H1XWSOD_.DBF
    正将数据文件00005恢复到C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H248YWC_.DBF
    通道 ORA_DISK_1: 正在读取备份段 C:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROBINSON/BACKUPSET/2009_11_04/O1_MF_NNNDF
    通道 ORA_DISK_1: 已恢复备份段 1
    段句柄 = C:/ORACLE/PRODUCT/10.2.0/FLASH_RECOVERY_AREA/ROBINSON/BACKUPSET/2009_11_04/O1_MF_NNNDF_ROBINSON_5H24D5QY_.BKP
    通道 ORA_DISK_1: 恢复完成, 用时: 00:01:35
    完成 restore 于 04-11月-09

    数据文件 1 已转换成数据文件副本
    输入数据文件副本 recid=66 stamp=702052443 文件名=C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H27Z
    数据文件 2 已转换成数据文件副本
    输入数据文件副本 recid=67 stamp=702052443 文件名=C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H2
    数据文件 3 已转换成数据文件副本
    输入数据文件副本 recid=68 stamp=702052443 文件名=C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H27Z
    数据文件 4 已转换成数据文件副本
    输入数据文件副本 recid=69 stamp=702052443 文件名=C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_USERS_5H27ZW
    数据文件 5 已转换成数据文件副本
    输入数据文件副本 recid=70 stamp=702052443 文件名=C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H2

    启动 recover 于 04-11月-09
    使用通道 ORA_DISK_1

    正在开始介质的恢复
    介质恢复完成, 用时: 00:00:05

    完成 recover 于 04-11月-09

    数据库已打开

    SQL> select name from v$datafile;--可以看到由于没有更改db_create_file_dest,无法将datafile还原到我们指定的目录

    NAME
    --------------------------------------------------------------------------------
    C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H27ZW3T_.DBF
    C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H27ZW7J_.DBF
    C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H27ZW51_.DBF
    C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_USERS_5H27ZWCP_.DBF
    C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H27ZW72_.DBF

    SQL> alter system set db_create_file_dest='C:/oracle/product/10.2.0/oradata';

    系统已更改。

    RMAN> shutdown immediate;

    数据库已关闭
    数据库已卸载
    Oracle 实例已关闭

    RMAN> startup mount;

    已连接到目标数据库 (未启动)
    Oracle 实例已启动
    数据库已装载

    系统全局区域总计     612368384 字节

    Fixed Size                     1292036 字节
    Variable Size                213911804 字节
    Database Buffers             390070272 字节
    Redo Buffers                   7094272 字节

    RMAN> run
    2> {
    3> set newname for datafile 1 to new;
    4> set newname for datafile 2 to new;
    5> set newname for datafile 3 to new;
    6> set newname for datafile 4 to new;
    7> set newname for datafile 5 to new;
    8> restore database;
    9> switch datafile all;
    10> recover database;
    11> alter database open;
    12> }

    正在执行命令: SET NEWNAME

    正在执行命令: SET NEWNAME

    正在执行命令: SET NEWNAME

    正在执行命令: SET NEWNAME

    正在执行命令: SET NEWNAME

    启动 restore 于 04-11月-09
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: sid=156 devtype=DISK

    通道 ORA_DISK_1: 正在恢复数据文件00001
    输入数据文件副本 recid=71 stamp=702052444 文件名=C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H26LJMP_.DBF
    数据文件 00001 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_%U_.DBF
    通道 ORA_DISK_1: 已复制数据文件 00001 的数据文件副本
    输出文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H28M6WT_.DBF recid=76 stamp=702053000
    通道 ORA_DISK_1: 正在恢复数据文件00002
    输入数据文件副本 recid=72 stamp=702052444 文件名=C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H26LJQB_.DBF
    数据文件 00002 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_%U_.DBF
    通道 ORA_DISK_1: 已复制数据文件 00002 的数据文件副本
    输出文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H28NB1X_.DBF recid=77 stamp=702053006
    通道 ORA_DISK_1: 正在恢复数据文件00003
    输入数据文件副本 recid=73 stamp=702052444 文件名=C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H26LJNY_.DBF
    数据文件 00003 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_%U_.DBF
    通道 ORA_DISK_1: 已复制数据文件 00003 的数据文件副本
    输出文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H28NK85_.DBF recid=78 stamp=702053047
    通道 ORA_DISK_1: 正在恢复数据文件00004
    输入数据文件副本 recid=74 stamp=702052444 文件名=C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_USERS_5H26LJV1_.DBF
    数据文件 00004 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_%U_.DBF
    通道 ORA_DISK_1: 已复制数据文件 00004 的数据文件副本
    输出文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_5H28PKVW_.DBF recid=79 stamp=702053074
    通道 ORA_DISK_1: 正在恢复数据文件00005
    输入数据文件副本 recid=75 stamp=702052444 文件名=C:/ORACLE/PRODUCT/10.2.0/STORAGE/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H26LJPY_.DBF
    数据文件 00005 的恢复目标: C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_%U_.DBF
    通道 ORA_DISK_1: 已复制数据文件 00005 的数据文件副本
    输出文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H28PM03_.DBF recid=80 stamp=702053090
    完成 restore 于 04-11月-09

    数据文件 1 已转换成数据文件副本
    输入数据文件副本 recid=81 stamp=702053100 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H28M6WT_.DBF
    数据文件 2 已转换成数据文件副本
    输入数据文件副本 recid=82 stamp=702053100 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H28NB1X_.DBF
    数据文件 3 已转换成数据文件副本
    输入数据文件副本 recid=83 stamp=702053100 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H28NK85_.DBF
    数据文件 4 已转换成数据文件副本
    输入数据文件副本 recid=84 stamp=702053101 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_5H28PKVW_.DBF
    数据文件 5 已转换成数据文件副本
    输入数据文件副本 recid=85 stamp=702053101 文件名=C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H28PM03_.DBF

    启动 recover 于 04-11月-09
    使用通道 ORA_DISK_1

    正在开始介质的恢复
    介质恢复完成, 用时: 00:00:04

    完成 recover 于 04-11月-09
    数据库已打开

    SQL> select name from v$datafile; ---可以看到数据文件已经resotore到了另外一个目录

    NAME
    --------------------------------------------------------------------------------
    C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSTEM_5H28M6WT_.DBF
    C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_UNDOTBS1_5H28NB1X_.DBF
    C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_SYSAUX_5H28NK85_.DBF
    C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_USERS_5H28PKVW_.DBF
    C:/ORACLE/PRODUCT/10.2.0/ORADATA/ROBINSON/DATAFILE/O1_MF_ROBINSON_5H28PM03_.DBF

    由于篇幅太长,另外的测试过程就不贴了。

  • 相关阅读:
    python中实现mysql连接池
    flask简单的路由分发
    用进程池创建子进程
    用类创建子进程
    用函数创建子进程
    fiddler抓包工具使用
    requests库的小技巧
    requests库的get请求,带有cookies
    requests库的post请求
    Android下Json数据解析
  • 原文地址:https://www.cnblogs.com/hehe520/p/6330687.html
Copyright © 2011-2022 走看看