天天看點

Linux dd詳解

dd

使用dd這個linux指令可以建立一定大小檔案。

linux建立檔案指令:dd指令

把指定的輸入檔案拷貝到指定的輸出檔案中,并且在拷貝的過程中可以進行格式轉換。文法:

CODE:[Copy to clipboard]dd 〔選項〕

QUOTE:

if =輸入檔案(或裝置名稱)。

of =輸出檔案(或裝置名稱)。

ibs = bytes 一次讀取bytes位元組,即讀入緩沖區的位元組數。

skip = blocks 跳過讀入緩沖區開頭的ibs*blocks塊。

obs = bytes 一次寫入bytes位元組,即寫 入緩沖區的位元組數。

bs = bytes 同時設定讀/寫緩沖區的位元組數(等于設定obs和obs)。

cbs = bytes 一次轉換bytes位元組。

count = blocks 隻拷貝輸入的blocks塊。

conv = ASCII 把EBCDIC碼轉換為ASCII碼。

conv = ebcdic 把ASCII碼轉換為EBCDIC碼。

conv = ibm 把ASCII碼轉換為alternate EBCDIC碼。

conv = blick 把變動位轉換成固定字元。

conv = ublock 把固定們轉換成變動位

conv = ucase 把字母由小寫變為大寫。

conv = lcase 把字母由大寫變為小寫。

conv = notrunc 不截短輸出檔案。

conv = swab 交換每一對輸入位元組。

conv = noerror 出錯時不停止處理。

conv = sync 把每個輸入記錄的大小都調到ibs的大小(用ibs填充)。

fdformat指令

低級格式化軟碟。

執行個體:

建立一個100M的空檔案

dd if=/dev/zero of=hello.txt bs=100M count=1

以上是linux建立檔案指令:dd的用法。

2.執行個體分析

2.1.資料備份與恢複

2.1.1整盤資料備份與恢複

備份

将本地的/dev/hdx整盤備份到/dev/hdy :dd if=/dev/hdx of=/dev/hdy

将/dev/hdx全盤資料備份到指定路徑的image檔案:dd if=/dev/hdx of=/path/to/image

備份/dev/hdx全盤資料,并利用gzip工具進行壓縮,儲存到指定路徑:dd if=/dev/hdx | gzip

>/path/to/image.gz

恢複

将備份檔案恢複到指定盤:dd if=/path/to/image of=/dev/hdx

将壓縮的備份檔案恢複到指定盤 :gzip -dc /path/to/image.gz | dd of=/dev/hdx

2.1.2.利用netcat遠端備份

在源主機上執行此指令備份/dev/hda:dd if=/dev/hda bs=16065b | netcat < targethost-IP >

1234在目的主機上執行此指令來接收資料并寫入/dev/hdc:netcat -l -p 1234 | dd of=/dev/hdc

bs=16065b

以下兩條指令是目的主機指令的變化分别采用bzip2 gzip對資料進行壓縮,并将備份檔案儲存在當

前目錄 :

netcat -l -p 1234 | bzip2 > partition.img

netcat -l -p 1234 | gzip > partition.img

2.1.3.備份MBR

備份:

備份磁盤開始的512Byte大小的MBR資訊到指定檔案:dd if=/dev/hdx of=/path/to/image

count=1 bs=512

恢複:

将備份的MBR資訊寫到磁盤開始部分:dd if=/path/to/image of=/dev/hdx

2.1.4.備份軟碟

将軟驅資料備份到目前目錄的disk.img檔案:dd if=/dev/fd0 of=disk.img count=1 bs=1440k

2.1.5.拷貝記憶體資料到硬碟

将記憶體裡的資料拷貝到root目錄下的mem.bin檔案:dd if=/dev/mem of=/root/mem.bin

bs=1024

2.1.6.從CD光牒拷貝iso鏡像

拷貝CD光牒資料到root檔案夾下,并儲存為cd.iso檔案:dd if=/dev/cdrom of=/root/cd.iso

2.2.增加Swap分區檔案大小

建立一個足夠大的檔案(此處為256M):dd if=/dev/zero of=/swapfile bs=1024 count=262144

把這個檔案變成swap檔案:mkswap /swapfile

啟用這個swap檔案:swapon /swapfile

在每次開機的時候自動加載swap檔案, 需要在 /etc/fstab 檔案中增加一行:/swapfile swap

swap defaults 0 0

2.3.銷毀磁盤資料

利用随機的資料填充硬碟:dd if=/dev/urandom of=/dev/hda1

在某些必要的場合可以用來銷毀資料。執行此操作以後,/dev/hda1将無法挂載,建立和拷貝操作

無法執行。

2.4磁盤管理

2.4.1.得到最恰當的block size

通過比較dd指令輸出中所顯示的指令執行時間,即可确定系統最佳的block size大小:

dd if=/dev/zero bs=1024 count=1000000 of=/root/1Gb.filedd if=/dev/zero bs=2048 count=500000 of=/root/1Gb.file

dd if=/dev/zero bs=4096 count=250000 of=/root/1Gb.file

dd if=/dev/zero bs=8192 count=125000 of=/root/1Gb.file

2.4.2測試硬碟讀寫速度

通過兩個指令輸出的執行時間,可以計算出測試硬碟的讀/寫速度:

dd if=/root/1Gb.file bs=64k | dd of=/dev/null

hdd if=/dev/zero of=/root/1Gb.file bs=1024 count=1000000

2.4.3.修複硬碟

當硬碟較長時間(比如一兩年年)放置不使用後,磁盤上會産生magnetic flux point。當磁頭讀到

這些區域時會遇到困難,并可能導緻I/O錯誤。當這種情況影響到硬碟的第一個扇區時,可能導緻

硬碟報廢。下面的指令有可能使這些資料起死回生。且這個過程是安全,高效的。

dd if=/dev/sda of=/dev/sda

DD指令使用總結

dd

1.作用

dd指令用來複制檔案,并根據參數将資料轉換和格式化。

2.格式

dd [options]

3.[opitions]主要參數

bs=位元組:強迫 ibs=<位元組>及obs=<位元組>。

cbs=位元組:每次轉換指定的<位元組>。

conv=關鍵字:根據以逗号分隔的關鍵字表示的方式來轉換檔案。

count=塊數目:隻複制指定<塊數目>的輸入資料。

ibs=位元組:每次讀取指定的<位元組>。

if=檔案:讀取<檔案>内容,而非标準輸入的資料。

obs=位元組:每次寫入指定的<位元組>。

of=檔案:将資料寫入<檔案>,而不在标準輸出顯示。

seek=塊數目:先略過以obs為機關的指定<塊數目>的輸出資料。

skip=塊數目:先略過以ibs為機關的指定<塊數目>的輸入資料。

dd指令使用技巧五則 -|jacketzhong 發表于 2006-8-24 9:50:00

dd指令是linux下一個非常有用的磁盤指令。它可以将指定大小的塊拷貝成一個檔案,

并在拷貝的同時執行指定的轉換。由于dd指令允許二進制讀寫,是以特别适合在原始

實體裝置上進行輸入/輸出操作。下面介紹幾則dd指令的使用技巧。

一、為軟碟建立鏡像檔案

使用如下指令建立軟碟鏡像。

#dd if=/dev/fd0 of=disk.img bs=1440k

使用dd指令制作出的軟碟鏡像檔案能在HD-Copy或winimage下使用。

二、制作優盤啟動盤

首先打開linux的安裝CD光牒,将images目錄下的diskboot.img檔案複制到/root目錄下

,然後将優盤挂載到/dev/sdb,然後執行如下指令即可:

#dd if=/root/diskboot.img of=/dev/sdb bs=125682176

優盤需要為引導型并且要分出引導分區。

三、使用windows引導linux

提取引導檔案

#dd if=/dev/hdaN of=/bootsect.lnx bs=512 count=1

編輯boot.ini檔案

将上面生成的bootsect.lnx檔案複制到c:\下,并在boot.ini檔案中增加一行:c:\boo

tsect.lnx="Linux"

四、備份還原硬碟主引導記錄

1、備份硬碟主引導記錄

#dd if=/dev/hda of=/disk.mbr bs=512 count=1

2、還原硬碟主引導記錄

#dd if=/disk.mbr of=/dev/hda bs=512 count=1

五、要切割的大檔案為DGJD,共98336321位元組,則:

dd if=dgjd of=zz1 bs=1 count=20000000 

dd if=dgjd of=zz2 bs=1 count=20000000 skip=20000000

dd if=dgjd of=zz3 bs=1 count=20000000 skip=40000000

dd if=dgjd of=zz4 bs=1 count=20000000 skip=60000000

dd if=dgjd of=zz5 bs=1 count=18336321 skip=80000000

其中IF(INPUT FILENAME)是要切割的大檔案名,OF(OUTPUT

FILENAME)是切割後的子檔案名,BS是指明以多少位元組作為一個切割記錄機關,COUNT

是要切割的機關記錄數,SKIP是說明切割時的起點,機關同樣以BS設定值為準。通過

上述五條指令就将

DGJD大檔案切割成為4個2千萬位元組、1個18336321位元組的子檔案。要注意的是SKIP的值

不能錯。

由此也不難看出,DD切割是“非損耗”式的切割,并且支援從任意位置開始的任意大小

的切割。

要将生成的ZZ1、ZZ2、ZZ3、ZZ4四個子檔案組裝為XDGJD,則:

dd if=zz1 of=xdgjd bs=1 count=20000000

dd if=zz2 of=xdgjd bs=1 count=20000000 seek=20000000

dd if=zz3 of=xdgjd bs=1 count=20000000 seek=40000000

dd if=zz4 of=xdgjd bs=1 count=20000000 seek=60000000

dd if=zz5 of=xdgjd bs=1 count=18336321 seek=80000000

其中SKIP參數改為SEEK參數,指明組裝的新大檔案XDGJD每次的開始位置是從檔案頭開

始多少位元組。如果預設,則組裝從檔案頭開始,顯然這不是我們每次都希望的,

是以需用SEEK參數明确指出開始位置。通過以上5個指令,即可将5個子檔案重新組裝

為一個大檔案。将切割後生成的子檔案重新用FTP傳送,結果有的能夠順利傳送,

有的仍然導緻網絡癱瘓,不怕,繼續切割,切成每個一千萬位元組,再傳,OK!成功傳

送!

dd工具使用

dd重要參數

參數 含義
if 輸入裝置或者檔案
of 輸出裝置或檔案
bs

dd緩沖區。設定dd時一次io拷貝多少資料,它與輸入檔案和輸出檔案的block size都沒有直接聯系。

一般來說,bs越大,拷貝速度越快

skip 設定dd時從輸入檔案中跳過多少個dd緩沖區開始拷貝資料。一般在裸裝置有offset時使用
seek 設定dd時從輸出檔案中跳過多少個dd緩沖區開始寫入資料。一般在裸裝置有offset時使用
count 設定dd的io數量。如果省略了count,表示完全拷貝輸入檔案到輸出檔案上

dd參數适用範圍

備份源 備份目的地 适用參數
裸裝置 裸裝置 if of bs skip seek count
裸裝置 檔案系統 if of bs skip count
檔案系統 裸裝置 if of bs seek
檔案系統 檔案系統 if of bs

dd拷貝oracle資料檔案需要考慮的因素

因素 含義
block size dd一次io的buffer大小
offset 隻适用于裸裝置,有些作業系統在裸裝置上保留一定的空間給内部使用,拷貝時要跳過這部分内容
block 0

每一個oracle資料檔案的頭都包含一個與資料檔案所在表空間的blocksize的相等的block

這個block是不計算入oracle資料檔案的bytes的,但在作業系統中,它是會占用空間的。

如何用dd測試磁盤速度?

首先要了解兩個特殊的裝置:

/dev/null:資源回收筒、無底洞

/dev/zero:産生字元

Ø測試磁盤寫能力

time dd if=/dev/zero of=/test.dbf bs=8k count=300000

因為/dev/zero是一個僞裝置,它隻産生空字元流,對它不會産生IO,是以,IO都會集中在of檔案中,of檔案隻用于寫,是以這個指令相當于測試磁盤的寫能力。

Ø測試磁盤讀能力

time dd if=/dev/sdb1 of=/dev/null bs=8k

因為/dev/sdb1是一個實體分區,對它的讀取會産生IO,/dev/null是僞裝置,相當于黑洞,of到該裝置不會産生IO,是以,這個指令的IO隻發生在/dev/sdb1上,也相當于測試磁盤的讀能力。

Ø測試同時讀寫能力

time dd if=/dev/sdb1 of=/test1.dbf bs=8k

這個指令下,一個是實體分區,一個是實際的檔案,對它們的讀寫都會産生IO(對/dev/sdb1是讀,對/test1.dbf是寫),假設他們都在一個磁盤中,這個指令就相當于測試磁盤的同時讀寫能力。

是否需要skip資料檔案的block 0?

不需要。

因為block 0位于offset之後,而block 0是所有資料檔案都需要的,無論它是基于裸備還是檔案系統,且block0的大小隻與oracle的block size有關,是以,把block 0也dd出來是必要的,不需要skip資料檔案的block 0。

是否所有系統都有offset?

不是。aix和Turbo unix要注意offset,其他的一般沒有。

如何計算資料檔案的占用的實際空間大小?

實際的資料檔案大小是在dba_data_files中的bytes + 1* blocksize。

如:

SQL> select file_name,bytes from dba_data_files;

FILE_NAME BYTESBLOCKSIZE

---------------------------------------- ---------- ----------

/opt/oracle/oradata/test1/system01.dbf360710144 8192

在作業系統檢視檔案大小:

[root@suk1 soft]# ls -l system01.dbf

-rw-r--r-- 1 oracle oinstall 360718336 Nov 15 11:53 system01.dbf

360718336 = 360710144 + 8192 (8192是資料檔案所在表空間的blocksize)

一個裸裝置的資料檔案最多可以是多大?

這個和具體的作業系統和資料檔案所在表空間的blocksize有關。

假設裸裝置的大小是r,作業系統裸裝置的offset為f,資料檔案所在表空間的blocksize是b,則資料檔案的最大大小為:

d=r – f – b*1 (1為block 0)

如裸裝置大小為1008k,offset為0,表空間的blocksize為4k,則在此裸裝置的資料檔案的最大大小為:

d=1008-0-1*4=1004(k)

在裸裝置之間拷貝資料檔案

本例測試在裸裝置之間拷貝oracle資料檔案的步驟,并考慮兩個問題:

1)假設舊裝置比新裝置小,把大的裸裝置資料檔案拷貝到小的裸裝置是否可行?

2)舊裸裝置比新裸裝置小,是否可以拷貝資料檔案到新裸裝置上?

測試步驟:

#建立邏輯卷

[root@suk1 ~]# lvcreate -L 10m -n lv10_old vgdata

Logical volume "lv10_old" created

[root@suk1 ~]# lvcreate -L 20m -n lv20_new vgdata

Logical volume "lv20_new" created

[root@suk1 ~]# lvcreate -L 40m -n lv40_old vgdata

Logical volume "lv40_old" created

[root@suk1 ~]# lvcreate -L 30m -n lv30_new vgdata

Logical volume "lv30_new" created

#綁定裸裝置

[root@suk1 ~]# raw /dev/raw/raw100/dev/vgdata/lv10_old

/dev/raw/raw100: bound to major 253, minor 2

[root@suk1 ~]# raw /dev/raw/raw200/dev/vgdata/lv20_new

/dev/raw/raw200: bound to major 253, minor 3

[root@suk1 ~]# raw /dev/raw/raw400/dev/vgdata/lv40_old

/dev/raw/raw400: bound to major 253, minor 4

[root@suk1 ~]# raw /dev/raw/raw300/dev/vgdata/lv30_new

/dev/raw/raw300: bound to major 253, minor 5

#基于裸裝置建立表空間

SQL> create tablespace mytest datafile '/dev/raw/raw100' size 9m,'/dev/raw/raw400' size 20m;

Tablespace created.

#從小裸裝置到大裸裝置

[root@suk1 ~]# dd if='/dev/raw/raw100' of='/dev/raw/raw200'

20480+0 records in

20480+0 records out

#從大裸裝置到小裸裝置,但資料檔案比小裸裝置小

[root@suk1 ~]# dd if='/dev/raw/raw400' of='/dev/raw/raw300' bs=1024k count=25

25+0 records in

25+0 records out

注意:這裡bs*count要大于原裸裝置上的資料檔案尺寸

SQL> startup mount

ORACLE instance started.

Total System Global Area167772160 bytes

Fixed Size 1260696 bytes

Variable Size 138412904 bytes

Database Buffers 25165824 bytes

Redo Buffers 2932736 bytes

Database mounted.

#重命名資料檔案

SQL> alter database rename file '/dev/raw/raw100' to '/dev/raw/raw200';

Database altered.

SQL> alter database rename file '/dev/raw/raw400' to '/dev/raw/raw300';

Database altered.

SQL> alter database open;

Database altered.

從這個測試可以看出:

1)從小裸裝置到大裸裝置,隻需把小裸裝置的所有資料塊dd到大裸裝置即可

2)是否可以把大裸裝置上的資料檔案dd到小裸裝置,取決于位于大裸裝置上的資料檔案尺寸(+block 0)是否比小裸裝置小。如果資料檔案小于小裸裝置,則可以把資料檔案從大裸裝置dd到小裸裝置上,在dd過程中不需要太準确計算原來資料檔案的大小,隻要保證dd的總量大于資料檔案并小于小裸裝置的尺寸即可。

3)如果資料檔案大于小裸裝置的尺寸,則肯定不能把它從大裸裝置拷貝到小裸裝置上

4)裸裝置之間拷貝資料檔案比裸裝置到檔案系統之間拷貝的有點在于:不需要精确計算要拷貝多少資料,隻需要保證覆寫了資料檔案+block 0即可;而從裸裝置到檔案系統拷貝資料檔案時,必須準确計算出要拷貝的資料量(資料檔案+block 0),dd多一點或者少一點都會報錯。

5)如果有offset的話,在裸裝置之間拷貝資料檔案的時候都要考慮(skip、seek)

從檔案系統到裸裝置拷貝ORACLE資料檔案

這個比較簡單,首先要保證裸裝置的大小要大于等于oracle資料檔案大小 + block 0,如果裸裝置需要offset的話,則要保證更大,然後直接用dd就可以。

如:

#源檔案大小為10m

[root@suk1 ~]# ls -l /opt/oracle/oradata/test1/users02.dbf

-rw-r----- 1 oracle oinstall 10493952 Nov 30 11:07 /opt/oracle/oradata/test1/users02.dbf

#建立一個20m的裸裝置

[root@suk1 ~]# lvcreate -L 20m -n lv20 vgdata

Logical volume "lv20" created

[root@suk1 ~]# raw /dev/raw/raw20 /dev/vgdata/lv20

/dev/raw/raw20: bound to major 253, minor 1

#dd檔案到裸裝置上

[root@suk1 ~]# dd if=/opt/oracle/oradata/test1/users02.dbf of=/dev/raw/raw20

20496+0 records in

20496+0 records out

注意:從檔案系統到裸裝置不用設定count

#重命名資料檔案,打開資料庫

SQL> alter database rename file '/opt/oracle/oradata/test1/users02.dbf' to '/dev/raw/raw20';

Database altered.

SQL> alter database open;

Database altered

從裸裝置到檔案系統拷貝ORACLE資料檔案

這裡用用到兩個工具:

dbfsize 求出在裸裝置或者檔案系統上的oracle資料檔案的大小,由oracle提高。

blockdev 求出裸裝置的大小,作業系統自帶。

要計算出要要拷貝的大小,否則報錯,如:

[oracle@suk1 soft]$ dbfsize /dev/raw/raw1

Database file: /dev/raw/raw1

Database file type: raw device

Database file size: 44032 8192 byte blocks

[oracle@suk1 soft]$ time dd if=/dev/raw/raw1 of=system01.dbf bs=8k count=44032

SQL> alter database rename file '/opt/oracle/oradata/test1/system01.dbf' to '/soft/system01.dbf';

Database altered.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01122: database file 1 failed verification check

ORA-01110: data file 1: '/soft/system01.dbf'

ORA-01200: actual file size of 44031 is smaller than correct size of 44032 blocks

--不要忘了block 0

[oracle@suk1 soft]$ rm system01.dbf

[oracle@suk1 soft]$ dd if=/dev/raw/raw1 of=system01.dbf bs=8k count=44033

SQL> startup

ORACLE instance started.

Total System Global Area167772160 bytes

Fixed Size 1260696 bytes

Variable Size 100664168 bytes

Database Buffers 62914560 bytes

Redo Buffers 2932736 bytes

Database mounted.

Database opened.

SQL> select file_name from dba_data_files;

FILE_NAME

------------------------------------------------------------

/soft/system01.dbf

/opt/oracle/oradata/test1/undotbs01.dbf

/opt/oracle/oradata/test1/sysaux01.dbf

/opt/oracle/oradata/test1/users01.dbf

/opt/oracle/oradata/test1/users02.dbf

是否可以把整個裸裝置拷貝到檔案中?

有時候可能需要把裸裝置的資料檔案遷移到檔案系統中,那遷移的時候是否可以把整個裸裝置拷出來?

不一定,要看裸裝置是否有offset,如果有offset,則肯定不能全拷貝出來;如果沒有offset,也要分情況:

1)裸裝置中的資料檔案 + block 0比裸裝置小。

如果資料檔案大小 + block 0比裸裝置小,則不能将整個裸裝置拷到檔案系統的檔案中。

[root@suk1 soft]# dd if=/dev/raw/raw1 of=system01.dbf bs=8k

SQL> startup mount

ORACLE instance started.

Total System Global Area167772160 bytes

Fixed Size 1260696 bytes

Variable Size 75498344 bytes

Database Buffers 88080384 bytes

Redo Buffers 2932736 bytes

Database mounted.

SQL> alter database rename file '/opt/oracle/oradata/test1/system01.dbf' to '/soft/system01.dbf';

Database altered.

SQL> alter database open;

alter database open

*

ERROR at line 1:

ORA-01157: cannot identify/lock data file 1 - see DBWR trace file

ORA-01110: data file 1: '/soft/system01.dbf'

Errors in file /opt/oracle/admin/test1/bdump/test1_dbw0_9564.trc:

ORA-01157: cannot identify/lock data file 1 - see DBWR trace file

ORA-01110: data file 1: '/soft/system01.dbf'

ORA-27046: file size is not a multiple of logical block size

Additional information: 1

ORA-1157 signalled during: ALTER DATABASE OPEN...

這是因為裸裝置已被資料檔案使用部分的邏輯塊與未使用部分的邏輯塊大小不一緻。這種情況下,隻能拷貝裸裝置中資料檔案大小 + block 0部分。

2)裸裝置中的資料檔案 + block 0等于裸裝置大小

這種情況是可以完全拷貝的。

[root@suk1 soft]# lvcreate -L 1008k -n test1008 vgdata

Logical volume "test1008" created

[root@suk1 soft]# raw /dev/raw/raw1008 /dev/vgdata/test1008

/dev/raw/raw1008: bound to major 253, minor 0

SQL> create tablespace test blocksize 4k datafile '/dev/raw/raw1008' size 1004k;

Tablespace created.

SQL> select file_name,bytes,bytes/blocks blocksize from dba_data_files;

FILE_NAME BYTESBLOCKSIZE

------------------------- ---------- ----------

/dev/raw/raw1008 1028096 4096

1028096 + 4096 =1008(k)

SQL> startup mount

ORACLE instance started.

[oracle@suk1 soft]$ dd if=/dev/raw/raw1008 of=test.dbf

2016+0 records in

2016+0 records out

Total System Global Area167772160 bytes

Fixed Size 1260696 bytes

Variable Size 130024296 bytes

Database Buffers 33554432 bytes

Redo Buffers 2932736 bytes

Database mounted.

SQL> alter database rename file '/dev/raw/raw1008' to '/soft/test.dbf';

Database altered.

SQL> alter database open;

Database altered.

各種拷貝方式的比較

Ø裸裝置到裸裝置

需要考慮裸裝置的offset;要保證新裝置的大小滿足資料檔案的需求;不需要精确計算要拷貝的尺寸,保證大于等于資料檔案大小+block 0即可(必須從資料字段中才能查出oracle資料檔案的大小)

Ø裸裝置到檔案系統

需要考慮裸裝置的offset;必須精确計算要拷貝的尺寸,包括的尺寸必須剛好等于資料檔案大小+block 0(因為無法通過作業系統指令看資料檔案的大小,必須通過oracle資料字典檢視)

Ø檔案系統到裸裝置

需要考慮裸裝置的offset;不需要精确計算要拷貝的尺寸,把檔案全部拷到裸裝置即可。

Ø檔案系統到檔案系統

不用考慮offset。不需要精确計算要拷貝的尺寸,把檔案全部拷貝過去就可以。

驗證備份

Oracle提高dbv工具來驗證備份檔案是否有損壞:

[oracle@suk1 ~]$ dbv file=/dev/raw/raw300

DBVERIFY: Release 10.2.0.3.0 - Production on Fri Nov 30 16:49:59 2007

Copyright (c) 1982, 2005, Oracle.All rights reserved.

DBVERIFY - Verification starting : FILE = /dev/raw/raw300

DBVERIFY - Verification complete

Total Pages Examined : 2560

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 : 2552

Total Pages Marked Corrupt: 0

Total Pages Influx : 0

繼續閱讀