技术开发 频道

rman使用小记

  4. Recovery Manager Architecture

  1. Overview of RMAN Architecture

  The RMAN client application directs database server sessions to perform all backup and recovery tasks.

  If more than one channel is allocated, then RMAN can execute certain commands in parallel so that all of the channels' target database sessions are concurrently executing an RPC call.

  2. RMAN Command Interface

  存储script:

  REPLACE SCRIPT b_whole_l0

  {

  # back up whole database and archived logs

  BACKUP

  INCREMENTAL LEVEL 0

  TAG b_whole_l0

  FILESPERSET 6

  DATABASE PLUS ARCHIVELOG;

  }

  执行:

  RUN { EXECUTE SCRIPT b_whole_10 };

  查看:

  SQL> SELECT * FROM rman.RC_STORED_SCRIPT;

  3. RMAN Repository

  注册DB:

  在catalog中注册数据库,registration。注册多个数据库时,要求数据库有不同的DBID,但允许有相同name的数据库。如果通过os拷贝形成的新数据库,则与原来的db有相同的dbid。这是可以使用rman 的duplicate 命令注册新db,或者使用DBNEWID改变dbid.

  同步recovery catalog:

  RMAN会自动检测并执行full / partial 同步。

  也可以执行命令:RESYNC CATALOG;

  至少每CONTROL_FILE_RECORD_KEEP_TIME天,执行一次。因为控制文件的部分信息是周期被reused,超过这个周期,控制文件中的部分信息有可能会被覆盖。

  控制文件中有两部分内容:

  circular reuse records:

  Log history

  Archived redo logs

  Backups

  Offline ranges for datafiles

  noncircular reuse records:

  比如datafiles, online redo logs, and redo threads.

  对于Recovery Without a Catalog:

  建议Enable the control file autobackup feature,景象控制文件,Keep all Recovery Manager backup logs

  5. RMAN Concepts I: Channels, Backups, and Copies

  1. RMAN Automatic and Manual Channel Allocation

  什么是channel:

  Rman channel 代表传输到某个device type的数据流stream以及相应的server session,每个channel对应一个server session。

  根据如下配置自动分配channel:

  CONFIGURE DEVICE TYPE (DISK) PARALLELISM (3) --每次分配几个channel;

  CONFIGURE DEFAULT DEVICE TYPE TO (DISK or SBT) –默认device type

  CONFIGURE CHANNEL DEVICE TYPE

  (DISK RATE 5M FORMAT="?/oradata/%U" MAXOPENFILES=20;) –模版

  CONFIGURE CHANNEL 3 DEVICE TYPE DISK MAXPIECESIZE = 900K; --某个channel的特别设置

  RMAN> SHOW DEVICE TYPE; --查看

  或手工分配:

  RUN

  {

  ALLOCATE CHANNEL c1 DEVICE TYPE sbt;

  ALLOCATE CHANNEL c2 DEVICE TYPE sbt;

  BACKUP DATAFILE 5,6;

  }

  返回到默认值:

  CONFIGURE DEVICE TYPE DISK CLEAR;

  2. Backup Sets

  逻辑概念,可以包括1个或多个backup pieces(os 文件)。压缩特点:即只备份HWM以下的block,当然数据文件镜像是备份全部。

  BACKUP DATABASE;

  BACKUP TABLESPACE users, tools;

  BACKUP (SPFILE) (CURRENT CONTROL FILE); --备份spfile/controlfile

  BACKUP BACKUPSET 12; --备份backupset

  BACKUP DATAFILECOPY '/tmp/system01.dbf'; --备份数据文件镜像

  --备份归档日志:

  RMAN> BACKUP ARCHIVELOG ALL DELETE INPUT;

  因为oracle不能直接将日志归档到tape,所以用rman将归档从disk备份到tape。如果指明delete input, rman会为每一个log seq num 备份一个copy,并且删除disk上的文件。

  Delete all input, like… rman会删除disk上符合条件的归档copy。

  恢复的时候,rman会自动将需要归档从tape上restore到disk.

  --9i rman会搜索不同的achieve distinction, 如果有损坏,则备份其他目录相应文件:

  BACKUP ARCHIVELOG FROM SEQUENCE 121 UNTIL SEQUENCE 125;

  --如果不指定until的话,rman会自动swich 当前在线日志,并且backup 归档。

  实际上rman 执行了ALTER SYSTEM ARCHIVE LOG CURRENT

  -- plus archievelog 表示备份的数据文件可以被archivelog 恢复到一致状态,过程,类似于热备:

  Runs ALTER SYSTEM ARCHIVE LOG CURRENT

  Runs BACKUP ARCHIVELOG ALL.

  Backs up the files specified in the BACKUP command.

  Runs ALTER SYSTEM ARCHIVE LOG CURRENT.

  Backs up any remaining archived redo logs generated during backup.

  ¬--如果设置了backup optimization, rman会跳过已经备份的archivelogs

  -- Multiplexed(多元)Backup Sets

  同时备份多个数据文件,并且混合在只含有一个backup piece的backup set中。

  FILESPERSET:一个backup set中包含几个数据文件

  MAXOPENFILES:rman可以同时最多read几个数据文件

  -- Duplexed(复式的) Backup Sets

  BACKUP DEVICE TYPE DISK COPIES 3 DATAFILE 7 FORMAT '/tmp/%U','?/oradata/%U','?/%U';

  复制3个copy,但是属于同一个backup set

  --Parallelization of Backups

  BACKUP

  (DATAFILE 1,2,3

  FILESPERSET = 1

  CHANNEL ORA_DISK_1) --3个backup sets

  (DATAFILECOPY '/tmp/system01.dbf', '/tmp/tools01.dbf'

  FILESPERSET = 2

  CHANNEL ORA_DISK_2) --1个backup sets

  (ARCHIVELOG FROM SEQUENCE 100 UNTIL SEQUENCE 102 THREAD 1

  FILESPERSET = 3

  CHANNEL ORA_DISK_3); --1个backup sets

  -- Backups of Backup Sets

  BACKUP COPIES 2 DEVICE TYPE sbt BACKUPSET ALL;

  BACKUP BACKUPSET COMPLETED BEFORE 'SYSDATE-7' DELETE INPUT;

  -- backup piece/sets的文件名,大小, I/O Rate

  自动生成或者,FORMAT = '/tmp/users_%u%p%c';

  MAXPIECESIZE限制每个piece的最大size

  MAXSETSIZE限制每个SET的最大size

  Rate: 每秒读取的bytes

  -- 备份类型

  Full backup: 不是增量备份,只备份HWM之下的block。归档和控制文件备份所有blocks。区别于whole备份和0级备份(区别仅在于full不会被包括在增量策略中)。不影响其他的增量备份。

  Incremental Backups:只备份上一次增量备份后改变的blocks。需要一个full backup or incremental level 0 backup.

  Rman使用增量备份恢复的时候,不需要restore a base incremental backup。比如可以restore一个non-incremental的image copies, rman可以用增量备份恢复文件。

  使用增量备份的原因:

  1) 节省空间,网络带宽

  2) 可以恢复通过nologging建立的对象(对比变化的数据块)。

  3) 减小noarchivelog数据库的备份大小,不必每次都作whole备份。只能在正常关闭后作备份。

  增量备份种类:n级增量备份以下两种情况

  1) 差异增量(differential):备份最近一次n级或者更低级备份以来改变的blocks

  2) 积累增量(cumulative):备份最近一次n-1级或者更低级备份以来改变的blocks。更倾向于这种备份,因为恢复的时候只需要应用到少量的增量备份集。

  原理:

  因为增量备份也需要读取所有blocks以决定备份哪些blocks(通过比较当前block的scn与父备份的scn作判断),所以花费的时间和full backup相当。

  策略:

  比如full or level 0 backup monthly, level 1 weekly, level 2 daily. 这样每次恢复最多只需要一天的redo. 可以在有50%数据块改变后,作一次level 0;

  SELECT FILE#, INCREMENTAL_LEVEL, COMPLETION_TIME, BLOCKS, DATAFILE_BLOCKS

  FROM V$BACKUP_DATAFILE

  WHERE INCREMENTAL_LEVEL > 0 AND BLOCKS / DATAFILE_BLOCKS > .5

  ORDER BY COMPLETION_TIME;

  比如只作了level1, 当最近依次level 1的大小是level 0的50%,则作一次level 0;

  Online: 在线备份,不需要使用ALTER TABLESPACE BEGIN BACKUP命令。Rman使用不同的方法保证一致性。

  Closed: mounted but not open。分为一致和不一致两种。

  Consistent: 正常关闭后,mount时作的备份

  Inconsistent: open或者非正常关闭后,mount时作的备份。需要恢复到一致状态。

  备份如下类型文件:

  Database, tablespace(除了locally-manged temporary tablespace),datefiles, cotrolfiles, archived logs, server parameter file, backup sets

  不备份如下类型文件:

  Online redo logs,

  Transported tablespaces before they have been made read/write,

  Client-side initialization parameter files or noncurrent server parameter files

  locally-manged temporary tablespace

  3. backup error

  NOT BACKED UP SINCE使得备份从出错处继续。

  SET MAXCORRUPT允许最大的坏块数。Rman将备份时碰到的坏块reformat header并写入backup set,同时在controfile中记录。可以通过V$BACKUP_CORRUPTION and V$COPY_CORRUPTION查到。

  4. Control File and Server Parameter File 自动备份

  如果CONFIGURE CONTROLFILE AUTOBACKUP on, 则在以下情况下自动备份:

  1) 执行backup or copy

  2) 在run中出现backup or copy

  3) 当数据库结构改变。建议CONFIGURE CONTROLFILE AUTOBACKUP FOR DEVICE TYPE DISK 改变成非disk type

  4) 备份datefile 1的时候?

  恢复:

  RESTORE CONTROLFILE FROM AUTOBACKUP

  5. Backup 保留策略

  Obsolete means "not needed," whereas expired means "not found."

  CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS; 7天内保证恢复

  保证存在这样的backup: SYSDATE - (SELECT CHECKPOINT_TIME FROM V$DATAFILE) >= 7

  (互斥)

  CONFIGURE RETENTION POLICY TO REDUNDANCY 2;

  CONFIGURE RETENTION POLICY TO NONE; 关闭

  REPORT OBSOLETE 显示过期备份

  DELETE OBSOLETE 删除过期备份(可以在每周的自动script中运行)

  防止被标记为obsolete:

  # exempts the backup from retention policy until last day of 2002,不包括log

  BACKUP DATABASE KEEP UNTIL TIME "TO_DATE('31-DEC-2002', 'dd-mon-yyyy')" NOLOGS;

  # alters status of backup set 231 from KEEP to NOKEEP,可以被obsolete

  CHANGE BACKUPSET 231 NOKEEP;

  # specifies that this backup and the logs required to recover it are indefinitely exempt

  # from the retention policy,不保留logs,说明备份一定是一致的备份。

  BACKUP TABLESPACE users KEEP FOREVER NOLOGS;

  6. Backup Optimization

  启动备份优化后,如果发现相同的文件已经备份过,在不影响备份策略的情况下,则跳过。

  7. Restartable Backups

  备份失败后,可以从某个时间起,只备份没有备份过的文件。

  The unit of restartability is a single backup set.

  BACKUP DATABASE FILESPERSET = 8;

  BACKUP DATABASE NOT BACKED UP SINCE TIME 'SYSDATE-1';

  8. Image Copies

  同os拷贝一样,只不过通过server session 完成,会检查坏块,并且记录信息到控制文件中。只能拷贝到disk.

  如果想用copy替换数据文件,可以用switch命令。相当于alter database rename datafile;

  用户自行的copy: CHANGE ... UNCATALOG

  Tag:

  BACKUP COPIES 1 DATAFILE 7 TAG foo

  SWITCH DATAFILE 3 TO DATAFILECOPY TAG mondaypmcopy;

  9. Tests and Integrity Checks for Backups

  BACKUP VALIDATE; 实际备份之前作测试。

  检查物理坏块,记录到control file and in the alert.log。但是不能检查所有类型的坏块

  可以查询V$BACKUP_CORRUPTION and V$COPY_CORRUPTION

  Rman备份的时候,会读取block’ header and footer,判断块是否是fractured,如果是则重读。

  6. RMAN Concepts II: Restore, Recovery, and Duplication

  1. Restoring Files with RMAN

  Restore 到默认的位置,覆盖同名文件

  或者set newname,将数据文件restore到新的路径,保留当前默认路径的文件。如果指定switch,则修改control file。

  SET NEWNAME FOR DATAFILE '?/oradata/trgt/tools01.dbf' TO '/tmp/tools01.dbf';

  RESTORE DATAFILE '?/oradata/trgt/tools01.dbf';

  SWITCH DATAFILE '/tmp/tools01.dbf' TO DATAFILECOPY '?/oradata/trgt/tools01.dbf';

  (类似于ALTER DATABASE RENAME FILE)

  Rman相比backups,优先使用copy。如果有多个backup/copy,则根据是否指定until选择最新的。

0
相关文章