专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »数据库 » tobeornottobe:2Gb or Not 2Gb »正文

tobeornottobe:2Gb or Not 2Gb

来源: 发布时间:星期二, 2009年2月24日 浏览:0次 评论:0
="t18">
  
2Gb or Not 2Gb - File limits in Oracle (Part II)



导出(EXPort)和2Gb



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=YOracle已经在在[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]中提到了第 2个问题这个问题指出个全库导出产生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 d 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问题



l Oracle 8.0.5版本以后在大部分平台上Oracle都提供了64位版本从8.0.5README文件中可以看到相应介绍-[NOTE:62252.1]

l DBV(数据库验证)可能无法扫描超过2Gb数据文件并会报DBV-100在[BUG:710888]中报告了此

l 假如要在Oracle中创建大于2Gb文件 SQL命令行"DATAFILE ... SIZE xxxxxx"子句部分必须以M或者K作单位来指定否则将会报"ORA-02237: invalid file size"在[BUG:185855]中报告了此

l 在Oracle 7.3.4发行版以前表空间限额不能超过2Gb比如:

ALTER USER <username> QUOTA 2500M ON <tablespacename>

这样将会报" ORA-2187: invalid quota specication."

在[BUG:425831]中报告了此解决思路方法是假如个用户需要超过2Gb限额那么就给他赋予UNLIMITED TABLESPACE权限

l 假如spool输出文件达到了2Gb那么会出现比如:SQLPLUS命令spool

l 在Oracle工具中些CORE不支持大文件[BUG:749600]中报告了此在Oracle 8.0.6和8.1.6版本中已经修正了但是要注重在Oracle 8.1.5和别任何补丁中都没有修改这个另外即使已经有修正但是仍然还会有大文件限制不是所有代码都使用了这些CORE

注重:[BUG:749600]虽然阐明了CORE但是代码某些部分仍然有问题比如:SQL*Loader中输入文件读取就没有使用CORE

l UTL_FILE包使用了上述CORE所以在没有修正Oracle版本中仍然有2Gb限制<Package:UTL_FILE>是个答应在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.在NTOracle8上使用大文件的前请先参考[NOTE:67421.1]

2.Oracle8.1.6DBVERIFY有问题(参考[BUG:1372172])

3.在8.1.6 / 8.1.7中自动扩展到4Gb时会出现问题导致数据库崩溃(参考[BUG:1668488])
0

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: