Welcome 微信登录

首页 / 数据库 / MySQL / RMAN 还原与恢复

--====================-- RMAN 还原与恢复--====================     在Oracle中,三大文件即控制文件,数据文件,日志文件的丢失与破坏都将需要使用还原或恢复来使数据库正常化。而RMAN还原与恢复是实现数据库完整性、可靠性必不可少的手段之一。还原简言之即是将所需的文件从备份中复制到原来文件所在的路径。还原通常可以包括数据库、表空间、数据文件级别的还原。通常还原后的内容会滞后于最新的数据库SCN,因此将归档日志、联机重做日志文件中的内容更新到还原的数据文件中,这个过程称之为恢复。     恢复的几种情形        1.在mount 或open 阶段完成的灾难恢复            非系统表空间,undo表空间,所有的数据文件        2.在nomount 阶段完成的灾难恢复            控制文件(controlfile)        3.在mount 阶段完成的灾难恢复            系统表空间,联机重做日志文件        有关恢复、介质恢复、一致性或非一致性恢复的详细概念请参考:Oracle 基于用户管理恢复的处理  http://www.linuxidc.com/Linux/2011-03/33059.htm    一、RMAN在归档模式下的还原与恢复的简化例子    RMAN> connect target /    RMAN> startup mount;    RMAN> restore database;    RMAN> recover database;    RMAN> alter database open; 二、使用RMAN进行还原与恢复(非catalog方式)      1.数据文件丢失的恢复处理        --设定客户端环境变量并连接到数据库            C:>set NLS_LANG=AMERICAN_AMERICA.AL32UTF8             C:>rman target sys/RedHat@dedicated nocatalog                --对数据库做全备            RMAN> backup as backupset                           2> format  "/u01/bk/rmbk/wb_%U"            3> tag=Whole_bak database;              RMAN> sql  "alter system archive log current";                    --对数据库做级增量备份            RMAN> run{                                              2> allocate channel ch1 type disk;            3> backup incremental level 0 database            4> format "/u01/bk/rmbk/Inc_0_%U"            5> tag=Inc_0;            6> release channel ch1;}         --对表插入新记录并切换日志            SQL> select * from tb2;                     ID NAME            ---------- ---------------------------------------------                     1 Robinson                     2 Henry             SQL> insert into tb2 select 3,"Danny" from dual;             SQL> commit;             SQL> alter system checkpoint;             SQL> alter system switch logfile;                    --对数据库做级增量备份            RMAN> run{                                          2>  allocate channel ch1 type disk;            3>  backup incremental level 1 database            4>  format "/u01/bk/rmbk/Inc_1%U"            5>  tag=Inc_1;            6>  release channel ch1;}             SQL> shutdown immediate; --关闭数据库             SQL> ho rm $ORACLE_BASE/oradata/orcl/*.dbf  --删除所有的数据文件 */             SQL> startup mount         --使用RMAN连接到未mount状态的数据库            RMAN> connect target sys/redhat@dedicated             connected to target database: ORCL (DBID=1257415066, not open)         --执行数据库还原        --注意当存在完整备份也同时存在级增量备份时,Oracle会自动使用级增量备份来还原数据库            RMAN> restore database;              piece handle=/u01/bk/rmbk/Inc_0_0alqu132_1_1 tag=INC_0 --下面可以看出还原的数据来自级增量备份         --执行数据库恢复            RMAN> recover database;            piece handle=/u01/bk/rmbk/Inc_10clqu1fe_1_1 tag=INC_1         --打开数据库验证恢复            RMAN> alter database open;             SQL> select * from bk.tb2;                     ID NAME            ---------- ---------------------------------------------                     1 Robinson                     2 Henry                     3 Danny        2.磁盘损坏导致数据文件无法恢复到原始位置或不想恢复到原始位置的处理        使用set newname 命令将数据文件还原到新路径            set newname for datafile 1 to "<newdir>/system01.dbf"; --为恢复的数据文件指定新路径或重命名        使用switch命令将变更更新到控制文件            switch datafile n | all ;      --等同于alter database rename file命令,该命令将恢复的数据文件重命名更新到控制文件                --下面的示例首先删除tbs01.dbf,接下来将其恢复到oradata目录中                    SQL> ho rm $ORACLE_BASE/oradata/orcl/tbs01.dbf             SQL> startup mount force;             RMAN> connect target sys/redhat@dedicated             connected to target database: ORCL (DBID=1257415066, not open)             RMAN> run{            2> set newname for datafile 6 to "/u01/app/oracle/oradata/tbs01.dbf";            3> restore database;            4> switch datafile all;            5> recover database;            6> alter database open;}             SQL> select file#,name,status from v$datafile where file#=6;                  FILE# NAME                                               STATUS            ---------- -------------------------------------------------- -------                     6 /u01/app/oracle/oradata/tbs01.dbf                  ONLINE                                 SQL> select count(1) from bk.tb2;  --表tb2位于tbs01.dbf内               COUNT(1)            ----------                     3
  • 1
  • 2
  • 3
  • 下一页
RMAN 备份详解Oracle 表空间与数据文件相关资讯      Oracle教程  RMAN 
  • RMAN故障一例(归档的备份,从不  (今 20:42)
  • RMAN的FORMATA格式说明  (03月10日)
  • Oracle 11g RMAN复制数据库的测试  (01月19日)
  • RMAN数据库迁移  (05月22日)
  • 使用RMAN复制恢复开发库环境  (02月17日)
  • Oracle 11g RMAN跨平台传输表空间  (01月19日)
本文评论 查看全部评论 (0)
表情: 姓名: 字数