Sparse File

Sparse File是什么,稀疏文件,也就是说,是一个拥有空的空间的文件,磁盘块将并没分配给这些文件
如果这些空的空间填满ASCII的NULL字符,那么文件才会是实际的大小。

看一个例子:
 ods_etl[/telephone_cdr/827/200906/CDMA/098]#du -sk telephone_cdr.data.idx
 4528    telephone_cdr.data.idx
 ods_etl[/telephone_cdr/827/200906/CDMA/098]#ls -l telephone_cdr.data.idx
 -rw-r--r--    1 qywtest  staff      93992640 Jul 09 20:10 telephone_cdr.data.idx

ls看到的是文件的属性,该文件属性上分配了91789.6875KB的空间
du看到的是磁盘上分配的文件大小,为4528KB

用fileplace可以看一个文件的实际数据块分布
这是一个Sparse File的输出
 ods_etl[/telephone_cdr/827/200906/CDMA/098]#fileplace telephone_cdr.data.idx
 
 File: telephone_cdr.data.idx  Size: 93992640 bytes  Vol: /dev/lv_827new
 Blk Size: 4096  Frag Size: 4096  Nfrags: 1126
 
   Logical Extent
   --------------
   00799747                       1 frags         4096 Bytes,   0.1%
   00788026                       1 frags         4096 Bytes,   0.1%
   00797170                       1 frags         4096 Bytes,   0.1%
   00806124                       1 frags         4096 Bytes,   0.1%
   00806927                       1 frags         4096 Bytes,   0.1%
   00760691                       1 frags         4096 Bytes,   0.1%
   00803861                       1 frags         4096 Bytes,   0.1%
   00756390-00756391              2 frags         8192 Bytes,   0.2%
   00790716                       1 frags         4096 Bytes,   0.1%
   00799721-00799722              2 frags         8192 Bytes,   0.2%
   00788778                       1 frags         4096 Bytes,   0.1%
   00769734                       1 frags         4096 Bytes,   0.1%
   00806839                       1 frags         4096 Bytes,   0.1%
   00830673                       1 frags         4096 Bytes,   0.1%
   00806962                       1 frags         4096 Bytes,   0.1%
   00806789                       1 frags         4096 Bytes,   0.1%
   00770583                       1 frags         4096 Bytes,   0.1%

对比看下一个实文件的
 ods_etl[/tmp]#fileplace cel373670_s2.err
 
 File: cel373670_s2.err  Size: 43 bytes  Vol: /dev/hd3
 Blk Size: 4096  Frag Size: 4096  Nfrags: 1
 
   Logical Extent
   --------------
   00065475                       1 frags         4096 Bytes,  100.0%
 
在来说一说Sparse File的空间分配,这种文件只是分配出一个属性,而并没有分配实际的数据文件块。也就是,其在实际文件系统中并没有占用那么大的空间。在有数据需要写入该文件时,磁盘数据块才会分配给该文件。如果此时文件系统没有足够的空间,那么就算该文件没有达到分配的容量,也无法在写入而报错

今天就遇到了在文件系统上的一个数据库报错
 Mon Nov 16 10:19:26 2009
 Errors in file /home/oracle/app/oracle/admin/edw_temp/udump/edw_temp_ora_1007834.trc:
 ORA-01114: IO error writing block to file 20001 (block # 800137)
 ORA-27063: skgfospo: number of bytes read/written is incorrect
 IBM AIX RISC System/6000 Error: 28: No space left on device
 Additional information: -1
 Additional information: 253952
 ORA-01114: IO error writing block to file 20001 (block # 800137)
 ORA-27063: skgfospo: number of bytes read/written is incorrect
 IBM AIX RISC System/6000 Error: 28: No space left on device
 Additional information: -1
 Additional information: 253952
 ORA-01114: IO error writing block to file 20001 (block # 800137)
 ORA-27063: skgfospo: number of bytes read/written is incorrect
 IBM AIX RISC System/6000 Error: 28: No space left on device
 Additional information: -1
 Additional information: 253952
 ORA-01114: IO error writing block to file 20001 (block # 800137)
 ORA-27063: skgfospo: number of bytes read/written is incorrect
 IBM AIX RISC System/6000 Error: 28: No space left on device
 Additional information: -1
 Additional information: 253952 

一看file_id,这么大一般都是临时文件。
继续看文件系统,该文件系统已经满了
在看该临时表空间的属性,是自动扩展的,开始我就以为是这个自动扩展的问题,于是就把自动扩展关闭了
但是数据库还是继续在报错,我才仔细看了下,该TEMP文件有8192MB,现在使用了6434MB。
这就是一个典型的Sparse File问题。临时文件虽然给了8192M,但是临时文件建立的时候,并不像数据文件,对文件进行一个格式化。这就是为了什么临时文件建立的很快,而数据文件很慢的原因。因为没有格式化,就没有分配块给该文件,所以临时文件其实就是一个Sparse File。当文件系统分配满了后,在想使用临时文件时,临时文件将没有数据块分配,所以报这个错

解决方法就不说了,如果无法缩小,就重建一个了事

看一看临时文件的属性
 qry_app3[/oradata/data02]ls -l TEMP02.dbf
 -rw-r-----    1 oracle   dba      4980744192 Nov 16 15:15 TEMP02.dbf
 qry_app3[/oradata/data02]du -sk TEMP02.dbf
 337996  TEMP02.dbf

最后说下,像cp,dd这种拷贝命令,将不会理会Sparse File,其拷贝出来的文件大小和ls看到的一致
要以Sparse File的属性来移动Sparse File,貌似方法只有用tar/cpio来备份文件,在用pax来还原文件才行

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8242091/viewspace-619756/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8242091/viewspace-619756/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值