dd备份裸设备

dd备份裸设备v1.0
      ---sydjd

主要内容:

1.                              UNIX使用dd对裸设备进行备份

2.                              dd命令详解

3.                              确定裸设备数据文件大小,验证备份(2个工具)

Making User-Managed Backups to Raw Devices

裸设备是指一个磁盘或者分区,它不包含文件系统,所以一个裸设备只能包含一个文件。

成都服务器托管,创新互联提供包括服务器租用、内蒙古服务器托管、带宽租用、云主机、机柜租用、主机租用托管、CDN网站加速、国际域名空间等业务的一体化完整服务。电话咨询:18982081108

通过操作系统来备份raw设备上的文件,需要注意一些细节问题。下面具体讨论一下。

 

Backing Up to Raw Devices on UNIX

Unix下备份raw设备,最常用的就是dd命令。

使用dd命令需要制定一些正确的参数,这些参数是基于你的os以及database的。

Unix和Linux下对裸设备的备份是不同的。我们首先来了解三个概念

Data

Explanation

Block size

也就是bs选项。这个大小是指dd一次拷贝数据大小。这个和Oracle的数据块大小是没有关联的,和os也没有关联。

需要注意的是:这个数值的大小影响到你拷贝数据的速度。bs大,拷贝速度会变快。

Raw offset

在一些os上,在裸设备上的文件的开头是被os使用的。这些存储空间被叫做raw offset,oracle不会备份和恢复这些内容(字节)。

Note:1.备份的时候要跳过含有offset的字节。

       2.现在的一些新的系统,已经没有offset。

Size of Oracle block 0

在每个oracle文件的开头,os系统放置了一个块叫做block 0。

这个块的大小和其所在数据文件的oracle块大小相同。

一般的oracle 代码不能识别这个块,但是这个块是包含在os上的文件大小里面的。就是说oracle认为datafile1大小为100块,但是os看来,datafile1大小为101块(100+block 0).

 

下面来看一下dd的一些参数意义。

Options

Specifies

if

输入文件的名字,也就是你要读取(备份)的文件

of

输出文件的名字,也就是,你要写入的文件

bs

用dd拷贝数据的缓存大小(一次拷贝的数据量)

skip

如果要备份的raw设备存在offset,用来跳过offset。例如,你要备份的raw设备offset大小为64kB,而你设定的bs为8KB,那么你可以指定specify skip=8 ,这样你就可以从64KB的地方开始拷贝。

seek

如果你要把数据拷贝到含有offset的raw设备里面,需要设定这个值,

同skip类似。

count

你要拷贝的raw设备的block数。主要还是要看你bs的大小。假如你的数据文件含有100个oracle块,oracle块大小为8K,那么你的count就设为100.

也就是说 bs × count = size of your datafile1

当然,count也可以不设定,这样就把整个raw设备都拷贝下来。有空间的浪费。建议设定count大小。

 

 

因为raw设备可以作为备份的输入文件,也可以作为输出文件,下面给出了不同情况下的参数使用情况。

backing up from ……..

backing up to ……..

涉及到的dd参数

raw device

raw device

if, of, bs, skip, seek, count

raw device

file system

if, of, bs, skip, count

file system

raw device

if, of, bs, seek

file system

file system

if, of, bs

 

 

How to know the size of your file?(确定count)

非常简单,使用oracle提供的一个小工具:dbfsize (oracle自带,对数据文件和裸设备都有效)

语法:在oracle用户下使用 dbfsize your_file_name or raw device

[oracle@standby test]$ dbfsize system01.dbf

 

Database file: system01.dbf

Database file type: file system

Database file size: 49920 8192 byte blocks

我们可以知道,system01.dbf这个数据文件大小: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/df1.dbf bs=8k skip=8 count=3841

 

3)             文件系统到裸设备

% dd if=/backup/df1.dbf of=/dev/rsd2b bs=8k seek=8

 

4)             文件系统到文件系统,你可以为了提升I/O把bs设为较高的数值

% dd if=/oracle/dbs/df1.dbf of=/backup/df1.dbf bs=1024k

 

Backing Up to Raw Devices on LNUIX

linux一般是没有offset的,其他与Unix相同。

 

Backing Up to Raw Devices on Windows

参考:p://download.oracle.com/docs/cd/B19306_01/backup.102/b14191/osbackup008.htm

 

验证dd备份

使用oracle提供的工具 dbv ,支持文件系统文件和裸设备。

语法:dbv file=file_name blocksize=8192

[oracle@standby test]$ dbv file=tools01.dbf blocksize=8192

 

DBVERIFY: Release 9.2.0.4.0 - Production on Mon Aug 13 12:26:05 2007

 

Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.

 

DBVERIFY - Verification starting : FILE = tools01.dbf

 

 

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 (0.428223)


本文题目:dd备份裸设备
链接URL:http://scyanting.com/article/jjjcsd.html