精华内容
下载资源
问答
  • 13、从自动备份中恢复控制文件:RMAN> shutdown immediate; (立即关闭数据库)RMAN> startup nomount; (启动实例)RMAN> restore controlfile to '/backup1' from autobackup; (从自动备份中恢复控制文件)14...

    13、从自动备份中恢复控制文件:

    RMAN> shutdown immediate; (立即关闭数据库)

    RMAN> startup nomount; (启动实例)

    RMAN> restore controlfile to '/backup1' from autobackup; (从自动备份中恢复控制文件)

    14、恢复和复原全数据库:

    RMAN> shutdown immediate; (立即关闭数据库)

    RMAN> exit (退出)

    %mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak (将数据文件重命名)

    %mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak (将数据文件重命名)

    %mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak (将数据文件重命名)

    %mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak (将数据文件重命名)

    %rman target=rman/rman@mydb (启动恢复管理器)

    RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora (指定初始化参数文件启动数据库)

    RMAN> restore database; (还原数据库)

    RMAN> recover database; (恢复数据库)

    RMAN> alter database open; (打开数据库)

    15、恢复和复原表空间:

    RMAN> sql 'alter tablespace users offline immediate'; (将表空间脱机)

    RMAN> exit (退出恢复管理器)

    %mv /oracle/dbs/users01.dbf /oracle/dbs/users01.bak (将表空间重命名)

    %rman target=rman/rman@mydb (启动恢复管理器)

    RMAN> restore tablespace users; (还原表空间)

    RMAN> recover tablespace users; (恢复表空间)

    RMAN> sql 'alter tablespace users online'; (将表空间联机)

    15、增量备份与恢复:

    第一天的增量基本备份:

    RMAN> backup incremental level=0 database plus archivelog delete input;

    第二天的增量差异备份:

    RMAN> backup incremental level=2 database plus archivelog delete input;

    第三天的增量差异备份:

    RMAN> backup incremental level=2 database plus archivelog delete input;

    第四天的增量差异备份:

    RMAN> backup incremental level=1 database plus archivelog delete input;

    第五天的增量差异备份:

    RMAN> backup incremental level=2 database plus archivelog delete input;

    第六天的增量差异备份:

    RMAN> backup incremental level=2 database plus archivelog delete input;

    第七天的增量差异备份:

    RMAN> backup incremental level=0 database plus archivelog delete input;

    增量恢复:

    RMAN> shutdown immediate;

    RMAN> exit

    %mv /oracle/dbs/tbs_12.f /oracle/dbs/tbs_12.bak

    %mv /oracle/dbs/tbs_13.f /oracle/dbs/tbs_13.bak

    %mv /oracle/dbs/tbs_14.f /oracle/dbs/tbs_14.bak

    %mv /oracle/dbs/tbs_15.f /oracle/dbs/tbs_15.bak

    %rman target=rman/rman@mydb

    RMAN> startup pfile=/oracle/admin/mydb/pfile/initmydb.ora

    RMAN> restore database;

    RMAN> recover database;

    RMAN> alter database open

    22/2<12

    展开全文
  • oracle RMAN 备份恢复总结 oracle RMAN 备份恢复总结 oracle RMAN 备份恢复总结
  • 顶级DBA漫谈Oracle Rman备份与恢复
  • ORACLE RMAN备份策略

    2017-05-10 16:47:25
    ORACLE RMAN备份策略

    ORACLE 10g备份(会自动删除截止到备份时所有的archivelog)

    每周全备一次
    保留30天可用的备份集;
    控制文件自动备份;

    RHEL系统
    1. RMAN设置:
    RMAN>configure controlfile autobackup on;
    RMAN>configure retention policy to recovery window of 30 days;

    2. 备份脚本:
    $ORACLE_HOME/bin/rman <<EOF style="WORD-WRAP: break-word"
    connect target / 
    backup as compressed backupset database include current controlfile plus archivelog delete input;
    delete noprompt obsolete;
    exit; 
    EOF

    3. 修改crontab设置:
    ORACLE$crontab -e
    * * * * * 7 /路径/文件名 >/dev/null 2>&1

    windows系统

    1. RMAN设置:
    RMAN>configure controlfile autobackup on;
    RMAN>configure retention policy to recovery window of 30 days;

    2. 备份脚本:

    a. bat文件:

    rem run rman

    rman cmdfile=full_backup.txt

    b. full_backup.txt

    connect target / 
    backup as compressed backupset database include current controlfile plus archivelog delete input;
    delete noprompt obsolete;
    exit;

    3. 计划任务设置:
    控制面板/计划任务

    ORACLE增量备份(会自动删除截止到备份时所有的archivelog)

    备份脚本:

    backup incremental level 0 database including current controlfile plus archivelog delete input;
    backup incremental level 1 database including current controlfile plus archivelog delete input;

    展开全文
  • Oracle Rman备份集在异机恢复
  • ORACLE RMAN备份脚本

    2010-04-01 14:15:09
    oracle rman备份的脚本,公司近段时间改用rman备份。大家可以看看
  • oracle rman备份脚本

    2014-06-08 09:42:22
    oracle rac的rman备份脚本,非常具有参考价值
  • oracle rman 备份脚本

    2009-09-28 17:26:46
    oracle 数据库 rman 备份脚本
  • ORACLE RMAN备份及还原

    千次阅读 2017-05-10 16:45:36
    ORACLE RMAN备份及还原

    RMAN可以进行增量备份:数据库,表空间,数据文件

    只有使用过的block可以被备份成backup set

    表空间与数据文件对应关系:dba_data_files / v$datafile_header

    在noarchivelog模式下,可以使用RMAN备份read-only和offline的表空间

    ORACLE RMAN停机备份:

    备份

    RMAN连接上ORACLE,WINDOWS下在命令模式下

    RMAN TARGET /

    连接本地数据库用的是本地认证模式。RMAN连接数据库必须在dedicate模式下。因此在share模式下的数据库应配置一个dedicate的连接用于RMAN连接。

    如果要把控制文件、参数文件也一起备份

    configure controfile autobackup on;//打开autobackup 
    configure controfile autobackup off;//关闭autobackup
    关闭数据库
    RMAN>shutdown immediate
    mount 数据库RMAN的备份必须在MOUNT模式下,这也就是控制文件备份的重要。
    RMAN>startup mount
    最简单的备份
    RMAN>backup database
    就这一句就OK了
    这样的备份,备份集在数据库默认位置。%oracle_home%/ora92/database
    当然你也可以用run来灵活的定义你的备份。
    RMAN>run{
    >allocate chennel d1 type disk; //分配通道
    >backup full database           //全备份数据库
    >include current controlfile    //包括当前的controlfile
    >format 'e:\oracle\orders\db_%d_%s_%p_%t_%T'; //备份文件位置和文件名格式
    >release channel d1;//释放通道
    >}

    恢复
    1、数据文件损坏,而控制文件是好,或者已经恢复
     RMAN连上数据库
     startup mount
     restore database
     recover database noredo;
     alter database open resetlogs;
     recover database noredo该命令指示RMAN执行最后的恢复操作以准备打开这个数据库。因为是在NOARCHIVELOG模式下并且不应用任何归档的重做日志并且丢失了联机重做日志,所以要求在这条命令中使用noredo参数。

    最后使用alter database open resetlogs打开数据库。由于已经还原了控制文件并且需要重新构建重做日志,所以必须用resetlogs。
    2、还原控制文件
    startup nomount;
    set dbid = 
    restore controlfile from autobackup ;
    alter database mount;
    restore database;
    recover database noredo;
    alter database open resetlogs;
    alter database open;
    在这个例子中有一个DBID这个可以
    select * from v$database中查到。但是一个数据库在控制文件坏掉了不能OPEN如何能看的到呢这就在平时把这个DBID记下来。
    这是最简单的用RMAN备份与恢复的例子,但从中可以看到RMAN备份与恢复的梗概。

    ORACLE RMAN在线备份:

    1. ORACLE RMAN在线备份之前需要切换日志方式为归档日志;

    a. 关闭数据库
    SQL> shutdown immediate;

    b. 启动数据库到mount状态
    SQL> startup mount;

    c. 启用归档模式
    SQL> alter database archivelog;

    d. 查看修改后的数据库备份和恢复策略及归档文件的位置
    SQL> archive log list;

    注意:修改成archive模式之后,之前所有的数据库备份均无效。

    e. 修改相应的初始化参数
    Oracle10g之前,你还需要修改初始化参数使数据库处于自动归档模式。
    可用SQL> show parameter log_archive_start;查看
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- --------------
    log_archive_start                    boolean     FALSE
    SQL> alter system set log_archive_start=true scope=spfile;
    重启数据库此参数生效,此时数据库处于自动归档模式。

    当然你也可以不做第5步,直接
    SQL>archive log start
    使数据库启用自动归档,但是重启后数据库仍然处于手工归档模式。

    2. 运行:RMAN target /

    3. RMAN信息保存:默认保存在control file中,保存周期7天

    调整:alter system set control_file_record_keep_time=天数;

    4. 搭建独立数据库保存RMAN备份信息

    由于只有一个数据库,就建在本身数据库上

    a. 创建表空间RC:create tablespace rc datafile size 10M autoextend on next 1M

    b. 创建用户RC:

    CREATE USER rc IDENTIFIED BY rc TEMPORARY TABLESPACE temp DEFAULT TABLESPACE  rc QUOTA UNLIMITED ON rc;

    c. 授权RC: GRANT RECOVERY_CATALOG_OWNER TO rc;

    d. 搭建:

    rman catalog rc/rc@orcl

    RMAN>create catalog;

    RMAN>exit

    rman target / catalog rc/rc@orcl

    RMAN>register database;

    e. 使用:

    rman target / catalog rc/rc@orcl

    这种连接方式后,数据就会在控制文件和catalog各存一份

    5. 全局参数配置:

    查看:show all;

    修改:configure 参数名称 具体设置

    例如:修改是否自动保存control file:configure controlfile autobackup on;

    恢复默认值:configure 参数名称 clear;

    关键参数:

    a. 保存周期:retention policy

    默认是redundancy 1:保留一个备份;

    可用值:recovery window of 7 days:保留可以满足7天恢复周期的备份

    根据条件检查:report obsolete:RMAN会根据保存周期参数来列出可以删除的备份

    删除多于备份:delete obsolete

    b. 优化备份:backup optimization:RMAN会自动忽略已经备份过的内容(数据文件,归档日志,备份块)

    前提:备份指定同一个channel

    c. 默认备份渠道:default device type to disk:默认备份到磁盘,路径为flash recovery area

    渠道类型:

    disk:文件系统路径

    flash recovery area:默认路径

    sbt:磁带设备

    修改到磁盘其他路径:configure channel device type disk format '路径/%U';

    例如:configure channel device type disk format '/tmp/movedata/%U';

    6. 备份结果

    backupset:backup (as backupset) 备份内容,里面分割成一个或多个backup piece,只有该类型备份可以进行压缩。

    copy:backup as copy 备份内容

    按类型查看:

    backupset 查看:list backup summary(list backupset summary)

    查看详情:list backupset BS

    copy查看:list copy

    按内容查看:

    整个数据库:list backup of database;

    tablespace:list backup of tablespace users;

    数据文件:list backup of datafile n;

    控制文件:list backup of controlfile;

    归档日志:list archivelog all;

    按规则查看:

    查看根据保存规则可删除文件:report obsolete;

    查看根据保存规则需要备份内容:report

    RMAN和OS结合检查:corsscheck 内容;

    7. 备份方式

    full:全备;

    Incremental:增量备份

    可以增量备份的类型:数据库,数据文件,表空间

    a. 首先需要做level 0备份作为基础。例如:backup incremental level 0 备份内容;(备份内容:所有使用过的data block,和image copy不同)

    b. 增量类型:

    累计增量:backup cumulative level 1 备份内容;

    差异增量:backup incremental level 1 备份内容;

    区别:累计增量始终是基于level 0的备份;

    第一次差异增量是基于level 0的备份;从第二开始就是基于前一次增量备份

    c. Image备份增量方式:

    第一次:以Image全备为基础;

    第二次:基于全备,做增量备份;完成后合成成一个Image全备

    第三次:基于第二次的Image全备,做增量备份;完成后合成成一个Image全备

    实现:

    例如:针对tablespace example

    RUN {
       RECOVER COPY OF tablespace example WITH TAG 'incr_update';
       BACKUP INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'incr_update'
           tablespace example;
       }

    d. 开启参数"block change tracking",可以提高速度

    查看状态:SELECT status FROM v$block_change_tracking;

    默认值:DISABLED

    开启:ALTER DATABASE ENABLE BLOCK CHANGE TRACKING;(默认存放路径OMF中的DB_CREATE_FILE_DEST)

    设置文件路径:

    ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '/u01/oradata/MYSID/rman_change_track.f' REUSE;

    关闭:ALTER DATABASE DISABLE BLOCK CHANGE TRACKING;

    备份并检查:bakcup check logical 备份内容;

    不备份只是检查文件:backup validate 备份内容;

    如果检查有报错,查看:v$backup_corruption;v$copy_corruption

    8. 备份内容:

    整个数据库:RMAN>backup database;

    经典整库备份:backup as compressed backupset database include current controlfile plus archivelog delete input;

    tablespace:RMAN>backup tablespace 名字;

    数据文件:RMAN>backup datafile n; (n:具体的数据文件编号select file_name,file_id,tablespace_name from dba_data_files;)

    控制文件:RMAN>backup current controlfile;

    或者RMAN>backup database include current controlfile;

    日志文件:RMAN>backup archivelog all;

    或者RMAN>backup database plus archivelog;

    参数文件:RMAN>backup spfile;

    9. 还原

    a. 完全恢复

    方法一:从最近的备份集恢复整个数据库,数据库会自动运行redo和archive日志(完全恢复):

    SQL>shutdown immediate

    SQL>startup mount

    RMAN>restore database;

    RMAN>recover database;

    RMAN>sql 'alter database open';

    方法二:从tag恢复整个数据库,数据库也会运行redo 和archive 日志(完全恢复),结果与上面的脚本一样:

    1. 查看标签:

    RMAN> list backupset summary;
    Key     TY LV S Device Type Completion Time #Pieces #Copies Compressed Tag
    ------- -- -- - ----------- --------------- ------- ------- ---------- ---
    25      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T104634
    28      B  0  A DISK        25-JUL-11       1       1       NO         TAG20110725T104645
    29      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T104711
    30      B  F  A DISK        25-JUL-11       1       1       NO         TAG20110725T104713
    31      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T105333
    32      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T105350
    33      B  1  A DISK        25-JUL-11       1       1       NO         TAG20110725T105353
    34      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T105408
    35      B  F  A DISK        25-JUL-11       1       1       NO         TAG20110725T105411
    36      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T111403
    37      B  1  A DISK        25-JUL-11       1       1       NO         TAG20110725T111405
    38      B  A  A DISK        25-JUL-11       1       1       NO         TAG20110725T111421
    39      B  F  A DISK        25-JUL-11       1       1       NO         TAG20110725T111423

    2. 还原数据库:

    SQL>shutdown immediate;
    SQL>startup mount;
    RMAN>restore database from tag TAG20110725T104645;

    RMAN> recover database from tag TAG20110725T104645;

    RMAN> alter database open;

    b. 不完全恢复:

    SQL>shutdown immediate;
    SQL>startup mount;
    RMAN>restore database from tag TAG20110725T104645;

    RMAN>recover database until time "to_date('2011-08-04 15:37:25','yyyy/mm/dd hh24:mi:ss')";

    RMAN>alter database open resetlogs;
    注意:使用后所有的备份集都无效了,确保安全需要重新对数据库进行全备(ORACLE10G之后,resetlog之前的备份还是可以用的)

    关键表空间恢复(system / undotbs1 / sysaux):

    SQL>shutdown abort

    SQL>startup mount

    RMAN>restore tablespace 名字;

    RMAN>recover tablespace 名字;

    RMAN>sql 'alter database open';

    非关键表空间恢复(example / users ):

    select * from v$datafile_header; 表空间与数据文件对应关系

    SQL>alter database datafile 数字 offline;

    RMAN>restore tablespace 名字;

    RMAN>recover tablespace 名字;

    SQL>alter database datafile 数字 online;

    10. 删除备份

    所有backup备份集:delete backup;

    所有copy备份机:delete copy;

    特定备份机:delete backupset 19;

    删除根据保存规则可删除文件:delete obsolete;

    删除过期的备份:

    delete expired backupset;

    delete expired copy;

    11. RUN块

    例如:

    RMAN> RUN {
              ALLOCATE CHANNEL c1 DEVICE TYPE sbt;
              ALLOCATE CHANNEL c2 DEVICE TYPE sbt;
              ALLOCATE CHANNEL c3 DEVICE TYPE sbt;
              BACKUP
             INCREMENTAL LEVEL = 0
             FORMAT '/disk1/backup/df_%d_%s_%p.bak'
             (DATAFILE 1,4,5 CHANNEL c1)
             (DATAFILE 2,3,9 CHANNEL c2)
            (DATAFILE 6,7,8 CHANNEL c3);
              ALTER SYSTEM ARCHIVE LOG CURRENT;
           }
    12. 外部变量:

    语言:set nls_lang=american

    日期:set nls_date_format=yyyy-mm-dd....

    13. RMAN sciprt

    前提条件:有catalog

    写法:(global表示可以由多个数据库调用)

    create global script. 名

    comment "备注说明"

    {脚本内容}

    例如:

    create global script. abc

    comment "test"

    {backup current controlfile;}

    调用:run {execute script. 名}

    例如:run {execute script. abc;}

    查看:print script. 名

    改写:

    replace global script. 名

    comment "备注说明"

    {脚本内容}

    删除:delete script. 名;

    14. 永久保留备份

    条件是备份不能保留在flash recovery area中;

    a. 创建备份:

    RUN

    { 
    ALLOCATE CHANNEL c1 DEVICE TYPE disk format '/tmp/autobackup/%U';
    BACKUP tablespace example;
    }

    b. 查找该备份:

    list backupset of tablespace example;

    c. 修改属性为永久

    change backupset 编号 keep forever nologs;

    15. 建立多个固定大小的备份

    例如:example 测试备份大小是大于50M

    run

    {

    allocate channel c1 device type disk maxpiecesize 10M format '/tmp/autobackup/%U';

    backup tablespace example;

    }

    /tmp/autobackup目录下有六个文件

    16.运行脚本:backup recovery area

    备份内容:

    a. control file autobackup;

    b. incremental backup sets

    17.block change tracking

    a. 针对整个数据库;

    b. 默认存放路径:background_dump_dest

    展开全文
  • Oracle Rman备份脚本For Windows
  • oracle rman备份命令

    2012-07-24 11:27:32
    介绍Oracle Rman常见命令,简明扼要!
  • oracle rman备份

    2010-06-21 16:19:37
    有关对于ORACLE(RMAN)的备份技巧.非常使用.
  • Oracle RMAN 备份与恢复

    千次阅读 2021-01-07 11:44:08
    这里写目录标题一、RMAN 备份与恢复1.RMAN备份(1)连接数据库(2)通道分配(3)RMAN 备份类型(4)BACKUP 命令(5)FORMAT 参数替换变量2.RMAN 恢复(1)数据库进行完全介质恢复(2)表空间的恢复(3)恢复数据文件...


            RMAN (Recovery Manager)是 Oracle 恢复管理器的简称,是集数据库备份(Backup)、还原(Restore)和恢复(Recover)于一体的Oracle数据库备份与恢复工具。它能够备份整个数据库或数据库部件,如表空间、数据文件、控制文件、归档文件以及 Spfile 参数文件,RMAN备份是一种物理的备份,它直接去读取数据块,因此 rman 是块级别的备份。从备份的那个时间点开始RMAN 将锁定此刻的数据文件信息,也就是说只备份数据文件到此刻的信息为止。

    一、RMAN备份

    1.连接数据库

    通过 RMAN TARGET 连接
    在这里插入图片描述
           使用 RMAN 连接本地数据库之前必须首先设置操作系统环境变量:ORACLE_SID,并指定该值等于目标数据库的实例名。如果本地库只有一个实例并已经设置了 ORACLE_SID 环境变量,则不需要再指定ORACLE_SID,RMAN 会自动连接到默认实例。
           如果要连接的目标数据库是一个远程数据库,那么必须在建立连接时指定一个有效的网络服务名( Net Service Name),并且本地的tnsname.ora 文件中必须已经建立了该网络服务名的正确配置


           通过 CONNECTTARGET 连接。
           也可以先启动 RMAN,然后再通过CONNECT 命令来连接目标数据库:
    在这里插入图片描述


    2.通道分配

           通道是指由服务器进程发起并控制目标数据库的文件与物理设备之间的字节流。一个通道即为一个会话,一个会话对应于一个服务器进程。所有的备份和恢复操作都是由 RMAN 连接的服务器进程完成的,更确切的说是由通道完成的。通道的分配主要有两种形式:自动分配通道和手动分配通道。可以根据预定义的配置参数自动分配通道,也可以在需要时手动分配通道。


    自动分配通道。
    自动分配通道是指在执行 RMAN 命令时,不需要显式制定通道的细节就可以使用通道(实际上也是使用预先设置或是使用默认的设置),如果没有手动分配通道,那么 RMAN 在执行 BACKUP 等操作 I/O的命令时将会使用预定义配置中的设置来自动分配通道。
    查看默认的通道设备类型设置:
    在这里插入图片描述
    查看可用的设备类型:
    在这里插入图片描述
    修改设备备份并行度为 2,即备份开始时会使用两个通道进行备份,又还原默认设置值:
    在这里插入图片描述
    査看通道配置并修改通道配置,设置最大备份片的大小为 1G,通道 1 的备份路径为 C: \oracle\bak:
    在这里插入图片描述
    还原通道配置:
    在这里插入图片描述


    手动分配通道:
    分配通道有一个专用命令: ALLOCATE CHANNEL,该命令可以(并且只能)在 RUN 块中出现,在执行 BACKUP、RESTORE 等需要进行磁盘 LO操作的命令时,可以将它们与ALLOCATE CHANNEL 命令放在一个手动分
    配通道。
    使用 RUN 命令手动分配通道。语法为:

    RUN{
    ALLOCATE CHANNEL 通道名称 DEVICE TYPE 设备类型,
    BACKUP
    }
    

    在这里插入图片描述
    RMAN 中执行的每一条 BACKUPRECOVER 等命令都至少要求使用一个通道,通道决定了这些操作执行的并行度,每条ALLOCATECHANNEL 命令对应一个通道,如果需要多个通道,执行多条语句即可。
    手动分配通道后应该在 RUN 结束前释放,可以用 RELEASE CHANNEL 命令,不过不手动释放也没关系,RMAN 会在 RUN 块中任务执行完后自动释放该块中所用的通道。

    3.RMAN 备份类型

    备份集:
           备份集( Backup Set)是 Orac1e 默认的备份类型,把数据文件中已经使用过的数据块备份到一个或多个文件中,这样的文件叫做“备份片”,所有备份出来的文件组合成为“备份集”。备份集与备份片的关系类似于表空间与数据文件的关系,备份集是一个逻辑概念,将备份片(物理文件)逻辑地组织在一起。一般来说一个通道会产生一个备份集,比如启动了 3 个通道,那么每个通道负责生成一个备份集,不过如果启动了控制文件自动备份,那么控制文件所在的备份文件会单独生成一个备份集,不会与数据文件备份集合并在一起。如果在备份时指定了每个备份集中包含的数据文件个数(通过filesperset设置),那么即便只有一个通道,也有可能生成多个备份集。
           备份片( Backup Piece):每个备份片是一个单独的输出文件。一个备份片的大小是有限制的,如果没有大小的限制,备份集就只由一个备份片构成。备份片的大小不能大于你的文件系统所支持的文件的最大值,最大值可以通过 maxpiecesize 设置。
    在这里插入图片描述
           其中在进行控制文件备份以后,会出现一个独立备份集。控制文件和数据文件不能放在同一个备份集里,因为数据文件所在的备份集以 Orac1e 数据块为最小单位,而控制文件所在备份集是以操作系统块作为最小单位。同样的,归档日志文件所在的备份集也是以操作系统块为最小单位,所以归档日志文件备份集和数据文件备份集不能在同一个备份集里面。


    镜像副本:
           镜像副本( Image Copy)与手工系统拷贝备份数据文件类似,是一个数据文件生成一个镜像副本文件(数据库数据文件、归档重做日志或者控制文件的精确副本),不同的是这个过程由 RMAN 完成,RMAN 复制的时候也是一个数据块一个数据块( Orac1e Block)地复制,同时默认检测数据块是否出现物理损坏(默认不会进行逻辑损坏检查,需要手工启动),且不要将表空间置为 begin backup 状态,与备份集类型
    不同在于生成的镜像副本中包含使用过的数据块,也包含从来没有用过的数据块。生成镜像副本的好处在于恢复速度相对备份集来说更快,恢复时可以不用拷贝,指定新位置即可。


    备份集和镜像副本的区别:
           镜像副本是与数据文件( Data file)、控制文件( Control File)或归档重做日志文件(ArchivedLog)完全一致的副本。用户可以使用操作系统工具或 RMAN 创建镜像副本,也能够使用操作系统工具或RMAN 直接利用镜像副本恢复数据库,而无须任何额外处理。备份集是由被称为备份片的一个或多个物理文件构成的,其格式为 RMAN 自有格式。备份机与镜像副本的区别在于,备份集内可以包含多个数据文件,且备份过程中可以进行特殊处理,例如压缩或增量备份( Incremental Backup)等。备份集必须使用 RMAN 来恢复。

    4.BACKUP 命令

           RMAN 中所有的备份操作都是通过 BACKUP 命令(指创建备份集方式的备份)进行的,对于比较简单的备份需求,甚至只需要执行一条命令,下面分别演示通过 BACKUP 命令进行不同级别的备份。
    基本语法:

    BACKUP [backup_option] backup_object
    [PLUS ARCHIVELOG]
    [backup_object_option];
    

    整库的备份:
    在这里插入图片描述

    其中, FORMAT 参数用来自定义备份文件的路径。该备份生成了两个备份文件(如果多个通道,可能是多个文件):一个是存储数据文件,另一个是存储控制文件和参数文件。
    通过 LST 命令来查看创建的全库备份:
    在这里插入图片描述


    备份表空间:
    只要实例启动并处于加载状态,无论数据库是否打开,都可以在RMAN 中对表空间进行备份。使用 BACKUP TABLESPACE 命令备份一个或多个表空间。
    在这里插入图片描述
    通过 LIST 命令查看创建的表空间备份:
    在这里插入图片描述


    备份数据文件:
    有两种方式实现数据文件的备份:一种是通过数据文件名称来备份;另一种是通过数据文件编号指定来备份的数据文件。
    可以通过查询数据字典 DBA_DATA_FILES 来得到数据文件名和数据文件编号。
    在这里插入图片描述
    通过 BACKUP DATAFILE 命令备份 USERS 表空间的数据文件:
    通过文件名称
    在这里插入图片描述
    通过文件编号
    在这里插入图片描述
    查看指定数据文件的备份(datafile后面为数据文件的编号,如果要查看多个,则各个编号之间用逗号隔开):
    在这里插入图片描述


    备份控制文件:
    手动执行备份命令:
    在这里插入图片描述
    改为自动备份:
    在这里插入图片描述
    在 Orac1e11g 中,如果使用了闪回区,那么控制文件的自动备份会存储在闪回区中,有时候为了安全,需要将控制文件的自动备份转移到其他目录下:
    在这里插入图片描述
    上述路径一定要存在否则汇报下面错误:
    在这里插入图片描述

    当备份服务器把 AUTOBACKUP 被置为ON时,RMAN做任何备份操作,都会自动对控制文件做备份。
    查看备份的控制文件:
    在这里插入图片描述


    备份归档重做日志文件:
    通过如下命令来查看归档日志信息:
    在这里插入图片描述
    在这里插入图片描述
    使用 BACKUP ARCHIVELOG 命令备份归档重做日志文件:
    在这里插入图片描述
    执行 BACKUP 命令时可以指定 PLUS ARCHIVELOG 子句来实现备份归档重做日志文件:
    在这里插入图片描述

    以上语句是在备份数据文件之前首先对所有归档文件进行备份。
    完成备份之后,可以通过下列命令查看已备份的归档日志片段:
    在这里插入图片描述


    备份服务器初始化参数文件:
    在进行备份控制文件时,RMAN 会自动备份服务器的参数文件,并置于控制文件相同的备份片段中,因此很少需要单独对 SPFILE 进行备份,如果想单独备份,直接使用 BACKUPSPFILE 命令即可。
    在这里插入图片描述

    5.FORMAT 参数替换变量

    • %c:备份片的拷贝数(从 1 开始编号)
    • %d:数据库名称
    • %D:位于该月中的天数(DD)
    • %M:位于该年中的月份(MM)
    • %F:一个基于 DBID 唯一的名称,这个格式的形式为c-IIIIIIIIII-YYYYMMDD-QQ,其中 IIIIIIIIII 为该数据库的 DBID,YYYYMMDD 为日期,QQ 是一个 1-256 的序列
    • %n:数据库名称,并且会在右侧用 x 字符进行填充,使其保持长度为 8
    • %u:是一个由备份集编号和建立时间压缩后组成的 8 字符名称。利用%u 可以为每个备份集生成一个唯一的名称
    • %p:表示备份集中备份片段的编号,从 1 开始编号
    • %U:是%u_%p_%c 的简写形式,利用它可以为每一个备份片段(即磁盘文件)生成一个唯一名称,这是最常用的命名方式
    • %s:备份集的号
    • %t:备份集时间戳
    • %T:年月日格式( YYYYMMDD)

    在 backup 命令中没有指定 format 选项,则 RMAN 默认使用%U 为备份片段命名

    二、RMAN 恢复

           RMAN 中的恢复对应两个操作:数据库修复( Restore)和数据库恢复( Recover)。使用 RMAN 进行数据库恢复时只能使用之前使用 RMAN进行的备份,可以实现数据库的完全恢复,也可以实现数据库的不完全恢复。与用户管理的恢复类似,RMAN 恢复也分两个步骤,首先使用restore 命令进行数据库的修复,然后使用 recover 命令进行数据库的恢复。数据库修复是指利用备份集的数据文件来替换已经损坏的数据库文件或者将其恢复到一个新的位置。数据库恢复是指应用所有重做日志,将数据库恢复到崩溃前的状态,或者应用部分REDO,将数据库恢复到指定的时间点。
           RMAN 中提供了多种不同级别的恢复方式,可以恢复整个数据库,也可以只恢复某个或某几个表空间,或某个或某几个数据文件,可以单独恢复控制文件、初始化参数文件,或者归档文件。也就是说,用RMAN 备份的就都能被恢复。

    1.数据库进行完全介质恢复

           如果数据库只剩下控制文件和参数文件,数据文件因为丢失或损坏,之前创建过整库的备价,并且执行备份操作之后,所有的归档日志文件和重做日志文件都还在,这种情况下就可以将数据库恢复到崩溃前那一刻的状态,这种恢复方式,叫做完全介质恢复。
    执行完全介质恢复有以下三个步骤:
    第一步:启动数据库到加载状态:
    在这里插入图片描述


    第二步:执行恢复操作:
    在这里插入图片描述
    在这里插入图片描述
    执行 recover 命令时,附加的 DELETE ARCHIVELOG 和 SKIP TABLESPACE 两个参数是可选参数:

    • DELETE ARCHIVELOG:表示 RMAN 将在完成恢复后自动删除那些在恢复过程中产生的归档日志文件
    • SKIP TABLESPACE:跳过指定表空间,比如临时表,当然临时表空间即使你不跳过它也不会恢复的

    第三步:恢复完成后,打开数据库:
    在这里插入图片描述

    2.表空间的恢复

    执行表空间的恢复时,数据库可以是 mount 状态,也可以是 open状态。在执行恢复之前如果被操作的表空间未处于 offline 状态,必须首先通过 alter tablespace … offline 语句将其置为脱机
    在这里插入图片描述
    如果一次对多个表空间进行恢复,那么只需要在执行restore/recover 命令时同时指定多个表空间名称即可,相互间以逗号分隔。不过将表空间置为 online/offline,脚本不能合并为一条。

    3.恢复数据文件

    执行数据文件的恢复时,数据库可以是 mount 状态,也可以是open 状态。在执行恢复之前,如果被操作的表空间未处于 offline状态,必须首先通过 alter database datafile…offline 语句将其置为脱机。
    在这里插入图片描述
    执行 restore/recover 操作指定数据文件时,既可以以数据文件编号,也可以由具体的数据文件名代替。
    如果由于磁盘损坏导致数据文件无法访问,那么恢复时数据文件可能无法再恢复到原路径,必须在执行 restore 命令之前,给数据文件指定新的路径。

    4.恢复控制文件

    Orac1e 会默认在 $Orac1e home/dbs 或者 $Orac1e home /database 目录中创建服务器参数文件与控制文件。
    假设已经还原了实例参数文件和启动了实例,还原控制文件时,一般过程是先设置 oracle_sid 和登录 RMAN,然后设置 DBID,使 RMAN知道需要查找哪一个数据库的控制文件。
    如果使用默认的位置来存储控制文件的自动备份,就可以简单地执行: restore controlfile from autobackup,这样 RMAN 就可以查找包含最新控制文件的控制文件备份集。一旦恢复了控制文件,就必须关闭重启数据库实例。如果使用的是非默认位置,就需要分配一个指向该位置的通道,然后再使用相同的方法来还原控制文件。
    从自动备份中恢复的具体步骤如下:
    第一步:建立测试环境:
    由于控制文件在 Orac1e 数据库运行期间会被 Orac1e 进程锁定,无法直接删除,因此这里还是按照之前实验模拟丢失数据文件的方式,首先 shutdown 数据库,然后再删除控制文件:
    在这里插入图片描述
    在这里插入图片描述


    第二步:恢复控制文件:
    新建一个窗口,连接到 RMAN 命令行
    在这里插入图片描述
    目标数据库控制文件丢失,无法启动到 mount 状态,此处必须首先指定 DBID。
    要获得目标数据库的 DBID,可以通过多种方式查询,如我们创建自动备份时,如果没有更改其命名方式,文件名中会包含 DBID;或者查看之前生成的 RMAN 备份日志,当使用 RMAN 登录目录数据库后,最先输出的信息中就会显示出目标数据库的 DBID;或者连接到目标端数据库之后,查询 database 视图也可以获得。
    在这里插入图片描述
    在这里插入图片描述
    恢复至默认路径下:
    在这里插入图片描述
    这里出现找不到副本的问题,发现前面设置的autobackup使用的不是默认路径
    在这里插入图片描述
    所以要从前面设置的路径进行恢复
    在这里插入图片描述


    第三步:启动数据库:
    在这里插入图片描述

    5.利用 RMAN 进行不完全恢复

    启动 RMAN 并连接目标数据库,如果使用恢复目录,还需要连接到恢复目录数据库。
    将数据库设置为加载状态:
    在这里插入图片描述


    基于时间的不完全恢复:
    基于时间恢复是指当出现用户错误(例如误删除表、误截断表) 时,恢复到指定时间点的恢复。执行RMAN,启动数据库到 mount 状态。使用 set until time 命令指定要恢复到的时间点。
    在这里插入图片描述


    基于 SCN 的不完全恢复:
    执行 RMAN,启动数据库到 mount 状态。使用 set until scn 命令指定要恢复到的 SCN 点。
    查询当前的scn
    在这里插入图片描述
    在这里插入图片描述


    基于日志序列号的不完全恢复:
    基于日志序列号恢复是指恢复数据库到指定日志序列号的状态。
    可以通过下面的语句来查询当前的日志序列号。
    在这里插入图片描述
    在这里插入图片描述

    6.RMAN 恢复示例

    我们来模拟一个过程,首先创建一份数据库的完全备份,然后在数据库中进行若干操作,之后删除该数据文件来模拟该文件意外丢失,最后通过 RMAN 来恢复该数据文件。


    联机备份的步骤如下:
    第一步:建立测试表,并向表里添加一条记录在这里插入图片描述


    第二步:在备份之前做一次日志切换
    在这里插入图片描述


    第三步:将数据库进行整库的备份
    在这里插入图片描述


    第四步:再向测试表中添加一条记录,再做一次日志切换
    在这里插入图片描述


    第五步:关闭数据库,模拟丢失数据文件
    在这里插入图片描述


    第六步:启动数据库
    在这里插入图片描述


    第七步:查询有问题的数据文件
    在这里插入图片描述


    RMAM 恢复的步骤如下:
    第一步::重新进入 RMAN 界面,将出现问题的表空间设置为脱机状态
    在这里插入图片描述


    第二步:修复数据库
    在这里插入图片描述


    第三步:恢复数据库,完成介质恢复
    在这里插入图片描述


    第四步:介质恢复完成后,将表空间恢复为联机状态
    在这里插入图片描述


    第五步:恢复完成后,打开数据库
    在这里插入图片描述


    第六步:检查数据记录丢失情况
    在这里插入图片描述
    这里可以发现,数据库恢复成功,数据没有丢失。若丢失的数据文件有多个,则应先将相应的数据文件全部进行备份,再使用类似的恢复步骤进行恢复。

    7.说明

    • RMAN 也可以实现单个表空间或数据文件的恢复,恢复过程可以在mount 下或open 方式下,如果在open 方式下恢复,可以减少down机时间
    • 如果损坏的是一个数据文件,建议 offline 并在 open 方式下恢复
    • 这里可以看到,RMAN 进行数据文件与表空间恢复的时候,代码都比较简单,而且能保证备份与恢复的可靠性,所以建议采用 RMAN的备份与恢复
    展开全文
  • 个人总结的oracle rman备份命令的使用。有例子,可以自己看
  • oracle rman 备份基础

    2008-11-11 14:42:10
    rman 备份基础 rman 备份基础 rman 备份基础
  • Oracle rman备份命令

    2013-08-14 21:17:06
    Oracle数据库恢复备份工具RMAN是非常强大的一个工具,文档中介绍了很详细的rman使用与备份命令,希望对维护Oracle的人有帮助!
  • oracle rman备份原理

    2020-02-26 14:08:02
    RMAN备份ORACLE数据库自带的在线热备工具,使用RMAN不需要安装,可会数据块进行压缩和检测,可备份数据块的变化量,是数据块级别的备份解决方案。 缺点:若数据库中出现坏块,RMAN会自动检测坏块并跳过坏块,造成...
  • 一个完整的Oracle rman备份恢复参考示例,阅读一个完整的Oracle rman备份恢复参考示例,完整的Oracle rman备份恢复参考示例: 1、建rman库作为repository $more createrman_db1.sh set echo on spool makedb1.log ...
  • 包含RMAN全量、增量、备份、恢复以及数据丢失、控制文件丢失、参数文件丢失、密码文件丢失、redo文件丢失、表空间损坏相关操作。
  • 本套课程讲解了Oracle RMAN备份恢复的课程,讲解了压缩备份,备份加密,数据库恢复,恢复指导,块跟踪,3种增量备份、基于增量备份的数据恢复、恢复目录catalog、手工制作坏块、坏块的屏蔽与恢复、使用dbms_backup_restore...
  • oracle RMAN备份命令

    2011-08-21 16:24:00
    RMAN备份命令....................
  • 本文介绍win平台oracle rman备份和删除dg备库归档日志脚本
  • oracle RMAN备份及备份信息查询

    千次阅读 2019-01-29 16:28:13
    RMAN备份 RMAN备份分为全备和增量备份两部分,而增量备份:分为0 1 2级 备份脚本(db_bak_rman.sh) ##====================================================================== ## db_bak_rman.sh ## ## 2014/...
  • ORACLE rman备份与恢复

    2009-02-17 09:28:12
    rman备份与恢复 rman备份与恢复.doc
  • ORACLE RMAN备份

    千次阅读 2018-08-15 11:00:17
    备份集顾名思义就是一次备份的集合,它包含本次备份的所有备份片,以oracle专有的格式保存。一个备份集根据备份的类型不同,可能构成一个完全备份或增量备份。 2)Backup pieces 备份片 一个备份集由若干个备份片...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 30,033
精华内容 12,013
关键字:

oraclerman备份位置