8, OCP - backup with rman

944 views

Published on

RMAN backup

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
944
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

8, OCP - backup with rman

  1. 1. Backup with RMAN
  2. 2. Overview• Recovery Manager(RMAN)是oracle官方推荐的备份恢复工具, RMAN 的使用对于DBA而言至关重要. 这一章讲述如何使用RMAN进行数据 库的备份: – 数据库一致性备份; – 数据库非一致性备份; – 增量备份; – 备份自动化; – 管理备份, 监控闪回区; – 定义和应用保留规则; – 镜像文件备份; – 启用快速增量备份; – 双重备份(duplex backups), 备份备份集; – 归档备份; – 多段, 压缩, 加密备份; – 备份报告和维护; – 备份设置和优化; – 备份通道
  3. 3. Backup Concepts & Terminology• User-managed vs. Server-managed 通过执行操作系统命令进行的备份被称为用户管理的备份, 通过RMAN执行的备份 则称为服务器管理备份.• Closed vs. Open 在数据库关闭的情况下执行的备份被称为closed backup, 也被称为一致性备份 (consistent)、冷备份(cold) 、线下备份(offline); 当数据库处在打开状态下进行的备 份称为open backup, 也被称为非一致备份(inconsistent) 、热备份(hot) 、在线备份. Tip: 热备份只有当数据库处在归档模式下可用. 如果数据库处在非归档模式, 只能 进行冷备.• Whole vs. Partial(整体 vs. 部分) 全部备份和部分备份, 前者对所有的数据文件和控制文件进行备份, 后者则备份这 些文件的子集. 在大多数情况下, partial类型的备份只有当数据库处在归档模式下才 能够执行.• Full vs. Incremental(全量 vs. 增量) full类型会备份目标文件所有被使用的数据块, 而incremental备份则只会备份那些从 上次备份开始被修改过的数据块. Tip: 可以使用以上备份类型的任意组合, 常见的情况是在按周/月进行 closed/whole/full备份, 每天则进行open/whole/incremental备份.• Backup set vs. Backup piece(备份集 vs. 备份片) 备份片在物理上存储为一个文件, 备份片只属于一个备份集. 通常情况下一个备份 集仅包含一个备份片, 只有当使用MAXPIECESIZE参数设置了备份片的大小时才有可 能在一个备份集下面创建多个备份片.
  4. 4. RMAN Overview• Files RMAN可以备份如下文件: 数据文件 控制文件 归档日志文件 SPFILE 备份片(backup set piece) RMAN不能备份如下文件: 临时文件(Tempfiles) 在线重做日志文件 密码文件 PFILE Oracle Net配置文件• Types RMAN能够生成以下三种类型的备份 – 备份集(backup set) 备份集是RMAN专有的备份格式, 一个备份集中可以实现对多个数据库文件的备份, 对于数据文件 仅包含已经被使用的数据块(如果数据块不属于任何对象, 不会写入备份集中),这大大减小了备份 文件的大小. 备份集可以是全量的也可以是增量的. 在物理上, 备份集由多个备份片(piece)组成. – 压缩备份集(compressed backup set) 压缩格式下的备份集. – 镜像拷贝(image copy) 等同于输入文件, 但仍需要使用RMAN才能进行数据库的还原 (restore)操作• Channels RMAN备份和恢复操作由服务端通道进程执行, 通道进程分为两种类型: 磁盘通道 和 磁带通道, 分别写不同的介质.• RMAN Metadata Repository RMAN元数据用于描述已经发生的备份操作, 比如备份集由哪些备份片组成, 备份片的位置和 名称; 镜像拷贝文件的位置等. RMAN元数据保存在控制文件中, 也可以选择保存在数据库中.
  5. 5. RMAN In Action - Consistent Backup• 在11g版本中所有的RMAN备份操作都由backup命令执行, 可以通过rman交互式命 令, rman脚本或者database control界面执行.• Consistent Backup 执行一致性备份要求数据库处在mount状态, 这是因为RMAN需要读取控制文件以 确定数据文件的位置. 下面是一段执行cold/whole/full备份的RMAN脚本: run { shutdown immediate; startup mount; allocate channel d1 type disk; backup as backupset database format /opt/oracle/backup/offline_full_whole_%d_%U.bus; alter database open; } 1-2 关闭并重启数据库到mount状态 3 分配一个通道进程, 这里使用磁盘类型 4 使用备份集的方式备份整个数据库, 指定备份文件的位置 5 打开数据库 使用如下方式执行, rman交互式命令: – 使用rman target sys/passwd@ocpdemo登录, 如果是操作系统验证直接使用rman target / – 依次输入花括号中的命令. rman脚本: – 首先将该脚本保存在文本文件中比如offline_full_whole.rman – 切换到脚本文件所在目录, 运行rman target sys/passwd@ocpdemo @ offline_full_whole.rman
  6. 6. RMAN In Action - Explained• 备份集和备份片 使用RMAN进行一次备份操作时, 通常会生成多个备份集, 这由RMAN自己决定或者 通过人工的干预, 比如运行backup命令时指定filesperset选项. 通常情况下备份集下 面只有一个备份片, 可以通过登录RMAN执行list backup命令查看备份信息, 或者通 过视v$backup_set和v$backup_piece查看.• 存储位置 可以通过backup命令的format选项指定备份片文件的全路径, 需要在该路径中使用 占位符, 比如: – %d 数据库名称 – %U 保证备份片文件名的唯一性 – %s 备份集的序号 – %p 备份片在当前备份集中的序号 – %c 对于多路复用备份(multiplex backups), 表示拷贝的序号. 此占位符对于指定多路复 用备份的文件格式是必须的. 如果不指定format选项, 那么备份文件将会默认存储在闪回区, 相应的目 录结构将会被自动创建, 比如: [oracle@localhost flash_recovery_area]$ tree . . `-- OCPDEMO `-- backupset `-- 2013_03_05
  7. 7. RMAN In Action - Open Backup• 在最简单的情况下, 可以使用backup database命令执行一次安全可靠的热 备份操作. 下面是一个热备份的示例: run { allocate channel t1 type disk; allocate channel t2 type disk; backup as compressed backupset filesperset 4 database; backup as compressed backupset archivelog all delete all input; } 1-2 分配两个通道进程(t1/t2), 依据服务器的资源可以提升备份的 速度 3 压缩备份整个数据库, 包括数据文件/控制文件/ SPFILE等. filesperset 4指定一个备份集最多包含4个文件, 这样可以缩小 备份文件的大小提升数据库恢复的速度. 4 压缩备份归档日志文件, 完成后删除归档日志• 备份操作可以针对某个表空间, 数据文件, 或者符合某种模式的归档日志文 件, 示例: backup as backupset format /backup/orcl/df_%d_%s_%p tablespace gl_tabs; backup as compressed backupset datafile 4; backup as backupset archivelog like /u01/archive1/arch_1%;
  8. 8. RMAN In Action - Incremental Backup• 增量备份是指在某一个备份点的基础上, 对发生改变的数据进行备份. 与全 量备份相比, 增量备份需要的备份时间更短, 磁盘空间使用更少.• level 0 vs. level 1 level 0的增量备份相当于全量备份, 使用如下格式: backup as backupset incremental level 0 database; level 1的增量备份又分为两种类型: – differential 在前一个level 1备份的基础上进行增量备份, 如果不存在level 1的增量备份则基于 level 0备份. 示例: backup as backupset incremental level 1 database; – cumulative 在前一个level 0备份的基础上进行增量备份, 格式如下: backup as backupset incremental level 1 cumulative database; Tip: 进行level 1增量备份时, 如果之前没有level 0备份, 那么当前的level 1备份实质 上执行的是level 0备份.
  9. 9. RMAN In Action - Incremental Backup• Block change tracking 默认情况下, 增量备份对于备份速度的提升并没有那么显著, 因为增量备份需要扫描数据库文件的内容已发现发生改变 的数据块, 这会花费大量的时间. 可以通过开启”追踪数据块 变化”以加速增量备份, 通过如下命令开启: alter database enable block change tracking using file /opt/oracle/oradata/change_tracking.dbf; 如果不指定追踪文件的位置, 该文件默认会创建在 DB_CREATE_FILE_DEST参数指定的目录. 通常情况下该文件 的大小在10M左右. 可以通过v$backup_datafile视图查看启用数据块跟踪的效果, 使用如下SQL: select file#, datafile_blocks, (blocks_read / datafile_blocks) * 100 as pct_read_for backup from v$backup_datafile where used_change_tracking=YES and incremental_level > 0;
  10. 10. RMAN In Action - Image Copies• RMAN镜像备份通过数据块的逐个拷贝实现, 备份 的结果是与数据文件、控制文件、归档日志文件 内容完全相同的拷贝. 镜像备份不能使用备份集 相关的特性, 比如增量备份、压缩、设置备份片 大小等. 镜像备份的一个好处是还原数据库的速 度非常快, 来自官方的建议是保留一份数据库的 镜像备份, 以及自该备份开始的归档日志文件.• 镜像备份只能用于数据文件、归档日志文件, 控 制文件, 不用使用于SPFILE. 示例: backup as copy database; backup as copy archivelog all delete all input;
  11. 11. RMAN In Action - Protect Backups• RMAN支持对备份进行备份, 通常会将这种备份最 终保存到磁带. 使用下面的命令实现备份的多路 复用: backup as backupset device type disk copies 2 database format /opt/oracle/backup/%s_%p_%c.bus‘; 该命令会对数据库进行备份, 并产生额外的一份 拷贝.• 闪回区备份 – backup recovery area; 基于默认的设置将闪回区备份到磁盘; – backup recovery files; 备份与数据库恢复相关的文件(包括闪回区文件以及不在 闪回区的文件).
  12. 12. RMAN In Action - Backup Parallelizing• RMAN备份支持并行操作, 最常见的情形是分配多个磁盘通道进程. RMAN备份的并行度由以下的几个因素决定: – 通道进程的个数 通道进程的数量是对备份并行度的硬限制. – 备份集的个数 – 输入文件的个数 并行度不能超过输入文件的个数, 除非多段备份被使用. 示例: run {allocate channel t1 type sbt; allocate channel t2 type sbt; allocate channel t3 type sbt; allocate channel t4 type sbt; backup database files per set 8;} 这里分配了4个通道进程, 限制了并行度不能超过4; 现在假设数据库包括 控制文件在内总共有100个文件, 那么就可以分为13个备份集, 最终的并行 度是4; 如果只有20个文件, 那么将产生3个备份集, 最终的并行度是3.
  13. 13. RMAN In Action - Configure RMAN Defaults• 登录RMAN之后可以使用show all指定查看所有的配置项, 这里显示的配置项均是默 认值:• 使用configure指令进行配置, 示例: CONFIGURE DEVICE TYPE DISK PARALLELISM 4 BACKUP TYPE TO BACKUPSET; -- 进行磁 盘备份集备份时, 默认启动4个通道进程(并行度4); CONFIGURE BACKUP OPTIMIZATION ON; -- 启用备份优化, 如果检查到某文件有足够 的备份则不再进行备份; CONFIGURE RETENTION POLICY TO REDUNDANCY 3; -- 默认设置下RMAN保存文件的 一份拷贝, 这里设置为3表示保存文件的3份拷贝. CONFIGURE RETENTION POLICY TO RECOVERY WINDOW of 90 DAYS; -- 在此规则 下, RMAN需要保存所有数据文件在过去90天内的至少一个备份.• 使用CLEAR恢复到默认的配置, 示例: configure device type disk clear;
  14. 14. RMAN In Action - Managing & Monitoring• list, report & delete – list命令用于查看备份集或者镜像备份, 示例: list backup; -- 查看所有的备份集 list copy; -- 查看所有的镜像拷贝 list backup of database; -- 查看整个数据库的备份集, 包括全量和增量 list backup of datafile 1; -- 查看包含数据文件1的备份集 list backup of tablespace users; -- 查看包含表空间users的备份集 list backup of archivelog all; -- 查看所有归档日志的备份集 list copy of archivelog from time=‘sysdate - 7’; -- 查看过去7天内产生的归档日志镜像备份 list backup of archivelog from sequence 1000 until sequence 1050; -- 查看归档日志备份集, 该归档日志 包含1000到1500的日志切换序号. – report命令用于判断哪些数据库文件需要进行备份, 这需要根据当前的RMAN元数据和保留规则(retention policy)进行判断. 示例: report schema; -- 列出组成数据库的数据文件 report need backup; -- 根据保留规则列出所有所有需要备份的数据文件和归档日志文件 report need backup days 3; -- 列出所有在过去3天内没有进行备份的文件 report need backup redundancy 3; -- 列出所有少于3个份备份的文件 report obsolete; -- 根据当前保留规则列出所有不需要的备份集和镜像 report obsolete redundancy 2; -- 列出所有大于2个备份的备份集或者镜像 – delete 删除备份集或者镜像备份, 示例: delete obsolete; -- 根据保留规则, 删除所有不需要的备份 delete obsolete redundancy 2; -- 删除大于2个备份的备份集或者镜像 delete backupset 4; -- 删除id为4的备份集 delete copy of datafile 6 tag file6_extra; -- 删除数据文6的镜像
  15. 15. RMAN In Action - DPV• 数据库在启动时会读取控制文件中的备份元数据, 并作为视图供用户查询. 这些视图包括: – v$backup_files RMAN备份的文件, 包括数据文件、spfile、控制文件 及归档日志文件. – v$backup_set, v$backup_piece 备份集, 备份片信息 – v$backup_redolog, v$backup_spfile, v$backup_datafile 分别表示归档日志、SPFIL及数据文件的备份信息 – v$backup_device 连接到RMAN的SBT设备 – v$rman_configuration RMAN配置, 对于配置为默认值的项不包含
  16. 16. RMAN In Action - Backup Crosschecking• list, report等命令会读取备份原数据并将备份信息展 示出来, 但是它们不会去检查磁盘或者磁带设备上 是否真实存在这些备份文件. RMAN提供了 crosscheck命令以实现此功能, 示例: crosscheck backup of database; 该命令会读取所有与整数据库备份相关的元数据, 并检查备份文件是否存在. 如果文件不存在则标识 备份状态为EXPIRED, 使用crosscheck backup/copy分别 检查所有的备份集和镜像. 删除过期的备份集: delete expired backupset; 注意: 与delete obsolete命令不同的是, 此命令仅更新 RMAN元数据, 不会删除备份文件(已经不存在) .
  17. 17. END

×