ITPub博客

首页 > Linux操作系统 > Linux操作系统 > EXP-00002

EXP-00002

原创 Linux操作系统 作者:weifenghq 时间:2007-01-09 16:21:50 0 删除 编辑
2Gb导出文件的大小  
  当编写大部分版本的Export时,在创建导出文件上都是使用了默认的文件操作API。这就意味着在很多平台上根本就没有可能导出2Gb或者大于2Gb的文件系统文件(file system file)。
  
  但是仍然有一些可选项可以用于在Export时解决2Gb的限制:
  
  ü     将大于2Gb的文件导出到裸设备上基本上是没有问题的,当然这首先要求裸设备的大小必须能够容纳整个导出文件。
  
  ü     导出到一个允许压缩或者切割的命名管道中(适用Unix平台)。
  
  参看“在Unix平台上导出大于2Gb文件的快速参考”一文 [NOTE:30528.1]。
  
  ü     导出到磁带(适用大多数平台)
  
  参看“在Unix系统中导出到磁带”一文[NOTE:30428.1]。(这篇文章同时页详细描述了如何导出到Unix管道和远程shell中)
  
  ü     Oracle8i允许导出到多个小文件中,以替代单一的大文件。
  
  其它的2Gb导出问题
  
  Oracle允许区(extent)的尺寸最大为2Gb。但是不幸的是,在大多数的Oracle发行版中Export都存在这样一个问题,当你Export一个大文件,并且指定了COMPRESS=Y,那么就有可能在导出文件的NEXT存储子句中包含了一个大于2Gb的值。这样将会导致Import失败,即使是在Import时候指定了IGNORE=Y。Oracle已经在在[BUG:708790]中报告了这个问题,并且在[NOTE:62436.1]中提出了警告。
  
  当Export碰到2Gb限制的时候,会报类似下面的错误:
  
  . . exporting table          BIGEXPORT
  
  EXP-00015: error on row 10660 of table BIGEXPORT,
  
  column MYCOL, datatype 96
  
  EXP-00002: error in writing to export file
  
  EXP-00002: error in writing to export file
  
  EXP-00000: Export terminated unsuccessfully
  
  在[BUG:185855]中提到了第二个问题,这个问题指出一个全库导出产生的CREATE TABLESPACE命令将在文件大小上使用BYTES为单位,如果文件大小超过2Gb,那么在导入的时候就会产生一个ORA-2237错误。这个问题可以通过在导入之前先以M为单位而不是BYTES为单位来创建表空间这样的方法来解决。[BUG:490837]也指出了相类似的问题。
  
  导出到磁带
  
  导出的时候VOLSIZE参数限制在4Gb以下,在有些平台上可能只有2Gb。
  
  在Oracle8i中已经修正了这个问题。[BUG:490190]中对此问题有所描述。
  
  SQL*Loader和2Gb
  
  在SQL*Loader试图打开一个超过2Gb的文件时,将会报以下错误:
  
  SQL*Loader-500: Unable to open file (bigfile.dat)
  
  SVR4 Error: 79: Value too large for defined data type
  
  在[NOTE:30528.1]中的例子可以稍作修改以使在SQL*Loader中使用大的输入文件。
  
  Oracle 8.0.6在SQL*Loader中已经对discard file和log file实现了大文件支持,但是对于输入的data file在各个平台上仍然时不一样的。[BUG:948460]中记录了输入文件大小限制的详细信息。[BUG:749600]则记录了最大的discard file文件大小。
  
  Oracle和其它的2Gb问题
  

  这个章节列举了其它各色2Gb问题。
  
  Oracle 8.0.5版本以后在大部分的平台上Oracle都提供了64位的版本。从8.0.5的README文件中可以看到相应的介绍-[NOTE:62252.1]
  
  DBV(数据库验证程序)可能无法扫描超过2Gb的数据文件,并会报DBV-100错误。在[BUG:710888]中报告了此错误。
  
  如果要在Oracle中创建大于2Gb的文件, SQL命令行的"DATAFILE ... SIZE xxxxxx"子句部分必须以M或者K作单位来指定,否则将会报"ORA-02237: invalid file size"错误。在[BUG:185855]中报告了此错误。
  
  在Oracle 7.3.4发行版以前表空间的限额不能超过2Gb。比如:
  
  ALTER USER QUOTA 2500M ON
  
  这样将会报" ORA-2187: invalid quota specification."错误。
  
  在[BUG:425831]中报告了此错误。解决方法是如果一个用户需要超过2Gb的限额,那么就给他赋予UNLIMITED TABLESPACE权限。
  
  如果spool的输出文件达到了2Gb,那么会出现错误。比如:SQLPLUS的命令spool。
  
  在Oracle工具中的一些CORE函数不支持大文件。[BUG:749600]中报告了此错误,在Oracle 8.0.6和8.1.6版本中已经修正了。但是要注意在Oracle 8.1.5和别的任何补丁中都没有修改这个错误。另外即使已经有修正,但是仍然还会有大文件限制因为不是所有的代码都使用了这些CORE函数。
  
  注意:[BUG:749600]虽然阐明了CORE函数,但是代码的某些部分仍然有问题。比如:SQL*Loader中输入文件的读取就没有使用CORE。
  
  UTL_FILE包使用了上述的CORE函数,所以在没有修正的Oracle版本中仍然有2Gb限制。是一个允许在PL/SQL中进行文件存取的PL/SQL包。
  
  特定平台中的大文件
  
  下面是一些特定平台中关于大文件支持的参考资料。虽然我们已经努力使这些文章的资料始终保持更新,但是仍然建议在存取大文件时对每一个操作要小心谨慎地测试。
  
  平台
  
  参考
  
  AIX (RS6000 / SP)
  
  [NOTE:60888.1]
  
  HP
  
  [NOTE:62407.1]
  
  Digital Unix
  
  [NOTE:62426.1]
  
  Sequent PTX
  
  [NOTE:62415.1]
  
  Sun Solaris
  
  [NOTE:62409.1]
  
  Windows NT
  
  FAT文件系统支持最大4Gb的文件
  
  NTFS文件系统理论上支持最大16Tb的文件
  
  1.在NT的Oracle8上使用大文件之前请先参考[NOTE:67421.1]
  
  2.Oracle8.1.6的DBVERIFY程序有问题(参考[BUG:1372172])
  
  3.在8.1.6 / 8.1.7中自动扩展到4Gb时会出现问题导致数据库崩溃。(参考[BUG:1668488])[@more@]

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

请登录后发表评论 登录
全部评论

注册时间:2008-11-25

  • 博文量
    100
  • 访问量
    578918