zoukankan      html  css  js  c++  java
  • RMAN数据库恢复之控制文件和参数文件恢复

    一、控制文件的恢复
    1、查询控制文件的路径

    SQL> SELECT * FROM V$CONTROLFILE;
    STATUS NAME IS_RECOVERY_DEST_FILE BLOCK_SIZE FILE_SIZE_BLKS
    ------- -------------------------------------------------------------- --------------------- ---------- --------------
    D:APPADMINISTRATORORADATAORCLCONTROL01.CTL NO 16384 594
    D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLCONTROL02.CTL NO 16384 594

    2、删除控制文件

    SQL> shutdown immediate;
    数据库已经关闭。
    已经卸载数据库。
    ORACLE 例程已经关闭。
    SQL> host del D:APPADMINISTRATORORADATAORCLCONTROL01.CTL
    
    SQL> startup
    ORACLE 例程已经启动。
    
    Total System Global Area 647204864 bytes
    Fixed Size 2178536 bytes
    Variable Size 478151192 bytes
    Database Buffers 159383552 bytes
    Redo Buffers 7491584 bytes
    ORA-00205: ……
    
    SQL> shutdown immediate;
    ORA-01507: 
    ORACLE 例程已经关闭。

    3、启动数据库到NOMOUNT状态

    RMAN> SET DBID=1392118573;
    RMAN> startup nomount;
    ORACLE 例程已经启动。
    
    Total System Global Area 647204864 bytes
    Fixed Size 2178536 bytes
    Variable Size 478151192 bytes
    Database Buffers 159383552 bytes
    Redo Buffers 7491584 bytes

    4、RESTORE控制文件

    RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP; --控制文件会被恢复到初始化参数:CONTROL_FILES指定的路径下。
    
    启动 restore21-12月-14
    使用目标数据库控制文件替代恢复目录
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: SID=10 设备类型=DISK
    
    恢复区目标: D:appAdministratorflash_recovery_area
    用于搜索的数据库名 (或数据库的唯一名称): ORCL
    通道 ORA_DISK_1: 在恢复区中找到 AUTOBACKUP D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLAUTOBACKUP2014_12_21O1_MF_S_866919295_B9F9R0BL_.BKP
    由于未设置 DBID 而未尝试使用格式 "%F" 搜索 AUTOBACKUP
    通道 ORA_DISK_1: 正在从 AUTOBACKUP D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLAUTOBACKUP2014_12_21O1_MF_S_866919295_B9F9R0BL_.BKP 还原控制文件
    通道 ORA_DISK_1: 从 AUTOBACKUP 还原控制文件已完成
    输出文件名=D:APPADMINISTRATORORADATAORCLCONTROL01.CTL
    输出文件名=D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLCONTROL02.CTL
    完成 restore21-12月-14

    5、MOUNT-RECOVER-OPEN数据库

    RMAN> ALTER DATABASE MOUNT;
    
    数据库已装载
    释放的通道: ORA_DISK_1
    
    RMAN> RECOVER DATABASE;
    
    启动 recover 于 21-12月-14
    启动 implicit crosscheck backup21-12月-14
    分配的通道: ORA_DISK_1
    通道 ORA_DISK_1: SID=10 设备类型=DISK
    已交叉检验的 7 对象
    完成 implicit crosscheck backup21-12月-14
    
    启动 implicit crosscheck copy 于 21-12月-14
    使用通道 ORA_DISK_1
    完成 implicit crosscheck copy 于 21-12月-14
    
    搜索恢复区中的所有文件
    正在编制文件目录...
    目录编制完毕
    
    已列入目录的文件的列表
    =======================
    文件名: D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLAUTOBACKUP2014_12_21O1_MF_S_866919295_B9F9R0BL_.BKP
    
    使用通道 ORA_DISK_1
    
    正在开始介质的恢复
    
    线程 1 序列 22 的归档日志已作为文件 D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLARCHIVELOG2014_12_21O1_MF_1_22_B9DR7DS3_.ARC 存
    线程 1 序列 23 的归档日志已作为文件 D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLARCHIVELOG2014_12_21O1_MF_1_23_B9DZJWGJ_.ARC 存
    线程 1 序列 24 的归档日志已作为文件 D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLARCHIVELOG2014_12_21O1_MF_1_24_B9F6WMP8_.ARC 存
    线程 1 序列 25 的归档日志已作为文件 D:APPADMINISTRATORORADATAORCLREDO03.LOG 存在于磁盘上
    归档日志文件名=D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLARCHIVELOG2014_12_21O1_MF_1_22_B9DR7DS3_.ARC 线程=1 序列=22
    归档日志文件名=D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLARCHIVELOG2014_12_21O1_MF_1_23_B9DZJWGJ_.ARC 线程=1 序列=23
    归档日志文件名=D:APPADMINISTRATORFLASH_RECOVERY_AREAORCLARCHIVELOG2014_12_21O1_MF_1_24_B9F6WMP8_.ARC 线程=1 序列=24
    归档日志文件名=D:APPADMINISTRATORORADATAORCLREDO03.LOG 线程=1 序列=25
    介质恢复完成, 用时: 00:00:04
    完成 recover 于 21-12月-14
    
    RMAN> ALTER DATABASE OPEN RESETLOGS;
    数据库已打开

    ----------------------------------------------------------------
    说明:
    1、由于控制文件丢失,只能启动数据库到NOMOUNT状态。不过在启动数据库之前,必须首先通过SET设定DBID。关于DBID的查询可通过V$DATABASE视图查询;或者是RMAN的备份日志;自动备份的文件名中包含有DBID;RMAN连接到目标数据库时也会显示DBID。
    2、如果是在NOCATALOG模式下,RMAN创建的备份信息都将保存在目标数据库的控制文件中,所以一旦控制文件丢失,不仅目标数据库崩溃,连RMAN的备份信息也全丢失。如果有备份的控制文件,还可进行恢复,没有的话,只能通过写脚本的方式重写控制文件。
    3、由于是通过备份的控制文件恢复,因此打开时必须指定RESETLOGS;
    4、如果在执行备份之前修,修改过自动备份的默认路径,那么在执行RESTORE CONTROLFILE FROM AUTOBACKUP会提示找不到备份文件。此时需要重新设置一下自动备份路径,或者手动复制自动备份的控制文件到当前的默认的路径下。
    在NOCATALOG模式下修改控制文件自动备份的保存路径时,使用SET命令:
    RMAN> SET AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '之前修改过的路径';
    然后执行RESTORE命令,从自动备份中恢复控制文件即可。
    RMAN> RESTORE CONTROLFILE FROM AUTOBACKUP;
    5、从指定备份集中恢复控制文件
    RMAN> RESTORE CONTROLFILE FROM '备份集路径'; --也可以加上TO参数,将控制文件恢复到指定路径下。

    二、恢复服务器端初始化参数文件SPFILE
    可能过BACKUP SPFILE命令手动备份初始化参数文件。不过一般RMAN在备份控制文件时,会自动备份SPFILE;
    恢复参数文件与恢复控制文件相似:
    执行恢复参数文件命令:
    RESTORE SPFILE FROM AUTOBACKUP;
    SPFILE文件的修改:
    由于SPFILE文件是二进制文件,无法直接编辑,如果要修改,可先通过SPFILE创建PFILE(客户端初始化参数文件),PFILE可直接用记事本打开编辑。再通过PFILE创建SPFILE即可。

    SQL> SHOW PARAMETER SPFILE;
    NAME TYPE VALUE
    ------- ----------- ------------------------------
    spfile string D:APPADMINISTRATORPRODUCT11.2.0DBHOME_1DATABASESPFILEORCL.ORA
    
    SQL> create pfile = 'D:APPADMINISTRATORPRODUCT11.2.0DBHOME_1DATABASEPFILEORCL.ORA' from spfile;--后也可加上绝对路径。from spfile='……';
    
    文件已创建。
    
    SQL> create spfile from pfile= 'D:APPADMINISTRATORPRODUCT11.2.0DBHOME_1DATABASEPFILEORCL.ORA'; --从PFILE文件创建SPFILE文件。
  • 相关阅读:
    String、StringBuffer、StringBuilder
    动态规划引入—矩阵乘法
    flask中间件
    有状态服务,无状态服务
    python 工厂模式
    python 单例模式
    python 工厂模式
    python timedelta() 和relativedelta()的区别
    mongo 查看(集合)表结构
    logstash 实现数据源分流
  • 原文地址:https://www.cnblogs.com/rusking/p/4177307.html
Copyright © 2011-2022 走看看