暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Sparse File And Oracle temporary tablespaces

原创 eygle 2005-08-16
893
有朋友在Itpub上提出这样一个问题:unix 冷备,但出来的副本里temp01.dbf 文件变大了?
问题内容如下:

下面是原文件夹里查看到的结果:
# cd /md/md1/oracle/proddata
# ls -l temp01.dbf
-rw-r----- 1 oracle dba 14050926592 8月 16 01:24 temp01.dbf
# du -sk temp01.dbf
267176 temp01.dbf

下面是副本文件夹里查看到的结果:
# cd /u1/oracle/proddata
# ls -l temp01.dbf
-rw-r----- 1 oracle dba 14050926592 8月 16 07:52 temp01.dbf
# du -sk temp01.dbf
13728320 temp01.dbf
#

实际上这是Unix/Linux的一个特性,Oracle的临时表空间,初始创建时,比如你指定14G,这个空间是延后分配的。
只是文件创建时,file header/inode信息记录了这个大小,ls信息来自于此,而du 看的大小是计算实际使用的空间,所以可能不同于ls的结果。
而一旦你copy复制出来,空间必须立即分配,就是你你创建临时表空间/扩展的大小。
当然我们备份时是完全可以不备份临时表空间的。
这个特性在Unix/Linux上称为:Sparse File(稀疏文件)。
对于Windows操作系统,大部分(较新)版本同样支持稀疏文件。可以使用fsutil工具验证Windows是否支持稀疏文件:

C:\\>fsutil fsinfo volumeinfo c:\\

卷名 : SYSTEM

卷序列号 : 0x1ce0895c

组件长度最大值 : 255

文件系统名 : NTFS

支持区分大小写的文件名

保留文件名的大小写

支持文件名中的 Unicode

保留并加强 ACL

支持基于文件的压缩

支持磁盘配额

支持稀疏文件

支持重分析点

支持对象标识符

支持加密文件系统

支持带有名称的数据流

通过稀疏文件,Oracle可以快速创建临时表空间,但是同时也存在隐患,那就是如果将来文件使用时分配空间,而空间不足时将会出现错误。
如果创建时希望分配确定的空间,可以通过创建->删除表空间->再次创建制定reuse子句,此时Oracle将按指定大小一次分配存储空间。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论