d -
d
-
备-
份s
y
裸
d
设j
备 d
主要内容: 1. 2. 3.
UNIX使用dd对裸设备进行备份 dd命令详解
确定裸设备数据文件大小,验证备份(2个工具)
Making User-Managed Backups to Raw Devices
裸设备是指一个磁盘或者分区,它不包含文件系统,所以一个裸设备只能包含一个文件。 通过操作系统来备份raw设备上的文件,需要注意一些细节问题。下面具体讨论一下。
Backing Up to Raw Devices on UNIX
Unix下备份raw设备,最常用的就是dd命令。
使用dd命令需要制定一些正确的参数,这些参数是基于你的os以及database的。 Unix和Linux下对裸设备的备份是不同的。我们首先来了解三个概念 Data Block size Explanation 也就是bs选项。这个大小是指dd一次拷贝数据大小。这个和oracle的数据块大小是没有关联的,和os也没有关联。 需要注意的是:这个数值的大小影响到你拷贝数据的速度。bs大,拷贝速度会变快。 在一些os上,在裸设备上的文件的开头是被os使用的。这些存储空间被叫做raw offset,Oracle不会备份和恢复这些内容(字节)。 Note:1.备份的时候要跳过含有offset的字节。 (original VG和big VG)和Turbo unix有offset,其他的一般没有。 Raw offset Size of Oracle 在每个oracle文件的开头,os系统放置了一个块叫做block 0。 这个块的大小和其所在数据文件的oracle块大小相同。 block 0 一般的oracle 代码不能识别这个块,但是这个块是包含在os上的文件大小里面的。就是说oracle认为datafile1大小为100块,但是os看来,datafile1大小为101块(100+block 0).---通过dbfsize算出来的count给dd用的时候要加1 下面来看一下dd的一些参数意义。 Options if Specifies 输入文件的名字,也就是你要读取(备份)的文件 of bs skip 输出文件的名字,也就是,你要写入的文件 用dd拷贝数据的缓存大小(一次拷贝的数据量) 设定dd时从输入文件中跳过多少个dd缓冲区开始拷贝数据。一般在裸设备有offset时使用. 如果要备份的raw设备存在offset,用来跳过offset。例如,你要备份的raw设备offset大小为64kB,而你设定的bs为8KB,那么你可以指定specify skip=8 ,这样你就可以从64KB的地方开始拷贝。 设定dd时从输出文件中跳过多少个dd缓冲区开始写入数据。一般在裸设备有offset时使用.如果你要把数据拷贝到含有offset的raw设备里面,需要设定这个值,同skip类似。skip and seek参数必须同时用,要么不用,要么都用 你要拷贝的raw设备的block数。主要还是要看你bs的大小。假如你的数据文件含有100个oracle块,oracle块大小为8K,那么你的count就设为100. 也就是说 bs × count = size of your datafile1 当然,count也可以不设定,这样就把整个raw设备都拷贝下来。有空间的浪费。建议设定count大小。 seek count 因为raw设备可以作为备份的输入文件,也可以作为输出文件,下面给出了不同情况下的参数使用情况。 backing up from raw device backing up to 涉及到的dd参数 命令举例(没有offset的情况下,如有offset,则需加上skip=1,seek=1) raw device if, of, bs, skip, dd if='/dev/raw/raw100' of='/dev/raw/raw200'(小裸设备到大裸设seek, count 备) dd if='/dev/raw/raw400' of='/dev/raw/raw300' bs=1024k count=25(从大裸设备到小裸设备,但数据文件比小裸设备小) raw device file system if, of, bs, skip, /dev/raw/raw1得出count 2. dd if=/dev/raw/raw1 of= bs=8k count count=count+1 raw device if, of, bs, seek file system if, of, bs dd if=/opt/oracle/oradata/test1/ of=/dev/raw/raw20 直接COPY FILE file system file system How to know the size of your file(确定count)
非常简单,使用oracle提供的一个小工具:dbfsize (oracle自带,对数据文件和裸设备都有效) 语法:在oracle用户下使用 dbfsize your_file_name or raw device [oracle@standby test]$ dbfsize Database file: Database file type: file system Database file size: 49920 8192 byte blocks 我们可以知道,这个数据文件大小:49920 × 8K 那么count=49920+1 – 不要忘记block 0 (上面提到过哦:)
Backing Up with the dd utility on UNIX: Examples
为了使用dd,我们假设了如下的情况:
? 要备份的数据文件:30720KB
? ? ?
block 0 =8 KB. raw offset 64 KB. 我们设定 bs=8k
Note:“=”左右不要有空格
1)
从raw设备备份到raw设备
% dd if=/dev/rsd1b of=/dev/rsd2b bs=8k skip=8 seek=8 count=3841 2) 裸设备到文件系统 % dd if=/dev/rsd1b of=/backup/ bs=8k skip=8 count=3841 3) 文件系统到裸设备 % dd if=/backup/ of=/dev/rsd2b bs=8k seek=8 4) 文件系统到文件系统,你可以为了提升I/O把bs设为较高的数值 % dd if=/oracle/dbs/ of=/backup/ bs=1024k
Backing Up to Raw Devices on LNUIX
Linux一般是没有offset的,其他与Unix相同。
Backing Up to Raw Devices on Windows
参考:
验证dd备份
使用oracle提供的工具 dbv ,支持文件系统文件和裸设备。 语法:dbv file=file_name blocksize=8192 [oracle@standby test]$ dbv file= blocksize=8192 DBVERIFY: Release 9.2.0. - Production on Mon Aug 13 12:26:05 2007 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. DBVERIFY - Verification starting : FILE = DBVERIFY - Verification complete Total Pages Examined : 1280 Total Pages Processed (Data) : 0 Total Pages Failing (Data) : 0 Total Pages Processed (Index): 0 Total Pages Failing (Index): 0 Total Pages Processed (Other): 8 Total Pages Processed (Seg) : 0 Total Pages Failing (Seg) : 0 Total Pages Empty : 1272 Total Pages Marked Corrupt : 0 如果文件有问题,会有错误提示。 对应中文:
检查的页总数: 1280
处理的页总数 (数据): 150 失败的页总数 (数据): 0 处理的页总数 (索引): 127 失败的页总数 (索引): 0 处理的页总数 (其它): 1001 处理的总页数 (段) : 0 失败的总页数 (段) : 0 空的页总数: 0
标记为损坏的总页数: 2 流入的页总数: 0
Highest block SCN : 428223 参考文档: