zoukankan      html  css  js  c++  java
  • RMAN备份详解1

    一、RMAN备份的概念

      1.数据库完全备份:按归档模式分为归档和非归档

      归档模式:打开状态,属于非一致性备份;关闭状态,可以分为一致性和非一致性。

      非归档模式打开状态,非一致性备份无效;关闭状态,一致性备份,非一致性备份不被推荐

      2.RMAN备份

      RMAN使用服务器会话来完成备份操作,从RMAN客户端连接到服务器将产生一个服务器会话

      RMAN备份内容包括:整个数据库,表空间,数据文件,指定的数据文件,控制文件,归档日志文件,参数文件等

      3.RMAN备份的类型

      完整备份:一个或多个数据文件的一个完整副本,包含从备份开始处所有的数据块.完整备份不能作为增量的基础

      增量备份:包含从最近一次备份以来被修改或添加的数据块.可以分为差异增量备份和累计增量备份

      一致性备份:备份所包含的各个文件中的所有修改都具备相同的系统变化编号(system change number,SCN)。也就是说,备份所包含的各个文件中的所有数据均来自同一时间点。一致性数据库完全备份(consis-tent whole database backup)进行还原(restore)后,不需要执行恢复操作(recovery)

      非一致性备份:在数据库处于打开(open)状态时,或数据库异常关闭(shut down abnormally)后,对一个或多个数据库文件进行的备份。非一致性备份需要在还原之后进行恢复操作

      注:热备(open)或冷备(closed),冷备时数据库必须处于mount状态,冷备可以为一致性备份或非一致性备份

      4.备份集与镜像副本

      备份集:是包含一个或多个数据文件,归档日志文件的二进制文件的集合.备份集由备份片组成,一个备份集中可以包含一个或多个备份片

      可以通过filesperset参数来设置备份集中可包含的备份片数,也可以设定参数maxpiecesize来制定每个备份片的大小。

      备份集中空闲的数据块将不会被备份,因此备份集可以支持压缩。备份集支持增量备份,可以备份到磁盘或磁带。 

      镜像副本:是数据文件或归档日志文件等的完整拷贝,未经过任何压缩等处理,不能备份到磁带,也不支持增量备份;恢复时可以立即使用实现快速恢复;等同于操作系统的复制命令;可以作为级增量备份

      5.RMAN备份路径:可以备份到磁盘目录;可以备份到磁带;闪回区

      6.RMAN备份限制:数据库必须处于mount或open状态;不能备份联机日志;在非归档模式下仅仅能作干净备份,即在干净关闭且启动到mount状态下备份;在归档模式下,current状态下数据文件可以备份

    二、使用RMAN进行备份

    1.备份数据库

     1 RMAN> show all;
     2 
     3 RMAN configuration parameters are:
     4 CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default
     5 CONFIGURE BACKUP OPTIMIZATION OFF; # default
     6 CONFIGURE DEFAULT DEVICE TYPE TO DISK; # default
     7 CONFIGURE CONTROLFILE AUTOBACKUP OFF; # default
     8 CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default
     9 CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default
    10 CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
    11 CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default
    12 CONFIGURE MAXSETSIZE TO UNLIMITED; # default
    13 CONFIGURE ENCRYPTION FOR DATABASE OFF; # default
    14 CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default
    15 CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default
    16 CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/oracle/dbs/snapcf_sun.f'; # default
    17 
    18 RMAN>        
    19 
    20 --备份整个数据库
    21 RMAN> backup database format '/tmp/backup/whole_%d_%U';
    22 RMAN>       
    23 
    24 --备份整个数据库并压缩备份集
    25 RMAN> backup as compressed backupset database
    26 2> format '/tmp/backup/whole_%d_%U';
    27 RMAN> 
    28 
    29 --将并行度改为
    30 RMAN> CONFIGURE DEVICE TYPE DISK PARALLELISM 3;
    31 
    32 new RMAN configuration parameters:
    33 CONFIGURE DEVICE TYPE DISK PARALLELISM 3 BACKUP TYPE TO BACKUPSET;
    34 new RMAN configuration parameters are successfully stored
    35 released channel: ORA_DISK_1
    36 
    37 RMAN> 
    38 
    39 --并行度改为之后,自动启用了个通道
    40 RMAN> backup as compressed backupset database
    41 2> format '/tmp/backup/whole_%d_%U';                     
    42 RMAN> 
    43 
    44 --用run打包执行rman命令
    45 RMAN> run{
    46 2> allocate channel ch1 type disk                          --手动分配一个通道
    47 3> maxpiecesize=2g;                                        --指定备份片的大小为2g
    48 4> backup as compressed backupset database                 --压缩备份集
    49 5> format '/tmp/backup/whole_%d_%U' filesperset=3;         --指定备份集中允许容纳的文件数为个     
    50 6> release channel ch1;                                    --释放通道
    51 7> }
    52 
    53 --提示释放先前自动分配的三个通道
    54 released channel: ORA_DISK_1
    55 released channel: ORA_DISK_2
    56 released channel: ORA_DISK_3
    57 allocated channel: ch1
    58 channel ch1: sid=139 devtype=DISK
    59 ......
    60 
    61 released channel: ch1
    62 
    63 RMAN>  

    2.备份数据文件

    1 --备份类型为镜像备份
    2 RMAN> backup as copy datafile 8 
    3 2> format '/tmp/backup/df_d%_%U';
    4 RMAN> 
    5 
    6 --备份类型为备份集
    7 RMAN> backup datafile 6,7,8
    8 2> format '/tmp/backup/df_%d_%U';
    9 RMAN>

    3.备份表空间

     1 RMAN> backup tablespace sun01 
     2 2> format '/tmp/backup/td_%d_%U';
     3 RMAN> 
     4 
     5 RMAN> backup tablespace temp;  --临时表空间不需要备份
     6 
     7 Starting backup at 14-OCT-10
     8 
     9 using channel ORA_DISK_1
    10 
    11 using channel ORA_DISK_2
    12 
    13 RMAN-00571: ===========================================================
    14 
    15 RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    16 
    17 RMAN-00571: ===========================================================
    18 
    19 RMAN-03002: failure of backup command at 10/14/2010 18:56:12
    20 
    21 RMAN-20202: tablespace not found in the recovery catalog
    22 
    23 RMAN-06019: could not translate tablespace name "TEMP" 

    4.备份控制文件

     1 RMAN> configure controlfile autobackup on;--自动备份控制文件置为on状态,将自动备份控制文件和参数文件
     2 
     3 old RMAN configuration parameters:
     4 CONFIGURE CONTROLFILE AUTOBACKUP OFF;
     5 new RMAN configuration parameters:
     6 CONFIGURE CONTROLFILE AUTOBACKUP ON;
     7 new RMAN configuration parameters are successfully stored
     8 
     9 注:在备份system01.dbf或system表空间时将会自动备份控制文件和参数文件,即使自动备份控制文件参数为off
    10 
    11 --单独备份控制文件及参数文件
    12 RMAN> backup current controlfile;
    13 
    14 Starting backup at 26-JAN-13
    15 using channel ORA_DISK_1
    16 using channel ORA_DISK_2
    17 using channel ORA_DISK_3
    18 channel ORA_DISK_1: starting full datafile backupset
    19 channel ORA_DISK_1: specifying datafile(s) in backupset
    20 including current control file in backupset
    21 channel ORA_DISK_1: starting piece 1 at 26-JAN-13
    22 channel ORA_DISK_1: finished piece 1 at 26-JAN-13
    23 --备份到了闪存目录
    24 piece handle=/u01/flash_recovery_area/SUN/backupset/2013_01_26/o1_mf_ncnnf_TAG20130126T085308_8j6b7nyd_.bkp tag=TAG20130126T085308 comment=NONE
    25 channel ORA_DISK_1: backup set complete, elapsed time: 00:00:03
    26 Finished backup at 26-JAN-13
    27 
    28 RMAN> 
    29 
    30 --备份数据文件时包含控制文件
    31 RMAN>  backup datafile 4 include current controlfile;
    32 RMAN> 
    33 
    34 --手动备份control文件
    35 RMAN> sql "alter database backup controlfile to ''/tmp/backup/orclcontrol.bak''";
    36 
    37 sql statement: alter database backup controlfile to ''/tmp/backup/orclcontrol.bak''
    38 
    39 RMAN> 
    40 
    41 RMAN>  sql "alter database backup controlfile to trace as ''/tmp/orclcontrol.sql''";
    42 
    43 sql statement: alter database backup controlfile to trace as ''/tmp/orclcontrol.sql''
    44 
    45 --单独备份spfile
    46 
    47 RMAN> backup spfile format '/u01/app/oracle/rmanbak/sp_%d_%U';
    48 
    49 RMAN> backup copies 2 device type disk spfile;

    5.备份归档日志文件

      备份归档日志时仅仅备份归档过的数据文件(不备份联机重做日志文件)

       备份归档日志时总是对归档日志做完整备份;

       RMAN对归档日志备份前会自动做一次日志切换,且从一组归档日志中备份未损坏的归档日志;

           RMAN会自动判断哪些归档日志需要进行备份

           归档日志的备份集不能包含其它类型的文件

     1 RMAN> backup archivelog all delete input   --delete input 删除所有已经备份过的归档日志
     2 2> format '/tmp/backup/arch_%d_%U';
     3 RMAN> 
     4 
     5 --备份指定的归档日志
     6 RMAN>  backup archivelog sequence between 50 and 120 thread 1 delete input;       
     7 RMAN> backup archivelog from time "sysdate-15" until time "sysdate-7";
     8 
     9 RMAN> backup 
    10 2> format '/u01/app/oracle/rmanbak/lf_%d_%U'
    11 3> archivelog from sequence=80
    12 4> delete input;
    13 

    使用plus archivelog时备份数据库完成的动作(backup database plus archivelog)

    1.首先执行alter system archive log current 命令(对当前日志归档)

    2.执行backup archivelog all 命令(对所有归档日志进行备份)

    3.执行backup database命令中指定的数据文件、表空间等

    4.再次执行alter system archive log current 

    5.备份在备份操作期间产生的新的归档日志

    1 --执行下面的命令,并观察备份列出的信息,可以看到使用plus archivelog时使用了上面描述的步骤来进行备份
    2 --在列出的信息的信息中并未看到以上5个步骤,感兴趣的可以查看alter日志 看看是否有相关信息
    3 RMAN> backup as compressed backupset database plus archivelog
    4 2> format '/tmp/backup/db_arc_%d_%U';
    5 RMAN>

    6.备份闪回区(未测试)

    1 RMAN> backup recovery area;
    2 
    3     --使用backup recovery area时,将备份位于闪回区且未进行过备份的所有文件,这些文件包括完整、增量备份集、自动备份的控制文件(假定使用闪回区作为备份路径时)、归档日志、数据文件的镜像副本等。闪回日志,当前的控制文件。联机重做日志不会被备份       
    4 
    5 RMAN> backup recovery files;
    6 
    7     使用backup recovery files时,将备份磁盘上未进行过备份的所有恢复文件,而不论是否位于闪回区
    8     
    9 注:使用上述两条命令时,备份目的地必须是磁带

    7.总结

      数据文件的备份集对于未使用的块可以执行增量备份,可以跳过未使用过的数据块来进行压缩备份;

      对于控制文件、归档日志文件、spfile文件则是简单的拷贝,并对其进行打包压缩而已。

  • 相关阅读:
    Django框架-模板层
    Django框架-路由层
    Django流程-以登录功能为例
    常见的MySQL慢查询优化
    函数之二
    python 之 函数
    python 文件操作
    set dict tuple 内置方法
    leetcode
    python 之 数据类型初接触
  • 原文地址:https://www.cnblogs.com/polestar/p/2919175.html
Copyright © 2011-2022 走看看