- vs. 存储功能备份
- 备份的全面损坏的风险
- 备份的性能与负荷
- 管理性
- 破损块对策
- ASMrebalance的影响
- restore& recovery的灵活性
D2D(Storage Backup) vs. Oracle Recovery Manager
|
D2D |
RMAN |
| 备份的全部损坏风险 |
× 有全部损坏风险 |
◎ 可以通过高速增量备份回避 |
| 备份的
性能与负荷 |
消費资源 |
◎ 仅限存储的资源 |
△ 使用服务器的资源 |
| 总I/O量 |
○ 仅限sector单位中的差分 |
○ 仅限块单位中的差分 |
| 保持数据总量 |
△ 与正式volume同等的尺寸 |
○ 可以压缩、减少 |
| Redo生成量 |
× 备份中増加 |
◎ 与一般的情况相同 |
| 管理性 |
× 人工管理比较麻烦 |
○ 自动管理 |
| 泛用性 |
△ 依赖于存储供应商 |
○ 从H/W结构中独立出来 |
| 破损块对策 |
× 不可以区分正常or破损 |
◎ 备份时可以检测 |
| ASMrebalance的影响 |
× 差分数据量大幅増加 |
◎ 没有影响 |
| 备份的加密 |
× 因为是正式volume的拷贝,所以无法加密 |
○ 可以加密 |
| 价格 |
× 数千万~数亿 |
○ EE标准功能 |
| restore& recovery |
灵活性 |
△ 最小也是LU单位 |
○ 可以对应块单位 |
| 管理性 |
× 依赖于DBA的技能 |
○ 通过建议器自动判断 |
备份方式的讨论結果 重新理解RMAN的优点
- 上一页的比较表是D2D中长期使用某巨大系统备份的优秀的Sier的同志们评价的结果。
–9ià11g的升级案例
–决定了大部分D2D的备份对策的状态
–通过联合使用OCS & SC & Dev ,仅过2个多月,就采用了RMAN
之后我将介绍RMAN的优点
D2D(Disk to Disk)备份
顺序
通过RMAN进行的高速增量备份
使用顺序
D2D vs. RMAN(高速增量备份)
使用顺序的比較与D2D的缺点
–D2D虽然给客户瞬间就可以完成备份的错觉。但实际上是后台进行数据拷贝
- 然后客户会提出这样的疑问,觉得二者是完全相同的!!
–使用D2D备份时,正式volume坏了的话,是否可以修复?
NG:因为会被覆盖,所以没有有效备份
必须有两个备份or tape备份
一方面,RMAN的分割增量与更新的Phase也没有问题
D2D(Disk to Disk)备份
同步中的发生故障的话就无法修复
备份的性能与负荷
消費资源

总I/O量
Block Change Tracking 的结构
BCT File的尺寸
–数据库的尺寸以及Redo的线程数的比例
–与数据库更新频率无关
–初始尺寸10MB
–通常、数据库的块尺寸(?)约1/30,000 x节点数
- 300GB以内为10MB、600GB时为20MB+α
–不依赖于数据文件的尺寸(每个都在320KB以上)
=》 因为bitmap管理中尺寸都较小,所有没有较大的I/O
- 对BCT File写出时,不仅DBWR,CTWR也会执行事务与非同步
–不会影响Commit的响应时间
–DBWR对数据文件写入之前是否需要一起使用?
–经过Large Pool(不足时的Shared Pool)内的「CTWR dba buffer」
SQL> select pool,name,sum(bytes)/1024 from v$sgastat where name like 'CTWR';
POOL NAME SUM(BYTES)/1024
-------------------- ------------------ ---------------
large pool CTWR dba buffer 1392
Block Change Tracking 的结构
备份时的I/O尺寸
–高速增量备份时仅仅读取更新块的操作
–变成随机I/O,通过完整备份,比较多块I/O的话吞吐量就会降低
–但是根据更新量不同,需要查看将I/O尺寸最优化的操作
备份的性能与负荷
保持数据总量

Redo生成量
备份的性能与负荷
Begin backup命令的高速化(虽然与RMAN无关)
- Oracle 9i Database中、Begin backup命令的响应时间较缓慢的问題(Oracle Database 10g Release1中解决完成)
–KROWN#120942
- 缓冲区高速缓存尺寸、数据文件数的比例,BEGIN BACKUP也需要时间
- 例) R9.2.0.8中,一个数据文件的Begin Backup所需要的时间
–缓冲区高速缓存10GB时:約0.06秒
–缓冲区高速缓存24GB时:約0.15秒(11gR2中0.00秒)
管理性 数据文件以外的备份相关文件

RMAN> DELETE OBSOLETE命令的修正
- RMAN的DELETE OBSOLETE命令是遵循删除对策,删除归档日志的命令
–可能出现无视删除对策,没有传送到Standby Site(或者没有完成应用)的归档日志被删除的情况
–通过Bug#12357315修正
破损块对策 是否是可以恢复的备份?
RMAN的块破损检测 默认设定中,检测到一个块破损的话就终止
RMAN> -- 执行增量备份
backup incremental level 1 tablespace RTEST1;
Backup开始(开始时间: 12-07-23)
使用channelORA_DISK_1
使用channelORA_DISK_2
channelORA_DISK_1: 开始设定增量水平1的数据文件备份
channelORA_DISK_1: 在备份设定中指定数据文件
入力数据文件文件番号=00010 名前=+DATA/o11g/datafile/rtest1.282.789398885
channelORA_DISK_1: 启动piece 1(12-07-23)
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03009: backup命令(ORA_DISK_1channel上) 在07/23/2012 16:22:00失败了
ORA-19566: 超过了破损块的限制0(文件+DATA/o11g/datafile/rtest1.282.789398885)
SQL> select * from V$DATABASE_BLOCK_CORRUPTION;
FILE# BLOCK# BLOCKS CORRUPTION_CHANGE# CORRUPTION_TYPE
---------- ---------- ---------- ------------------ ---------------------------
10 14980 1 6681461 FRACTURED
RMAN> --特定块的修復
recover datafile 10 block 14980 ;
开始recover (开始时间: 12-07-23)
使用channelORA_DISK_1
使用channelORA_DISK_2
Stand by搜索完成,restore了1个块
Media Recovery开始
Media Recovery完成。消耗时间: 00:00:01
recover完成 (完成时间: 12-07-23)
SQL> --查看破损对象
SELECT SEGMENT_TYPE, OWNER||'.'||SEGMENT_NAME "SCHEMA.TABLE"
FROM DBA_EXTENTS
WHERE 10 = FILE_ID
AND 14996 BETWEEN BLOCK_ID AND BLOCK_ID+BLOCKS -1 ;
SEGMENT_TYPE SCHEMA.TABLE
------------- -------------
TABLE RUSER.RTBL1
多个块出现破损时的注意事项
需要重复破损块的次数、以及下一个处理
开始备份
检测块破损 终止备份
修复破损块
可以设定破损块检测数的上限(MAXCORRUPT)
RMAN> -- 总之先无视,完成备份。
RUN
{
SET MAXCORRUPT FOR DATAFILE 10 TO 128 ;
backup incremental level 1 tablespace RTEST1;
}
MAXCORRUPT的弱点
- 通过设定MAXCORRUPT,可以一边检测多个快破损一边完成备份
–已检测到的破损块可以通过以下命令来一起修复
RMAN> RECOVER CORRUPTION LIST;
- 但是,备份是否是正常的呢?
- 重新执行一次高速增量备份,是否可以备份修复完成的状态呢?
- 由于以下两个原因,可能会出现无法获得修复完成的块的备份的情况。
–因为RMAN的backup完成所以BCT的版本切换了
- 由于MAXCORRUPT设定,即使检测到块破损,如果backup命令正常完成的话,通过切换BCT的版本,就无法获得同样范围的备份。
–RMAN的块修复没有在BCT中tracking
- 通过RMAN的recover corruption命令修复破损块的I/Oは、因为没有在BCT中tracking,只要应用没有更新,就不会对块进行高速增量备份
- 通过与其他Oracle的数据破损对策(ASM镜像等)与的併用
–备份时时将检测到的破损块数最小化
–MAXCORRUPT的设定是默认的
–检测到2次时(循环)对数据库整体执行VALIDATE
–备份时如果检测到了破损块就自动修复
–BCT文件中tracking完成的块全部修复完成(高速增量备份对象的块)
通过BCT查看tracking完成的块
SQL> update RTBL1 set COL2='hoge' where COL1=100;
commit;
select dbms_rowid.rowid_relative_fno(rowid,'SMALLFILE') "FNO", dbms_rowid.rowid_block_number(rowid,'SMALLFILE') "BNO"
from RTBL1 where COL1=100;
FNO BNO
---------- ----------
10 146
variable FNO number;
execute :FNO := 10
select B.* from X$KRCFDE A, X$KRCBIT B
where A.FNO = B.FNO and A.FNO = :FNO and A.CURR_VERCNT = B.VERCNT ;
ADDR INDX INST_ID CTFBNO VERCNT VERTIME CSNO FNO BNO BCT
---------------- ---------- ---------- ---------- ---------- -------- ---------- ---------- ---------- ----------
00002B7E775BAED8 2519 1 4096 16 12-07-23 1 10 144 4
===> 144~148(144+4)的块被BCT File追踪了。
ASMrebalance的影响 与之前备份你的差分数据量的差异
查看BCT File中是否完成tracking(4
本环境中,因为Fileno=3是UNDO表区域,所以推测为UNDO表区域的変更已经被Tracking了。
SQL> -- 将BCT有效化
ALTER DATABASE ENABLE BLOCK CHANGE TRACKING USING FILE '+DATA(CHANGETRACKING)' REUSE;
SQL> -- 有效化完成之后的Bitmap Extent供应商的状态
set linesize 150 pagesize 5000
select CTFBNO, FNO, VERCNT, to_char(VERTIME, 'YYYY/MM/DD HH24:MI:SS'),
HIST_FIRST, HIST_LAST, HIST_EXTCNT, HIST_VERCNT, HIST_VERTIME,
LOW, HIGH from X$KRCFBH;
CTFBNO FNO VERCNT TO_CHAR(VERTIME,'YY HIST_FIRST HIST_LAST HIST_EXTCNT HIST_VERCNT HIST_VER LOW HIGH
---------- ---------- ---------- ------------------- ---------- ---------- ----------- ----------- -------- ---------- ----------
2304 0 0 0 0 0 0 0 0
2368 0 0 0 0 0 0 0 0
2432 3 1 2012/06/18 19:03:39 0 0 0 0 0 0
2496 0 0 0 0 0 0 0 0
2560 0 0 0 0 0 0 0 0
2624 0 0 0 0 0 0 0 0
本环境中、Fileno=9,构成制成段的SSD_TBS_1表区域的数据文件
SQL> -- 制成一个段。
create table TEST1 (col1 number) segment creation immediate tablespace SSD_TBS_1;
SQL> -- 是否完成tracking
select CTFBNO, FNO, VERCNT, to_char(VERTIME, 'YYYY/MM/DD HH24:MI:SS'),
HIST_FIRST, HIST_LAST, HIST_EXTCNT, HIST_VERCNT, HIST_VERTIME,
LOW, HIGH from X$KRCFBH;
CTFBNO FNO VERCNT TO_CHAR(VERTIME,'YY HIST_FIRST HIST_LAST HIST_EXTCNT HIST_VERCNT HIST_VER LOW HIGH
---------- ---------- ---------- ------------------- ---------- ---------- ----------- ----------- -------- ---------- ----------
2304 1 1 2012/06/18 19:03:39 0 0 0 0 0 0
2368 2 1 2012/06/18 19:03:39 0 0 0 0 0 0
2432 3 1 2012/06/18 19:03:39 0 0 0 0 0 0
......................
4352 0 0 0 0 0 0 0 0
4416 9 1 2012/06/18 19:03:40 0 0 0 0 0 0
4480 0 0 0 0 0 0 0 0
本环境中、Fileno=9是构成制成段的SSD_TBS_1表区域的数据文件
SQL> --制成一个段。
create table TEST1 (col1 number) segment creation immediate tablespace SSD_TBS_1;
SQL> --是否完成tracking
select CTFBNO, FNO, VERCNT, to_char(VERTIME, 'YYYY/MM/DD HH24:MI:SS'),
HIST_FIRST, HIST_LAST, HIST_EXTCNT, HIST_VERCNT, HIST_VERTIME,
LOW, HIGH from X$KRCFBH;
CTFBNO FNO VERCNT TO_CHAR(VERTIME,'YY HIST_FIRST HIST_LAST HIST_EXTCNT HIST_VERCNT HIST_VER LOW HIGH
---------- ---------- ---------- ------------------- ---------- ---------- ----------- ----------- -------- ---------- ----------
2304 1 1 2012/06/18 19:03:39 0 0 0 0 0 0
2368 2 1 2012/06/18 19:03:39 0 0 0 0 0 0
2432 3 1 2012/06/18 19:03:39 0 0 0 0 0 0
......................
4352 0 0 0 0 0 0 0 0
4416 9 1 2012/06/18 19:03:40 0 0 0 0 0 0
4480 0 0 0 0 0 0 0 0
SQL> -- 对ASM Diskgroup追加磁盘,执行rebalance
alter diskgroup SSDG drop disk SSDG_0001 rebalance power 11 wait;
SQL> -- 确认tracking信息是否被变更
select CTFBNO, FNO, VERCNT, to_char(VERTIME, 'YYYY/MM/DD HH24:MI:SS'),
HIST_FIRST, HIST_LAST, HIST_EXTCNT, HIST_VERCNT, HIST_VERTIME,
LOW, HIGH from X$KRCFBH
where FNO > 3 and FNO != 9 ;
no rows selected
通过ASM rebalance查看tracking信息是否发生变化
换言之,通过RMAN,不会影响高速增量备份
restore& recovery的灵活性
根据故障范围,以最优的单位进行restore& recovery

D2D(Storage Backup) vs. Oracle Recovery Manager
|
D2D |
RMAN |
| 备份的全部损坏风险 |
× 有全部损坏的风险 |
◎ 通过高速增量备份回避 |
| 备份的
性能与负荷 |
消費资源 |
◎ 仅限存储的资源 |
△ 使用服务器的资源 |
| 总I/O量 |
○ 仅限sector单位中的差分 |
○ 仅限块单位中的差分 |
| 保持数据总量 |
△ 正volume与同等的尺寸 |
○ 可以压缩/减少 |
| Redo生成量 |
× 备份中会增加 |
◎ 与一般情况相等 |
| 管理性 |
× 手动管理变得复杂 |
○ 世代管理的自动化 |
| 汎用性 |
△ 依赖于存储供应商 |
○ 从H/W结构中独立 |
| 破损块对策 |
× 正常or破损的区別も不可 |
◎ 备份时可以检测 |
| ASMrebalance的影响 |
× 几乎对整个备份都有 |
◎ 没有影响 |
| 备份的加密 |
× 正volume的拷贝,所以不可以 |
○ 可以加密 |
| 价格 |
× 数千万~数亿 |
○ EE标准功能 |
| restore& recovery |
灵活性 |
△ 最小也是LU单位 |
○ 可以通过块单位处理 |
| 管理性 |
× 依赖DBA的skill |
○ 通过建议器自动判断 |