Q:
系统环境:Solaris 5.8 Oracle7 Release 7.3.4.5 - 64bit Production
exp数据报错:
EXP-00002: error in writing to export file
EXP-00002: error in writing to export file
EXP-00000: Export terminated unsuccessfully
系统环境:Solaris 5.8 Oracle9i Release 9.2.0.1.0 - 64bit Production
exp数据报错:
EXP-00002: error in writing to export file
EXP-00002: error in writing to export file
EXP-00000: Export terminated unsuccessfully
A:
后來,在網絡上找到一些解決方法如下:
部分網友在Oracle9i中解決方案:
有网友说是2G文件大小限制,我当时的解决办法:当时的想法是权限问题,于是导出到/tmp目录下,一切正常,近4G大小。
理論介紹:
本文写作时大多数的export版本使用默认的文件处理API来创建export文件。这意味着在相当多的平台上,不能导出大于2GB的文件。
以下是一些克服的方法:
通常可以导出大于2GB的文件到裸设备上。
在Unix上可以使用命名管道来压缩/分割文件
可以导出到磁盘上
ORACLE8i允许导出到多个文件而不是一个大的文件
其他的2GB导出问题
ORACLE最大extent的大小为2GB.不幸的是许多发行版本的ORACL中的export都有一个问题,就是当指定compress=y时,可能导出的文件中其Next存储子句会出现大于2GB的情况。这会导致即使指定了ignore=y时,import也会出错。
compress=y肯能修改storage子句initial子句,指定输出是否压缩碎片的数据段,便于在重建时使用大的extent.
本问题可参见[BUG:708790]和[NOTE:62436.1]
典型的2GB+时export错误:
. .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作为单位。当import时,生成的数据文件若大于2GB,可能导致ora-2237错误。
解决办法是先创建表空间(用M代替bytes),然后导入文件。
其它解決方案:
export 大文件可以采取的方法:
1.裸设备
比如直接倒出到/dev/rlvtest等。
2.命名管道(Unix下)
mknod /tmp/imp_pipe p
compress < /tmp/exp_pipe > export.dmp.Z &
exp file=/tmp/exp_pipe userid=xxx/xxx tables=...
mknod /tmp/imp_pipe p
uncompress < export.dmp.Z>/tmp/imp_pipe &
imp file=/tmp/imp_pipe userid=xxx/xxx tables=...
3.压缩/文件拆分:(以下只在ksh中有效:)
echo |exp file=>(compress | split -b 1024m - expdmp-) userid=xxx/xxx tables=...
echo |imp file=<(cat expdmp- * |zcat) userid=xxx/xxx tables=...
4.可以直接倒出到磁带
比如exp file=/dev/rmt0 ....
5.可以在ORACLE8i+版本里面,通过使用filesize 和file相结合,倒出生成多个文件.
**************************************************************
1)命令行-完全导出
exp userid=cams/cams@cams full=y inctype=complete
file=(/tmp/2004020601.dmp, /tmp/2004020602.dmp, /tmp/2004020603.dmp)
filesize=2GB log=/tmp/20040206.log
该命令完全导出全库数据,导出到多个文件中每个文件最大2GB,导出过程记录日志
2)命令行-累积导出
exp userid=cams/cams@cams full=y inctype=cumulative
file=(/tmp/2004020601.dmp, /tmp/2004020602.dmp) filesize=2GB
log=/tmp/20040206.log
该命令累积导出全库数据,导出到多个文件中,每个文件最大2GB,导出过程记录日志.
3)命令行-增量导出
exp userid=cams/cams@cams full=y inctype=incremental
file=(/tmp/2004020601.dmp, /tmp/2004020602.dmp) filesize=2GB
log=/tmp/20040206.log
--转自