首 页 | 网页模板 | 教程 | 源码下载 | 书籍下载 | 图片素材 | 字体 | JAVA特效 | FLASH源码 | 软件 | 矢量 | 论坛 | 其它 |
设为主页
加入收藏
联系站长
平面设计 | 网页制作 | 程序编写 | 数 据 库 | 媒体动画 | 网络冲浪 | 服务器相关 |
当前在线
广告:P4服务器电信机房6999/年即送产权 | 疾风下载
在 UNIX 系统下导出超过2GB的数据库
2005-4-21 7:02:32  作者:模板天下收集整理  来源:未知 网友评论 0 条 论坛
  

很多 UNIX 变种都使用一些进行文件操作的系统调用,而这些对文件的操作使用32位无符号整数来指示文件偏移量。不幸的是,32位无符号整数只限制到0到2GB的范围。

在 UNIX 系统开始接受超过2GB大小的文件时,就要求应用程序和工具程序使用替代的系统调用来操作这些大文件,比如说使用 fseek64 系统调用。之所以做出这种决定是为了避免破坏老程序,这些老程序依然使用32位整数和最初的系统调用,而无须重新编译。

Oracle 导入和导出工具是使用最初的系统调用在内部编写成的。这就意味着不能在 UNIX 系统下导出和导入超过2GB的文件,除非你使用一些诀窍将大文件拆分成小于2GB的文件。

在 Oracle 8i之前,可以使用“split”命令和命名管道将 exp的输出写到多个文件中。Split 命令接受标准的输入并将输出写到多个文件,在达到文件大小限制时切换到一个新文件。例如:

mknodpipe.dmp p
split -b 2047m < pipe.dmp &
exp system/manager file=pipe.dmp full=y
rmpipe.dmp

这个过程会创建xaaxabxac等文件。运行以下命令可以导入这些文件:

mknodpipe.dmp p
cat xaaxabxac > pipe.dmp &
imp system/manager file=pipe.dmp full=y
rmpipe.dmp

从 Oracle 8i开始,Oracle 添加了一个命令行参数filesize,其作用有点与 split命令的作用类似。它会自动地将输出创建为一组文件,而不是单一一个的文件。确保filesize小于2GB这一点是非常重要的,而且在导入时指定同样的参数也是非常重要的。

exp system/manager file=big.dmpfilesize=2000M full=y

imp system/manager file=big.dmpfilesize=2000M full=y

因为导出文件有相当大的压缩空间,所以你依然可以使用 split 导出到一个大概10GB的文件中,并且依然保持不超过2GB的限制。

mknodpipe.dmp p
compress < pipe.dmp > expdat.dmp.Z &
exp system/manager file=pipe.dmp full=y
rmpipe.dmp

下面是导入一个文件的代码:

mknodpipe.dmp p
uncompress expdat.dmp.Z > pipe.dmp &
imp system/manager file=pipe.dmp full=y
rmpipe.dmp

共分1页  [1] 
>> 相关文章

关于网站 | 客服中心 | 服务条款 | 友情链接 | 广告联系 | 本站历程 | 网站导航

吉ICP备05000107号