MYSQL网站制作之2Gb or Not 2Gb - File limits in Orac...
对于IT经理来说,令他们喜欢的MySQL的简单性还有另一方面。MySQL可以运行的更快速。某些人或许会说MySQL缺少了一些人们想要的功能。oracle2GborNot2Gb-FilelimitsinOracle
翻译:Kamus(Seraphim)
校订:Bloomit
邮件:kamus@itpub.net
日期:2004-1
常常会传闻导进导出的时分,备份恢复的时分,SQL*Loader导进数据的时分,文件超越了2G巨细,了局招致毛病。
自己理科卒业,甚么二进制,十六进制,数据布局,操纵体系等等的一概没有学过,以是对此成绩一向都只要一个含混的熟悉,明天在metalink下面闲逛,溘然发明了这篇文章,兴之而至,决意好悦目看,看完今后,感到关于此成绩分明了良多,因而就特地翻译成了中文,但愿对人人也有所匡助。
关于本文中说起的一切别的Notes和Bugs也做了尽量的收拾(还未翻译,今后假如偶然间再渐渐作),只是文中提到的一些Bug因为自己Metalink帐号的限定亦或是Bug的不公然性,其实不能看到具体形貌,关于如许的Bug就没法再作收拾。
原文出处:http://metalink.oracle.com
DocID:Note:62427.1原文创立日期:1998-9-2原文最初更新日期:2003-8-6
先容
本文论述了“2Gb”成绩,注释了为何2Gb会是一个如许充斥魔力的数字,而且假如你想在Oracle的使用中利用凌驾2Gb巨细的文件,那末这篇文章也告知了一些你应当晓得的事变。
本文以Unix操纵体系为基本,由于年夜部分的2Gb成绩都产生在Unix下面,固然文中也提到了一些关于别的非Unix操纵体系的相干材料,在本文的最初一节列出了各个操纵体系本人的限定。
本文主题包含以下几点:
l为何2Gb是一个特别的数字?
l如何利用凌驾2Gb(2Gb+)的文件?
l导出(Export)和2Gb
lSQL*Loader和2Gb
lOracle和别的2Gb成绩
l分歧操纵体系上的“年夜文件”(LargeFiles)
为何2Gb是一个特别的数字?
良多以后正在利用的CPU和API都利用了32位(bit)的字长,而恰是这个字长关于良多操纵发生了影响。
浩瀚的场所下文件操纵的尺度API在对文件巨细和文件中以后地位的处置都利用了有标记32位字(32-bitsignedword)。一个有标记32位字以最高位来暗示正负,以是只剩下31位来存储真实的数值,而16进制中存储在31位中的最年夜正值就是0x7FFFFFFF,也就是10进制中的+2147483647,这恰是一个邻近2Gb的值。
2Gb大概更年夜的文件一样平常被称为“年夜文件”,当你在32位情况中利用2147483647乃至更年夜的数字时,你就极可能会碰着一些成绩。为懂得决这些成绩,最新的操纵体系已从头界说了一系列完整使用64位寻址体例来操纵文件巨细和偏移量的体系函数。最新的Oracle刊行版也已利用了这些新的接口,可是假如在你决意要利用“年夜文件”之前,你仍旧有很多的成绩必要思索。
别的一个特别的数字是4Gb。也就是作为无标记字(unaignedvalue)的十六进制数字0xFFFFFFFF(十进制是4294967295),这是一个略小于4Gb的值。将该值加一将使低4位字节成为0x00000000,同时发生1进位。这个进位在32位运算中将会得到。以是4Gb也是一个大概会发生成绩的特别数字。本文中对这个成绩也有所说起。
关于利用Oracle这意味着甚么?
32bit的成绩在很多方面都影响到了Oracle,为了利用“年夜文件”,你必要满意以下前提:
1.一个撑持2Gb+文件的操纵体系大概裸设备(Rawdevices)
2.一个具有撑持存取2Gb+文件的API的操纵体系
3.一个利用了这些API的Oracle版本
明天年夜多半的平台都已撑持了年夜文件,而且关于这些文件有64bit的API,Oracle7.3及今后版本一样平常已利用了这些API,可是依据分歧的平台,分歧的操纵体系和分歧的Oracle版本仍旧有良多纷歧样的情形。在一些场所下默许就是撑持“年夜文件”的,可是别的一些场所却大概必需要打一些补钉。
一向到写这篇文章的时分,Oracle内里另有一些工具是没有更新到利用这些新的API的,好比尽人皆知的EXPORT和SQL*LOADER,不外仍旧再次夸大一下,因为平台和操纵体系的分歧,情形仍是纷歧样的。
为何要利用2Gb+的文件?
在这一节中我们试着总结一下关于Oracle的数据文件利用年夜文件和设备("large"files/devices)的长处和弱点。
利用年夜于2Gb文件的长处:
l在年夜多半平台上Oracle7撑持最多1022个数据文件。假如文件小于2G,那末也就是限定了数据库的巨细只能是小于2044Gb。固然这关于撑持了更多半据文件的Oracle8来讲已不再是个成绩(Oracle8撑持每一个表空间中包括最多1022个数据文件)。
l在实际情形中Oracle7的最年夜数据库尺寸会比2044Gb小,由于一样平常数据文件都寄存在独自的表空间中,而良多数据文件便可能远远小于2Gb。利用年夜文件可让数据库超出2044Gb的这个限定。
l利用年夜文件意味着关于较小的数据库只必要办理较少的文件。
l必要较少的文件处置资本。
利用年夜于2Gb文件的弱点:
l恢复的单元更年夜了。一个2Gb文件的备份和复原,依据备份媒体和磁盘速率的差别,会泯灭15分钟到1个小时的工夫,那末一个8Gb的文件就要花4倍如许的工夫。
l备份和恢复的并行操纵新能将会收到影响。
l会碰着一些平台独有的限定,好比说在凌驾2Gb以上异步I/O的操纵便可能会酿成线性操纵。
l处置2Gb以上的文件大概会必要补钉大概一些特别的设置。相对小文件来讲也会有更年夜的风险性。好比在一些AIX的刊行版上,凌驾2Gb,异步I/O就会利用线性操纵。
利用年夜于2Gb文件的要点:
l跟操纵体系供应商确认,年夜文件是不是被撑持,同时要怎样往设置。
l跟操纵体系供应商确认,真实的最年夜文件限定是几?
l扣问Oracle手艺撑持,断定关于你现有的平台,操纵体系版本,Oracle版本,是不是必要甚么补钉大概另有甚么限定?
l记着,假如你真的思索关于操纵体系大概Oracle要打一些补钉的话,那末就再反省一遍下面提到的这些成绩。
l确认关于一切要利用年夜文件读取的用户来讲,操纵体系的限定已准确设定。
l确认一切的备份剧本都可以处置年夜文件。
l注重,关于利用凌驾2Gb的数据文件,关于最年夜文件巨细另有一个限定。这个限定依附于你的体系平台和Oracle初始化参数DB_BLOCK_SIZE。在年夜多半平台上(包含Unix,NT,VMS)文件巨细的限定在4194302*DB_BLOCK_SIZE这么年夜。
文档形貌了改动文件巨细中存在的成绩,出格是凌驾了2Gb的时分。
一样平常必要注重的要点:
必要当心设置文件的主动扩大。明智的作法是在不利用“年夜文件”的场所下,将主动扩大的数据文件最年夜尺寸限定在2Gb以下。别的注重因为将有大概界说一个凌驾Oracle处置极限的MAXSIZE数值,这在resize以后将会激发一个外部毛病(毛病显现为ORA-600)
在良多平台上,Oracle数据文件的头部都包括着附加的数据块,以是创立一个2Gb的数据文件实践上必要比2Gb更多的磁盘空间。在UNIX平台上数据文件头部的附加数据块巨细一般即是DB_BLOCK_SIZE的巨细,可是在裸设备上大概必要占用更多一些的空间。
2Gb相干的Oracle毛病
当2Gb限定抵达的时分大概会产生上面这些毛病,这些毛病的发生没有特定的按次。
ORA-01119Errorincreatingdatafilexxxx
ORA-27044unabletowriteheaderblockoffile
SVR4Error:22:Invalidargument
ORA-19502writeerroronfilefilename,blocknox(blocksize=nn)
ORA-27070skgfdisp:asyncread/writefailed
ORA-02237invalidfilesize
KCF:write/openerrordba=xxxxxxblock=xxxxonline=xxxxfile=xxxxxxxxfilelimitexceed.
Unixerror27,EFBIG
人力成本上的节省,MySQL的用户Spacemonkey实验室的首席执行官MitchPirtle如此表示:“维护MySQL使得你不需要一个年薪15万美元的DBA。 从项目平台的选择上讲,我们关心的,应该是一款产品能不能满足任务需求,而不是网上怎么说。 学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了! 理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识 个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。 入门没那么困难,精通没那么容易 原来公司用过MYSQL自己也只是建个表写个SQL 相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐 Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。
页:
[1]