[20161118]rman备份的疑问2.txt

--这个是我前几天做测试时遇到的疑问,不知道为什么rman 备份要修改数据块的dba地址。
--我在itpub上也问了这个问题,链接http://www.itpub.net/thread-2071504-1-1.html,可惜没有人解答。

--具体细节不清楚,读取数据文件然后重新编码组织数据,将kcbh.rdba_kcbh的后2位放入tailchk中,设置spare3_kcbh=0x0001,
--也许为了区分备份与数据文件,当然还有别的目的,再做一些测试:

1.环境:
SCOTT@book> @ &r/ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

CREATE TABLESPACE SUGAR DATAFILE
  '/mnt/ramdisk/book/sugar01.dbf' SIZE 40M AUTOEXTEND ON NEXT 16M MAXSIZE UNLIMITED
LOGGING
ONLINE
EXTENT MANAGEMENT LOCAL AUTOALLOCATE
BLOCKSIZE 8K
SEGMENT SPACE MANAGEMENT AUTO
FLASHBACK ON;

SCOTT@book> create table t1  (id number,name varchar2(20)) tablespace sugar;
Table created.

--打开2个session插入不同的记录:
insert into t1 values(1,'A1B2C3D4E5');
commit ;

--另外会话:
insert into t1 values(2,'F6G7H8I9J0');
commit ;
alter system checkpoint ;

SCOTT@book> select rowid,t1.* from t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAVvZAAGAAAACGAAA          1 A1B2C3D4E5
AAAVvZAAGAAAACHAAA          2 F6G7H8I9J0

SCOTT@book> @ &r/rowid AAAVvZAAGAAAACGAAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     89049          6        134          0  0x1800086           6,134                alter system dump datafile 6 block 134 ;

SCOTT@book> @ &r/rowid AAAVvZAAGAAAACHAAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     89049          6        135          0  0x1800087           6,135                alter system dump datafile 6 block 135 ;

--这样可以实现插入不同的块。

2.备份数据文件。
RMAN> backup datafile 6 format '/u01/backup/d6_a.bak' ;

Starting backup at 2016-11-17 11:40:11
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=35 device type=DISK
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00006 name=/mnt/ramdisk/book/sugar01.dbf
channel ORA_DISK_1: starting piece 1 at 2016-11-17 11:40:12
channel ORA_DISK_1: finished piece 1 at 2016-11-17 11:40:13
piece handle=/u01/backup/d6_a.bak tag=TAG20161117T114012 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2016-11-17 11:40:13

$ strings -td /u01/backup/d6_a.bak| egrep 'A1B2C3D4E5|F6G7H8I9J0'
1114098 A1B2C3D4E5
1122290 F6G7H8I9J0

--1114098/8192=135.998291015625
--1122290/8192=136.998291015625

BBED> p filename '/u01/backup/d6_a.bak' block 135 kcbh.rdba_kcbh
ub4 rdba_kcbh                               @4        0x01800087

BBED> p filename '/u01/backup/d6_a.bak' block 136 kcbh.rdba_kcbh
ub4 rdba_kcbh                               @4        0x01800088

BBED> set dba 0x01800087
        DBA             0x01800087 (25165959 6,135)

BBED> set dba 0x01800088
        DBA             0x01800088 (25165960 6,136)

--现在是不一致的(与前面对照)。

3.修改数据块spare3_kcbh=0x0001看看:

SCOTT@book> alter tablespace SUGAR offline;
Tablespace altered.

BBED> p dba 6,134 spare3_kcbh
ub2 spare3_kcbh                             @18       0x0000

BBED> p filename '/u01/backup/d6_a.bak' block 135 spare3_kcbh
ub2 spare3_kcbh                             @18       0x0001

--前次提到备份修改spare3_kcbh=0x0001.我修改数据块看看。

BBED> assign dba 6,134 spare3_kcbh=0x0001
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
ub2 spare3_kcbh                             @18       0x0001

BBED> sum
Check value for File 6, Block 134:
current = 0xace3, required = 0xace2

BBED> sum apply dba 6,134
Check value for File 6, Block 134:
current = 0xace2, required = 0xace2

BBED> verify
DBVERIFY - Verification starting
FILE = /mnt/ramdisk/book/sugar01.dbf
BLOCK = 134

Block 134 is corrupt
Corrupt block relative dba: 0x01800086 (file 0, block 134)
Bad header found during verification
Data in bad block:
type: 6 format: 2 rdba: 0x01800086
last change scn: 0x0000.0065f43a seq: 0x1 flg: 0x06
spare1: 0x0 spare2: 0x0 spare3: 0x1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 从这里看出这些在某种情况下具有特殊含义。
consistency value in tail: 0xf43a0601
check value in block header: 0xace2
computed block checksum: 0x0
DBVERIFY - Verification complete
Total Blocks Examined         : 1
Total Blocks Processed (Data) : 0
Total Blocks Failing   (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing   (Index): 0
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 1
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED

--可以发现数据块根本不能设置这个值,恢复回来。

BBED> assign dba 6,134 spare3_kcbh=0x0000
ub2 spare3_kcbh                             @18       0x0000

BBED> sum apply dba 6,134
Check value for File 6, Block 134:
current = 0xace3, required = 0xace3

BBED> verify
DBVERIFY - Verification starting
FILE = /mnt/ramdisk/book/sugar01.dbf
BLOCK = 134
DBVERIFY - Verification complete
Total Blocks Examined         : 1
Total Blocks Processed (Data) : 1
Total Blocks Failing   (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing   (Index): 0
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 0
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED

4.做一个无聊的测试,实现2个块对调,必须重新编码,测试自己的理解是否正确。

SCOTT@book> alter tablespace SUGAR online;
Tablespace altered.

SCOTT@book> select rowid,t1.* from t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAVvZAAGAAAACGAAA          1 A1B2C3D4E5
AAAVvZAAGAAAACHAAA          2 F6G7H8I9J0

SCOTT@book> alter tablespace SUGAR offline;
Tablespace altered.

--先交换
bvi -b 1105920 -s 8192 /u01/backup/d6_a.bak => 另存为 135.bin
bvi -b 1114112 -s 8192 /u01/backup/d6_a.bak => 另存为 136.bin

dd if=135.bin of=/u01/backup/d6_a.bak seek=136 bs=8192 count=1 conv=notrunc
dd if=136.bin of=/u01/backup/d6_a.bak seek=135 bs=8192 count=1 conv=notrunc

2.bbed修改相关信息:
BBED> p filename  '/u01/backup/d6_a.bak' block 135 rdba_kcbh
ub4 rdba_kcbh                               @4        0x01800088

BBED> p filename  '/u01/backup/d6_a.bak' block 136 rdba_kcbh
ub4 rdba_kcbh                               @4        0x01800087

BBED> p filename  '/u01/backup/d6_a.bak' block 135 tailchk
ub4 tailchk                                 @8188     0xf4400687

BBED> p filename  '/u01/backup/d6_a.bak' block 136 tailchk
ub4 tailchk                                 @8188     0xf43a0686

--修改如下:
BBED> assign filename  '/u01/backup/d6_a.bak' block 135 rdba_kcbh=0x01800087
ub4 rdba_kcbh                               @4        0x01800087

BBED> assign filename  '/u01/backup/d6_a.bak' block 136 rdba_kcbh=0x01800088
ub4 rdba_kcbh                               @4        0x01800088

BBED> modify /x 0x86 filename  '/u01/backup/d6_a.bak' block 135 offset 8188
File: /u01/backup/d6_a.bak (0)
Block: 135                  Offsets: 8188 to 8191    Dba:0x00000000
---------------------------------------------------------------------
860640f4
<64 bytes per line>

BBED> modify /x 0x87 filename  '/u01/backup/d6_a.bak' block 136 offset 8188
File: /u01/backup/d6_a.bak (0)
Block: 136                   Offsets: 8188 to 8191    Dba:0x00000000
----------------------------------------------------------------------
87063af4
<64 bytes per line>

BBED> sum  apply filename  '/u01/backup/d6_a.bak' block 135
Check value for File 0, Block 135:
current = 0xa596, required = 0xa596

BBED> sum  apply filename  '/u01/backup/d6_a.bak' block 136
Check value for File 0, Block 136:
current = 0xac6a, required = 0xac6a

RMAN> validate backupset 87;
Starting validate at 2016-11-17 15:46:39
using channel ORA_DISK_1
channel ORA_DISK_1: starting validation of datafile backup set
channel ORA_DISK_1: reading from backup piece /u01/backup/d6_a.bak
channel ORA_DISK_1: piece handle=/u01/backup/d6_a.bak tag=TAG20161117T114012
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: validation complete, elapsed time: 00:00:01
Finished validate at 2016-11-17 15:46:40

RMAN> restore tablespace sugar;
Starting restore at 2016-11-17 15:47:21
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00006 to /mnt/ramdisk/book/sugar01.dbf
channel ORA_DISK_1: reading from backup piece /u01/backup/d6_a.bak
channel ORA_DISK_1: piece handle=/u01/backup/d6_a.bak tag=TAG20161117T114012
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2016-11-17 15:47:22

RMAN> recover tablespace sugar;
Starting recover at 2016-11-17 15:47:41
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 2016-11-17 15:47:41

SCOTT@book> alter tablespace SUGAR online;
Tablespace altered.

SCOTT@book> select rowid,t1.* from t1;
ROWID                      ID NAME
------------------ ---------- --------------------
AAAVvZAAGAAAACGAAA          2 F6G7H8I9J0
AAAVvZAAGAAAACHAAA          1 A1B2C3D4E5

--对比前面实现了2个数据块对调,也验证我的判断是对的。

[20161118]rman备份的疑问2.txt相关推荐

  1. [20161031]rman备份与数据文件OS块.txt

    [20161031]rman备份与数据文件OS块.txt --每个数据文件都有一个OS块,位于数据文件的第1块(也是0块).通过bbed无法访问: BBED> set dba 7,0 BBED- ...

  2. Windows下oracle RMAN备份脚本

    Windows 下RMAN备份脚本,比较简单.我们看内容. 1.      修改RMAN相关参数 RMAN>show all; RMAN>CONFIGURE CONTROLFILE AUT ...

  3. oracle备份慢,诊断Oracle RMAN备份慢的原因

    ㈠ 先在系统层面查询CPU.IO使用情况:top.iostat.sar...等 ㈡ EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT(); ㈢ rman ta ...

  4. Windows下RMAN备份脚本

    Windows 下RMAN备份脚本,比较简单. 我们看内容. 1.      修改RMAN相关参数 RMAN>show all; RMAN>CONFIGURE CONTROLFILE AU ...

  5. [20190718]12c rman新特性 表恢复.txt

    [20190718]12c rman新特性 表恢复.txt --//12c rman 支持一个新特性,恢复表在某个时间或者scn号. --//实际上11g以前支持到表空间级别,12c更加近一步,通过简 ...

  6. Oracle 运维篇+RAC集群转单实例/RMAN异机恢复/RMAN迁移/RMAN备份恢复操作概要

    说明:本文为Oracle RAC集群转单实例/RMAN异机恢复/RMAN迁移/RMAN备份恢复操作概要方便用户查阅 温馨提示:如果您发现本文哪里写的有问题或者有更好的写法请留言或私信我进行修改优化 说 ...

  7. ORACLE RMAN 备份策略及设置(Windows篇)

    备份策略制定 数据量&需求 备份策略 恢复所需文件 数据量100G 一下 一天做一次level 0的备份(全备) 恢复的时候,会使用最新的那一 份备份和归档进行恢复 数据量100G -500G ...

  8. rman备份到远程服务器磁盘实践

    [实验目的] 本地库归档文件快爆掉,特模拟将数据库的RMAN备份直接发送到远程服务器磁盘中 [环境信息] 数据库服务器:DB_SERVER  192.168.56.101  (操作系统:Linux) ...

  9. 关于 RMAN 备份 数据块 一致性的讨论

    今天和 杭州恒生 的一个朋友讨论一个RMAN 在备份时数据块一致性的问题. 关于RMAN 的备份原理参考blog: RMAN 系列(一)---- RMAN 体系结构概述 http://blog.csd ...

  10. 如何 搭建 RMAN 备份平台

    一. RMAN 的一些理论知识 RMAN Catalog 和 Nocatalog 的区别 http://blog.csdn.net/tianlesoftware/archive/2010/06/02/ ...

最新文章

  1. 一步一步学Silverlight 2系列(10):使用用户控件
  2. python 定义字典键为变量_在python字典中使用变量作为键名
  3. python 解析器的常用options
  4. git 本地推送本地仓库到远程
  5. 【飞秋】微软简化Visual Studio 非程序员也能开发软件
  6. C语言 FileStreaming fwritefread
  7. python模拟抛体运动_换个姿势学物理!用Python和Matplotlib进行模拟
  8. SQL数据库收缩日志
  9. redist mysql_Windows下安装 MySQL
  10. 利用Visio DIY自己的示意图
  11. Gradle的神奇之处
  12. win11家庭中文版 安装docker 步骤
  13. tplink怎么进去_怎么进入TP-Link路由器设置界面?
  14. python 培训线下
  15. Java为图片加水印
  16. 记录webView显示空白的又一坑
  17. 2分钟定制自己的专属桌面——win10仿Mac os风格美化!
  18. CPU的四个主要功能
  19. 【微信小程序】 微信小程序连接本地接口
  20. 大连埃森哲Java面试题

热门文章

  1. error: stray '\357' in program
  2. 凸优化第五章对偶 5.7例子
  3. TCMalloc原理
  4. 怎么轻松学JAVA(三个月拿实习Offer):小猿的JAVA后端之路(持续更新)
  5. 删除html注释 python,用Python提取HTML源码中的注释与去掉注释
  6. mysql5.7 开启重连_MySQL5.7.9,怎样永久设置client、connection、results这三项为utf8?...
  7. 新一代多媒体技术与应用的部分课后题
  8. hbase 实战项目
  9. robotframe处理日志中文问题
  10. Mysql主从架构的复制原理及配置详解