在VMWare上测试了一下AUL对Linux裸设备的支持
将Oracle数据库的数据文件放在裸设备上, 是很正常的事. 不过我的AUL出来将近两年半了, 还从没有测过裸设备. 因为我认为所有Linux/Unix上的裸设备其实也是一个文件, 在程序中就当作普通的文件来操作就行了, 所以就一直没有作测试. Solaris上用Veritas文件系统作的裸设备到是测试过.
先用fdisk创建一个分区, 然后用dd将windows下的一个Oracle文件拷贝到这个分区. 然后用AUL去打开就行了, 如下所示:
[root@RH4SRV1 oracle]# ./aul
Register Code: 4ZN4-9OVB-EE3Y-OWTN-J5UC
AUL : AnySQL UnLoader(MyDUL) for Oracle 8/8i/9i/10g, release 4.0.4
(C) Copyright Lou Fangxin 2005-2007 (AnySQL.net), all rights reserved.
AUL> open b.txt
* ts# fno rfn ver bsize blocks filename
- ---- ---- ---- --- ----- ---------- --------------------------
Y 7 7 7 02 8192 1280 /dev/sdb1
接下来要测试一下随机的读取, 如果支持则表示没有问题.
AUL> oradump file 7 block 1
RDBA=0x01c00001(7/1),type=0x0b,fmt=0x02,seq=0x01,flag=0x04
DBID=0xc4ecc64a=3303851594,db=XUE,ts#=7,ts=T,file#=7,blksiz=8192, blks=1280, ver=0x08000000, fzy=----
AUL> oradump file 7 block 10
RDBA=0x01c0000a(7/10)=29360138,type=0x06,fmt=0x02,seq=0x01,flag=0x06
seg/obj=0x00001ed9=7897,csc=0x0000.0034bef5,itc=2,typ=1 - DATA
FLG=0x03, fls=0, nxt=0x00000000(0/0)=0
Transaction Slot:
id xid-usn.slot.wrap uba-rdba.row.seq flag lock fsc/scn
---- ------------------- ------------------ ---- ---- ---------------
0x01 0x0003.01d.000000a5 0x00800077.00bb.0c --U- 2 0x0000.0034bef8
0x02 0x0000.000.00000000 0x00000000.0000.00 ---- 0 0x0000.00000000
Block Data:
hdsz=92
flag=0x00
ntab=1
nrow=2
ffre=65535
fsbo=0x0072=114
fseo=0x1fc6=8134
avsp=0x1f54=8020
tosp=0x1f54=8020
tab#= 0 nrow= 2 offs= 0
row#= 0 offs=0x1f85= 8069+ 92=0x1fe1= 8161 flag=--H-FL--
row#= 1 offs=0x1f6a= 8042+ 92=0x1fc6= 8134 flag=--H-FL--
我在VMWare上感觉AUL进行裸文件扫描时有些慢, 一个10M的文件, 恢然用了将近30秒. 不知道是不是因为在VMWare的原因.
