合 exp和expdp的filesize参数的使用--导出多个文件
Tags: Oracle
在逻辑导出数据时,如果不指定文件大小(注意,0值相当于不指定FILESIZE)值,不管在File参数指定的文件数量是多少,输出都将写入一个文件。
filesize 若导出的数据文件大,应该用该参数,限制文件大小不要超过2g
如:exp userid=lhr/lhr file=/tmp/test1,test2,test3,test4,test5 filesize=2G log=test.log
这样将创建test1.dmp,test2.dmp等,每个文件大小为2g。
EXPDP 命令提供了一个FILESIZE参数,用来指定单个DUMP文件的最大容量,要有效的利用parallel参数,filesize参数必不可少。
举例:某用户对象占用了4G左右的空间,实际导出后的DUMP文件约为3G,我们尝试在导出该用户时指定并行度为4,设置单个文件不超过500M,则语法如下:
$ expdp user/pwd directory=dump_file dumpfile=expdp20190416%U.dmp logfile=expdp_20100820.log filesize=500M parallel=4
示例SQL:
1 | exp userid=scott/tiger file=/tmp/test1,/tmp/test2,/tmp/test3,/tmp/test4,/tmp/test5 filesize=1024000 log=test.log``imp userid=lhr/lhr FILE=/tmp/test1,/tmp/test2,/tmp/test3,/tmp/test4,/tmp/test5 LOG=imp_emp.log FROMUSER=scott TOUSER=lhr TABLES=emp``--数据泵示例``expdp system/lhr SCHEMAS=scott DIRECTORY=DATA_PUMP_DIR DUMPFILE=DATA_PUMP_DIR:expdp_20190416_%U.dmp FILESIZE=1024000 ``impdp lhr/lhr SCHEMAS=scott DIRECTORY=DATA_PUMP_DIR DUMPFILE=DATA_PUMP_DIR:expdp_20190416_%U.dmp |
[转]FILESIZE参数 – 输出写入到多个导出文件
FILESIZE参数 – 输出写入到多个导出文件
\1. 适用于:
甲骨文公司服务器 - 企业版 - 版本:8.1.7至10.2
甲骨文公司服务器 - 个人版 - 版本:8.1.7至10.2
甲骨文公司服务器 - 标准版 - 版本:8.1.7至10.2
本文档中的信息适用于任何平台。
\2. 目的:
本文档提供当从Oracle数据库导出数据或将数据导入回到Oracle数据库中时有关使用FILESIZE参数信息。
\3. 范围和应用:
本手册适用于要使用EXPORT实用程序从Oracle数据库中导出数据,并创建多个导出转储文件,而不是一个单一的(通常是非常大)导出转储文件的Oracle8i,Oracle9i以及Oracle10g数据库的用户。手册提供了有关使用FILESIZE参数,典型的错误信息,和一些相关的缺陷与可能的解决方法的信息。
\4. 简介:
\1) 默认情况下,输出将数据写入一个出口转存,直至达到最大大小。可以在一个文件中存储的最大值是依赖于您的操作系统。另见:
注:62427.1 “2GB或不2GB - 文件限制在Oracle”
\2) 首先介绍Oracle8i,输出支持写入到多个出口文件,输入可以读入多个出口文件。如果你给FILESIZE参数指定一个值(字节的限制),出口将只写入转储文件您指定的字节大小的数据。
\3) 在Oracle9i及更高版本的服务器上,FILESIZE参数有一个最大的值,这个值等于可以存储在64位(16EB(艾字节)= 16384 PB(PB级)=16777216TB(TB级)=17179869184GB(千兆字节))的最大值。
\4) 经典输出客户端(EXP)没有一个真正的转储文件的最佳大小。即使我们只从一个非常大的转储导入一张小表,我们业要通读完整的转储文件。
\5) 请注意这与Oracle10g的数据泵的客户端(expdp和impdp)不同。如果我们从多个转储文件导入一张小表,我们只能读取数据泵转储文件头,而且我们读取的数据泵主表可能是存储在较后位置的转储文件之一。基于主表中的信息,我们确定该小表处在的转储文件(S),然后我们只读那些特定的转储文件(S)。
\6) 相比于处理多个小文件,从文件查看点处理一个单一的大型输出转储文件更加困难。 因此,250GB的数据,如果需要导出,建议创建多个较小的文件,例如:指定FILESIZE=25G,创建10个规模较小的转储文件。
\7) 导出到磁带设备时,不使用FILESIZE参数,而使用VOLSIZE参数。有关详情,请参阅:
注:30428.1 “Unix系统上的导出到磁带””
\8) 当导出到一个命名管道,不推荐使用FILESIZE参数。 如果使用FILESIZE参数时使用命名管道,请确保您预先为每个出口转存文件创建一个命名管道。有关详情,请参阅:
注:30528.1 “使用导出(EXP - 2 EXP-15),导入(IMP-2IMP-21),或SQL * Loader时的大文件的问题(2GB +)”
\5. 出口参数的用法:FILESIZE
如果你不指定文件大小(注意,0值相当于不指定FILESIZE)值,不管在File参数指定的文件数量是多少,输出都将写入一个文件。
如果您导出文件所需的空间超过可用的磁盘空间,出口将中止操作,待提供足够的磁盘空间后,输出操作才可以重复并完成。
FILESIZE值可以指定为KB(千字节数)级。例如,FILESIZE=2KB和FILESIZE= 2048是相同的。同样,MB指定兆字节(1024 * 1024)和GB指定千兆字节(1024** 3)。
B为字节的简写;该数字不用继续乘以字节大小而获得最终的文件大小(FILESIZE=2048B即是FILESIZE= 2048)。
FILESIZE=0(默认)输出写入到一个单一的文件
FILESIZE=1024或:
FILESIZE=1K或:
FILESIZE=1KB输出写入1千字节的文件
FILESIZE=1M或:
FILESIZE=1MB输出写入1兆字节的文件
FILESIZE=1G或:
FILESIZE= 1GB,输出写入1千兆字节的文件
当输出写入的数据量超过FILESIZE指定的最大值,输出会从File参数中得到下一个输出文件的名称,如果它已经使用了所有的File参数指定的名称,输出会提示您提供了一个新的输出文件名。
如果输出的数据量不适合提供的文件清单,输出将提示需要更多的文件名。
如果在后台运行的输出程序,确保给输出提供足够的文件名。在等待您提供额外的文件名时输出程序会挂起,而您可能不能发现文件名不够用。
例如:运行一个完整的数据库输出的直接路径和创建750 MB输出转储文件:
File: exp.par
-------------
FILESIZE=750MB
FILE=exp_f1.dmp,exp_f2.dmp,
exp_f3.dmp,exp_f4.dmp
FULL=Y
DIRECT=Y
LOG=exp_full.log
% exp system/manager PARFILE=exp.par
注1: 当出口分配一个新的出口转储文件,这将记录在在出口日志中。
E.g:
...
continuing export into file exp_f2.dmp
...
注2: 已指定File参数,但是出口不需要这个文件,则该指定的FILE不会被创建。
例如:在上面的例子,如果输出总额为2 GB,然后输出将创建3个文件:
- exp_f1.dmp with size of 750 Mb
- exp_f2.dmp with size of 750 Mb
- exp_f3.dmp with size of 500 Mb
注3: 如果出口需要更多的文件,将数据导出,它会提示一个新的文件名。
例如:在上面的例子,如果出口总额为3.5 GB,然后出口将创建4个750 MB的文件,并会提示为剩余的500 MB数据创建新文件。键入下一个出口转储文件的文件名后,出口将继续下去。
Example:
...
Export file: EXPDAT.DMP > exp_f5.dmp
...
注4 请注意,File参数指定文件名的命令行语法是:
---命令行模式可能的语法(2例):
E.g:
%exp...file=exp_f1.dmp exp_f2.dmp exp_f3.dmp exp_f4.dmp...
%exp...file=exp_f1.dmp,exp_f2.dmp,exp_f3.dmp,exp_f4.dmp ...
或者在Windows系统(3附例):
D:>exp...file=(exp_f1.dmp exp_f2.dmp exp_f3.dmp exp_f4.dmp)...
D:>exp...file=(exp_f1.dmp,exp_f2.dmp,exp_f3.dmp,exp_f4.dmp)...
D:>exp...file="exp_f1.dmp,exp_f2.dmp,exp_f3.dmp,exp_f4.dmp"...
或者在Unix系统(3附例):
% exp... file=(exp_f1.dmp exp_f2.dmp exp_f3.dmp exp_f4.dmp)...
% exp...file=(exp_f1.dmp,exp_f2.dmp,exp_f3.dmp,exp_f4.dmp)...
% exp...file='exp_f1.dmp,exp_f2.dmp,exp_f3.dmp,exp_f4.dmp' ...
\6. 进口参数:FILESIZE
输入数据时,必须使用导入参数FILESIZE告诉导入最大的出口指定转储文件的大小。FILESIZE值可以指定为KB(千字节数)级。例如,FILESIZE=2KB和FILESIZE= 2048是相同的。同样,MB指定兆字节(1024 * 1024)和GB指定千兆字节(1024** 3)。
B为字节的简写;该数字不用继续乘以字节大小而获得最终的文件大小(FILESIZE=2048B即是FILESIZE= 2048)。
FILESIZE=0(默认)出口读取一个单一的文件
FILESIZE=1024或:
FILESIZE=1K或:
FILESIZE=1KB出口读取1千字节的文件
FILESIZE=1M或:
FILESIZE=1MB出口读取1兆字节的文件
FILESIZE=1G或:
FILESIZE= 1GB,出口读取1千兆字节的文件
例如:从上面创建的出口转储文件运行一个表级别的进口程序。
File: imp.par
-------------
FILESIZE=750MB
FILE=exp_f1.dmp,exp_f2.dmp,
exp_f3.dmp,exp_f4.dmp
FROMUSER=scott
TOUSER=scott
TABLES=emp
LOG=imp_emp.log
% imp system/manager PARFILE=imp.par