Utilities之EXPIMP小结
前段时间在处理一次导出导入操作的时候,遇到了一个通过设置buffer解决了的问题,因此回头翻了下旧文档,做下笔记。
export\import是常用的数据迁移和备份工具,导出为特有的二进制文件,在目标端被相应的import程序读取和使用。exp可以导出数据到硬盘和磁带。
在使用exp之前你有可能需要运行相应的脚本catexp.sql或者catalog.sql创建相应的对象视图、权限和角色以使用该功能;另外确保你的连接用户有相应的执行导出权限;当然你也要确保你有相应的写入磁盘或者磁带的权限并且有足够的存储空间。
为了确保你的连接用户的权限,至少需要有create session的权限,如果你需要导出别的用户的数据,需要有EXP_FLL_DATABASE角色授予,另外默认的一些模式数据比如:ORDSYS、MDSYS、CTXSYS、ORDPLUGINS、LBACSYS是不会被导出的。
为了确保你有足够的存储空间,可以简单的通过dba_segments或者user_segments的BYTES列以计算出大概的值。
三种执行模式:Command-line entries、 Interactive Export prompts和Parameter files。
三种方式中推荐参数文件方式,这种方式其实是命令行方式+参数文件,这种方式可以实现所有的功能,对于令人头痛的转义字符问题在参数文件中将可以得到简单的解决,而且参数文件可以方便的转移和编辑重用。一个小提示:参数文件是一个文本文件,可以使用任何文件编辑器打开和编辑,提供注释功能“#”,同时存在命令行中的参数和参数文件的情况下,视乎参数的前后位置,位置靠前参数将被位置靠后的覆盖。
四中导出模式:Full、User (Owner)、Table和Tablespace。不同导出模式需要关注的是用户是否有相应的执行权限以及不同对象是否能够被导出。
不同模式下使用的参数也不同,一共30多个的参数,记录一下不经常使用的或者平常不怎么关注的几个参数。
buffer用于定义导出记录存储的缓存空间,默认值一般为4096Bytes,可以通过公式计算你需要的buffer值:buffer_size = rows_in_array * maximum_row_size,如果设置值=0,那么每次获取一行的数据,另外包含LONG、LOB、BFILE、REF、ROWID、LOGICAL ROWID和DATE类型列的表格也将每次获取一行的导出。
compress默认为Y,用于导出导入的时候如何指定表的initial extent,Y表示在导入的时候将按照源表的存储参数执行导入,注意的是如果一个频繁的执行增加和删除操作,这个存储参数值将非常大,即使表中没有数据,你会发现在导入的时候将耗费非常长的时间和存储空间,解决办法就是设置该参数=N。
consistent用于控制导出会话开始的之后,针对导出表进行的DDL和DML操作是否反映到导出文件中,=Y情况将忽略会话开始之后任何DDL和DML效果。注意启用该数据需要额为的回滚空间。
direct参数可以指定导出操作略过SQL解析步骤,直接从磁盘文件读取数据进行后续操作,注意有的数据类型不知道直接导出操作。
feedback可以在导出中输出“*”显示导出进度情况下设置每个“*”的记录数量,通过这个可以让你明了的知道当前表格的导出数量。
file和filesize,前者没啥特殊的,就是制定导出文件位置和名称。filesize可以指定每个导出文件的最大值。一个特殊情况,如果你只指定了一个文件,同时指定了filesize,在写满了指定的唯一的一个文件之后,如果还为完成导出,exp将会提示将指定新的导出存储文件。
flashback_scn和flashback_time这两个参数用于控制导出特定scn和时间戳的时间点的数据,使用例子:flashback_scn=1654903和 flashback_time=to_timestamp(’20111118 11:10:00′,’yyyymmdd hh24:mi:ss’)。
parfile非常实用的参数,用于指定exp使用的参数文件,可以在参数文件中编辑导出参数。
query使用条件语句来限定导出记录,比如:where 1=2将不导出任何记录,注意该参数在table模式下使用,针对所有表清单生效,无法在direct=y下使用,无法在导出嵌套表使用。
recordlength配合direct=y使用,最大值65536,减少导出所需要的IO次数以及CPU时间。
RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT,这3个次数可以配置一起使用,用于配置在操作过程中遇到错误的时候是否挂起,以便在解决之后继续。
tablespaces,导出指定的表空间数据。
TRANSPORT_TABLESPACE由于传输表空间,需要将表空间置于只读状态。
TTS_FULL_CHECK用于检查导出内容是否为自包含的,可以结合DBMS_TTS.TRANSPORT_SET_CHECK以及视图TRANSPORT_SET_VIOLATIONS来检查是否为自包含的表空间。
-The End-
export\import是常用的数据迁移和备份工具,导出为特有的二进制文件,在目标端被相应的import程序读取和使用。exp可以导出数据到硬盘和磁带。
在使用exp之前你有可能需要运行相应的脚本catexp.sql或者catalog.sql创建相应的对象视图、权限和角色以使用该功能;另外确保你的连接用户有相应的执行导出权限;当然你也要确保你有相应的写入磁盘或者磁带的权限并且有足够的存储空间。
为了确保你的连接用户的权限,至少需要有create session的权限,如果你需要导出别的用户的数据,需要有EXP_FLL_DATABASE角色授予,另外默认的一些模式数据比如:ORDSYS、MDSYS、CTXSYS、ORDPLUGINS、LBACSYS是不会被导出的。
为了确保你有足够的存储空间,可以简单的通过dba_segments或者user_segments的BYTES列以计算出大概的值。
三种执行模式:Command-line entries、 Interactive Export prompts和Parameter files。
三种方式中推荐参数文件方式,这种方式其实是命令行方式+参数文件,这种方式可以实现所有的功能,对于令人头痛的转义字符问题在参数文件中将可以得到简单的解决,而且参数文件可以方便的转移和编辑重用。一个小提示:参数文件是一个文本文件,可以使用任何文件编辑器打开和编辑,提供注释功能“#”,同时存在命令行中的参数和参数文件的情况下,视乎参数的前后位置,位置靠前参数将被位置靠后的覆盖。
四中导出模式:Full、User (Owner)、Table和Tablespace。不同导出模式需要关注的是用户是否有相应的执行权限以及不同对象是否能够被导出。
不同模式下使用的参数也不同,一共30多个的参数,记录一下不经常使用的或者平常不怎么关注的几个参数。
buffer用于定义导出记录存储的缓存空间,默认值一般为4096Bytes,可以通过公式计算你需要的buffer值:buffer_size = rows_in_array * maximum_row_size,如果设置值=0,那么每次获取一行的数据,另外包含LONG、LOB、BFILE、REF、ROWID、LOGICAL ROWID和DATE类型列的表格也将每次获取一行的导出。
compress默认为Y,用于导出导入的时候如何指定表的initial extent,Y表示在导入的时候将按照源表的存储参数执行导入,注意的是如果一个频繁的执行增加和删除操作,这个存储参数值将非常大,即使表中没有数据,你会发现在导入的时候将耗费非常长的时间和存储空间,解决办法就是设置该参数=N。
consistent用于控制导出会话开始的之后,针对导出表进行的DDL和DML操作是否反映到导出文件中,=Y情况将忽略会话开始之后任何DDL和DML效果。注意启用该数据需要额为的回滚空间。
direct参数可以指定导出操作略过SQL解析步骤,直接从磁盘文件读取数据进行后续操作,注意有的数据类型不知道直接导出操作。
feedback可以在导出中输出“*”显示导出进度情况下设置每个“*”的记录数量,通过这个可以让你明了的知道当前表格的导出数量。
file和filesize,前者没啥特殊的,就是制定导出文件位置和名称。filesize可以指定每个导出文件的最大值。一个特殊情况,如果你只指定了一个文件,同时指定了filesize,在写满了指定的唯一的一个文件之后,如果还为完成导出,exp将会提示将指定新的导出存储文件。
flashback_scn和flashback_time这两个参数用于控制导出特定scn和时间戳的时间点的数据,使用例子:flashback_scn=1654903和 flashback_time=to_timestamp(’20111118 11:10:00′,’yyyymmdd hh24:mi:ss’)。
parfile非常实用的参数,用于指定exp使用的参数文件,可以在参数文件中编辑导出参数。
query使用条件语句来限定导出记录,比如:where 1=2将不导出任何记录,注意该参数在table模式下使用,针对所有表清单生效,无法在direct=y下使用,无法在导出嵌套表使用。
recordlength配合direct=y使用,最大值65536,减少导出所需要的IO次数以及CPU时间。
RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT,这3个次数可以配置一起使用,用于配置在操作过程中遇到错误的时候是否挂起,以便在解决之后继续。
tablespaces,导出指定的表空间数据。
TRANSPORT_TABLESPACE由于传输表空间,需要将表空间置于只读状态。
TTS_FULL_CHECK用于检查导出内容是否为自包含的,可以结合DBMS_TTS.TRANSPORT_SET_CHECK以及视图TRANSPORT_SET_VIOLATIONS来检查是否为自包含的表空间。
-The End-