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

--每个数据文件都有一个OS块,位于数据文件的第1块(也是0块).通过bbed无法访问:

BBED> set dba 7,0
BBED-00205: illegal or out of range DBA (File 7, Block 0)

BBED> set dba 7,1
        DBA             0x01c00001 (29360129 7,1)

BBED> dump
File: /mnt/ramdisk/book/tea01.dbf (7)
Block: 1                                                    Offsets:    0 to   63                                               Dba:0x01c00001
------------------------------------------------------------------------------------------------------------------------------------------------
0ba20000 0100c001 00000000 00000104 14b50000 00000000 0004200b 6e21b74f 424f4f4b 00000000 6a4b0000 000f0000 00200000 07000300 00000000 00000000

<64 bytes per line>

--可以通过如下方法查看在bbed:

BBED> set file 7 block 0
        FILE#           7
        BLOCK#          0

BBED> dump
File: /mnt/ramdisk/book/tea01.dbf (7)
Block: 0                                                    Offsets:    0 to   63                                               Dba:0x01c00000
------------------------------------------------------------------------------------------------------------------------------------------------
00a20000 0000c0ff 00000000 00000000 66f50000 00200000 000f0000 7d7c7b7a a0810000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
                                                                ~~~~~~~~
<64 bytes per line>

--//使用查看二进制的工具可以发现:
$ xxd -c 16 -l 128 tea01.dbf
0000000: 00a2 0000 0000 c0ff 0000 0000 0000 0000  ......?........
0000010: 66f5 0000 0020 0000 000f 0000 7d7c 7b7a  f?.. ......}|{z
                                       ~~~~~~~~~
0000020: a081 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
}
--你可以看到1个特征串7d7c7b7a。
--如果你建立一个数据文件,实际上从os看文件大小是30M+8k.

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

$ ls -l sugar01.dbf
-rw-r----- 1 oracle oinstall 31465472 2016-10-31 08:49:39 sugar01.dbf

--30*1024*1024+8192=31465472 .
--如果想了解更多细节,可以参考http://www.killdb.com/2011/09/05/%e4%b8%8d%e5%ae%8c%e5%85%a8%e8%af%a6%e8%a7%a3os-block-header.html

--//简单介绍这些,看看rman是否备份这个块。注意不要在生产系统做这样的测试:

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

RMAN> delete backupset ;
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=68 device type=DISK
specification does not match any backup in the repository

--在一些空地方插入一些垃圾数据,在偏移0x100=256位置替换A1B2C3D4E5。
$ bvi -s 8192 -b 0 /mnt/ramdisk/book/sugar01.dbf

$ xxd -c 16 -l 320 sugar01.dbf
0000000: 00a2 0000 0000 c0ff 0000 0000 0000 0000  ......?........
0000010: 66f5 0000 0020 0000 000f 0000 7d7c 7b7a  f?.. ......}|{z
0000020: a081 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000100: 4131 4232 4333 4434 4535 0000 0000 0000  A1B2C3D4E5......
0000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
}

--//注意:千万不要在生产系统做这样的测试,另外这样并不会影响数据库的启动。关闭数据库,重启看看。

2.备份数据文件:

SYS@book> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SYS@book> startup
ORACLE instance started.
Total System Global Area  634732544 bytes
Fixed Size                  2255792 bytes
Variable Size             197133392 bytes
Database Buffers          427819008 bytes
Redo Buffers                7524352 bytes
Database mounted.
Database opened.

--你可以检查A1B2C3D4E5字符串 依旧存在。

$ strings -t d sugar01.dbf  | grep 'A1B2C3'
    256 A1B2C3D4E5

$ strings -t x sugar01.dbf  | grep 'A1B2C3'
    100 A1B2C3D4E5

--可以发现在偏移量256位置出现A1B2C3D4E5.

RMAN> backup datafile 6 format '/u01/backup/d6_A_%U' ;

Starting backup at 2016-10-31 09:19:56
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=46 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-10-31 09:19:57
channel ORA_DISK_1: finished piece 1 at 2016-10-31 09:19:58
piece handle=/u01/backup/d6_A_0hrjnqlt_1_1 tag=TAG20161031T091957 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2016-10-31 09:19:58

--//检查备份可以发现,没有出现A1B2C3D4E5字符串。
$ strings -t d /u01/backup/d6_A_0hrjnqlt_1_1 | grep A1B2

$ strings -t d /u01/backup/d6_A_0hrjnqlt_1_1 | grep "}|{z"
     28 }|{z

$ xxd -c 16 -l 320 /u01/backup/d6_A_0hrjnqlt_1_1
0000000: 00a2 0000 0000 c0ff 0000 0000 0000 0000  ......?........
0000010: a2fa 0000 0020 0000 c400 0000 7d7c 7b7a  .?.. ..?..}|{z
0000020: a081 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................
}

--//你可以发现rman的备份集合也有OS块。按照链接http://www.killdb.com/2011/09/05/%e4%b8%8d%e5%ae%8c%e5%85%a8%e8%af%a6%e8%a7%a3os-block-header.html,
--//offset 0x18-0x19 对应的datafile的大小,实际上是block个数.

$ xxd -c 16 -l 320 sugar01.dbf
0000000: 00a2 0000 0000 c0ff 0000 0000 0000 0000  ......?........
0000010: 66f5 0000 0020 0000 000f 0000 7d7c 7b7a  f?.. ......}|{z
0000020: a081 0000 0000 0000 0000 0000 0000 0000  ................

--f00 = 3840, 数据文件大小30M,30*1024*1024/8192=3840.正好对上。

$ xxd -c 16 -l 320 /u01/backup/d6_A_0hrjnqlt_1_1
0000000: 00a2 0000 0000 c0ff 0000 0000 0000 0000  ......?........
0000010: a2fa 0000 0020 0000 c400 0000 7d7c 7b7a  .?.. ..?..}|{z
0000020: a081 0000 0000 0000 0000 0000 0000 0000  ................
}

$ ls -l /u01/backup/d6_A_0hrjnqlt_1_1
-rw-r----- 1 oracle oinstall 1613824 2016-10-31 09:19:57 /u01/backup/d6_A_0hrjnqlt_1_1

--c4 = 196, 备份文件大小1613824, 1613824/8192=197,这样扣除1个OS块,大小也是196.也能对上,就是讲备份集也存在1个OS块。

3.做一个恢复看看。

SYS@book> alter tablespace sugar offline ;
Tablespace altered.

$ mv sugar01.dbf sugar01.dbf_20161031

RMAN> restore tablespace sugar ;
Starting restore at 2016-10-31 09:37:10
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_0hrjnqlt_1_1
channel ORA_DISK_1: piece handle=/u01/backup/d6_A_0hrjnqlt_1_1 tag=TAG20161031T091957
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 2016-10-31 09:37:12

$ xxd -c 16 -l 320 sugar01.dbf
0000000: 00a2 0000 0000 c0ff 0000 0000 0000 0000  ......?........
0000010: 66f5 0000 0020 0000 000f 0000 7d7c 7b7a  f?.. ......}|{z
0000020: a081 0000 0000 0000 0000 0000 0000 0000  ................
0000030: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000040: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000050: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000060: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000090: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000a0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000c0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000e0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000f0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000100: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000110: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000120: 0000 0000 0000 0000 0000 0000 0000 0000  ................
0000130: 0000 0000 0000 0000 0000 0000 0000 0000  ................

--你可以发现恢复数据文件头没有A1B2字符串。}

RMAN> recover tablespace sugar ;
Starting recover at 2016-10-31 09:37:37
using channel ORA_DISK_1
starting media recovery
media recovery complete, elapsed time: 00:00:00
Finished recover at 2016-10-31 09:37:37

SYS@book> alter tablespace sugar online ;
Tablespace altered.

--从以上测试可以证明rman并没有备份数据文件的OS块。

4.做一个strace看看:

$ strace -f -o /tmp/bb.txt rman target /
Recovery Manager: Release 11.2.0.4.0 - Production on Mon Oct 31 09:41:54 2016
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
connected to target database: BOOK (DBID=1337401710)

RMAN> backup datafile 6 format '/u01/backup/d6_B_%U' ;
Starting backup at 2016-10-31 09:42:23
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=46 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-10-31 09:42:24
channel ORA_DISK_1: finished piece 1 at 2016-10-31 09:42:25
piece handle=/u01/backup/d6_B_0irjns00_1_1 tag=TAG20161031T094224 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 2016-10-31 09:42:25

$ grep pread /tmp/bb.txt | grep ", 0"
3053  pread(259, "\0\242\0\0\0\0\300\377\0\0\0\0\0\0\0\0f\365\0\0\0 \0\0\0\17\0\0}|{z"..., 8192, 0) = 8192
3053  pread(259, "\0\242\0\0\0\0\300\377\0\0\0\0\0\0\0\0f\365\0\0\0 \0\0\0\17\0\0}|{z"..., 8192, 0) = 8192
3053  pread(260, "\0\242\0\0\0\0\300\377\0\0\0\0\0\0\0\0f\365\0\0\0 \0\0\0\17\0\0}|{z"..., 8192, 0) = 8192
3053  pread(260, "\0\242\0\0\0\0\300\377\0\0\0\0\0\0\0\0f\365\0\0\0 \0\0\0\17\0\0}|{z"..., 8192, 0) = 8192
3053  pread(261, "\0\242\0\0\0\0\300\377\0\0\0\0\0\0\0\0f\365\0\0\0 \0\0\0\17\0\0}|{z"..., 8192, 0) = 8192
3053  pread(261, "\0\242\0\0\0\0\300\377\0\0\0\0\0\0\0\0f\365\0\0\0 \0\0\0\17\0\0}|{z"..., 8192, 0) = 8192

$ grep pwrite /tmp/bb.txt | grep ", 0"
$ grep pwrite /tmp/bb.txt | grep ", 8192"
3053  pwrite(258, "\v\242\0\0\1\0\200\1\0\0\0\0\0\0\1\4\276\250\0\0\0\0\0\0\0\4 \vn!\267O"..., 8192, 8192) = 8192
3053  pwrite(259, "\23\242\0\0\1\0\0\0K\364#\0\0\0\1\4\257I\0\0\0\4 \v\0\4 \vn!\267O"..., 1040384, 8192) = 1040384

$ grep pwrite /tmp/bb.txt | grep "= 8192"
3053  pwrite(258, "\v\242\0\0\1\0\200\1\0\0\0\0\0\0\1\4\276\250\0\0\0\0\0\0\0\4 \vn!\267O"..., 8192, 8192) = 8192

--从以上跟踪看,有读第0块的操作,没有出现一次写的操作。也就是rman不备份这数据文件OS块。

[20161031]rman备份与数据文件OS块.txt相关推荐

  1. ORACLE11g 没有控制文件如何通过rman备份恢复数据的详细实战过程

    1.副总裁需要裸恢复的严峻现实 集团总部的信息部负责人给我打电话说为了找一年前的记录,所以需要对一年前2015年5月1日的数据进行恢复.而2016年初因为进行迁移,所以有些文件可能丢失,手上只有rma ...

  2. Oracle ADG备库SYSAUX数据文件坏块恢复处理(ORA-00600,ORA-10567,ORA-10564......

    点击上方"蓝字" 关注我们,享更多干货! 本文阐述了Oracle ADG备库SYSAUX数据文件坏块恢复处理(ORA-00600,ORA-10567,ORA-10564,ORA-0 ...

  3. oracle 无备份恢复数据文件

    场景:  1.数据库没有备份  2.数据文件损坏  3.不符合使用控制文件和日志文件恢复的场景 1.模拟数据文件损坏 SYS@orcl11g> host cp /etc/passwd /u01/ ...

  4. oracle 11g dul,学习笔记:Oracle dul数据挖掘 导出Oracle11G数据文件坏块中表中

    试验模拟导出Oracle 11G数据库中数据文件坏块中表中的数据 以前一直以为dul对应的版本只能恢复最高的数据库版本一致,今天测试发现dul 10可以恢复11g最新版的数据库. 模拟环境SQL> ...

  5. OPPO手机备份微信数据文件到电脑本地方法教程

    如何备份和恢复OPPO手机的数据呢?下面以我们最常用的微信为例,讲解如何对手机中的微信数据进行备份和恢复. 步骤一.在手机上备份微信数据文件 1.在OPPO上找到手机的"备份与恢复" ...

  6. [20161107]关于数据文件位图区.txt

    [20161107]关于数据文件位图区.txt --上个星期写一篇 [20161104]File Space Bitmap Block损坏能修复吗?.txt 链接:http://blog.itpub. ...

  7. RMAN数据库恢复 之归档模式有(无)备份-丢失数据文件的恢复

    1.归档模式有备份,丢失数据文件的恢复 归档模式有备份,不管丢失什么数据文件,直接在RMAN下RESTOER--->RECOVER--->OPEN即可. RMAN> STARUP M ...

  8. 玩转oracle 11g(37):rman备份-数据库指定文件恢复

    .数据库指定数据文件恢复 启动数据库的时候报错 ORA-01157: cannot identify/lock data file 5 - see DBWR trace file ORA-01110: ...

  9. 保存的图数据丢失_锡柴自主刷写和备份共享数据文件使用介绍

    刷写功能 锡柴自主 ECU刷写可以恢复损坏的数据或是新ECU刷上相应车型的数据 注意事项 确认车辆电瓶电量充足,平板电脑电量充足.发动机不启动.车辆处于刹车状态.建议使用USB线进行刷写可以提高刷写速 ...

最新文章

  1. allocator_difference_type的实例
  2. stm32 HSE HSI
  3. Hacker-基础学习(1)
  4. 别乱提交代码了,你必须知道的 Git 分支开发规范!
  5. 廖雪峰python教程杨辉三角_打印杨辉三角(廖雪峰python教程)
  6. Hi3516E V200功能介绍
  7. 帆软报表决策系统自定义登录界面 使用验证码登录 教程二
  8. wincc vbs mysql_WinCC 如何访问数据库(VBS)
  9. linux常用命令-文件搜索(locate_find_grep)
  10. 攒齐智能产品组合,世界召唤四大超级力量
  11. JMF环境配置(Eclipse)
  12. R语言数据可视化-箱线图
  13. JAVA 间隔 时间 计算器
  14. oracle 修改jobs执行时间,oracle JOB常见的执行时间
  15. 未在服务器上找到sql安装程序文件,MS SQL Server 2000/以前的某个程序安装已在安装计算机上创建挂起的文件操作。...
  16. 1000Blocks | Space Apes smart NFTs (太空猿智能NFTS)
  17. 【书签】stacking、blending
  18. 微信小程序时间加法_微信小程序日期转换、比较、加减
  19. 【Paddle打比赛】全球人工智能技术创新大赛-商品标题实体识别竞赛_副本
  20. 前端小白也能快速学会的博客园博客美化全攻略[附源码]

热门文章

  1. Mac android studio升级时提示 :Connection failed. Please check your network connection .
  2. CNN经典网络模型:LeNet,Alexnet,VGGNet,GoogleNet,ReSNet
  3. 接口自动化测试系列(二):深入分析HTTP状态码502
  4. JVM学习笔记之-JVM性能监控-JVM监控及诊断工具-GUI方式-Visual VM-JProfiler-Arthas
  5. 减小TabLayout高度而不影响每个tab展示的几种方法
  6. Linux Ubuntu安装sogou中文输入法
  7. resultMap1_自定义结果映射规则
  8. ActiveMQ 实现消息接收发送
  9. Android模拟器(包括Genymotion)访问本机服务器
  10. samtools idxstats