1. exp/imp简介
exp/imp是oracle提供的一个对数据库进行逻辑备份的客户端工具。利用这个工具可以把数据库按表空间、用户或某些表保存到操作系统下的一个二进制文件里。这个二进制文件与平台无关,利用这个特性可以完成数据的跨平台的迁移。exp/imp可以看做是一个select--create--insert的过程。exp时select出要导出的数据和相关的ddl,imp时执行这个“脚本”(ddl和insert)。
2.exp/imp导入导出的模式
exp/imp一共有四种模式:FULL、USER、TABLES、TABLESPACES
FULL:必须具有EXP_FULL_DATABASE的权限,导出数据库中所有用户的对象,sys用户的对象不会被导出,因此属于sys用户的一些触发器将会丢失,导入后需要手工创建。
USER:具有create session的用户,即可对属于自己的schame进行导出。user模式将导出该模式下的所有对象及对象权限(不包括系统权限)等。
TABLES:导出指定的表(表明可用通配符%)。
TABLESPACES:主要用于transport tablespaces,必须以sysdba权限才能进行。
3.exp/imp主要参数介绍
exp:
BUFFER:指定缓冲区的大小,即一次fetch获取的最大行数,以字节为单位,默认是4096。buffer参数只在常规路径导出生效,直接路径导出不生效。
FILE:指定导出的文件名称,结合FILESIZE参数(导出文件的大小)可以指定多个数据文件名称,这样可以实现一边exp,一遍imp。
COMPRESS:不是指对导出的数据进行压缩。是指在导入时,创建表时指定initial_extent的大小,默认是Y。参数取Y时,导入时initial_extent的大小为导出时表的表大小;参数取N时,导入时initial——extent的大小即为导出表的initial_extent的大小。
COMPRESS 取Y,实验如下:
SQL> select segment_name,initial_extent,next_extent,bytes from user_segments whe
re segment_name='T';
SEGMENT_NA
INITIAL_EXTENT NEXT_EXTENT
BYTES
---------- -------------- ----------- ----------
T
65536
14680064
SQL> host exp userid=test/test tables=t file=d:\a.dmp
compress=y;
Export: Release 10.2.0.1.0 - Production on 星期五 4月 12 19:22:30 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的表通过常规路径...
. . 正在导出表 T导出了 278528 行
成功终止导出, 没有出现警告。
SQL> conn test1/test1
已连接。
SQL> host imp userid=test1/test1 file=d:a.dmp fromuser=test touser=test1
Import: Release 10.2.0.1.0 - Production on 星期五 4月 12 19:24:09 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
经由常规路径由 EXPORT:V10.02.01 创建的导出文件
警告: 这些对象由 TEST 导出, 而不是当前用户
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 TEST 的对象导入到 TEST1
. . 正在导入表 "T"导入了 278528 行
成功终止导入, 没有出现警告。
SQL> select segment_name,initial_extent,next_extent,bytes from user_segments whe
re segment_name='T';
SEGMENT_NA
INITIAL_EXTENT NEXT_EXTENT
BYTES
---------- -------------- ----------- ----------
T
14680064
14680064
SQL> conn test1/test1
已连接。
SQL> drop table t;
表已删除。
SQL> conn test/test
已连接。
SQL> select segment_name,initial_extent,next_extent,bytes from user_segments whe
re segment_name='T';
SEGMENT_NA
INITIAL_EXTENT NEXT_EXTENT
BYTES
---------- -------------- ----------- ----------
T
65536 14680064
SQL> host exp userid=test/test tables=t file=d:\b.dmp
compress=n;
Export: Release 10.2.0.1.0 - Production on 星期五 4月 12 19:42:24 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集
即将导出指定的表通过常规路径...
. . 正在导出表 T导出了 278528 行
成功终止导出, 没有出现警告。
SQL> conn test1/test1
已连接。
SQL> host imp userid=test1/test1 file=d:\b.dmp fromuser=test touser=test1;
Import: Release 10.2.0.1.0 - Production on 星期五 4月 12 19:43:35 2013
Copyright (c) 1982, 2005, Oracle. All rights reserved.
连接到: Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
经由常规路径由 EXPORT:V10.02.01 创建的导出文件
警告: 这些对象由 TEST 导出, 而不是当前用户
已经完成 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集中的导入
. 正在将 TEST 的对象导入到 TEST1
. . 正在导入表 "T"导入了 278528 行
成功终止导入, 没有出现警告。
SQL> select segment_name,initial_extent,next_extent,bytes from user_segments whe
re segment_name='T';
SEGMENT_NA
INITIAL_EXTENT NEXT_EXTENT
BYTES
---------- -------------- ----------- ----------
T
65536 14680064
GRANTS:对指定表导出时是否把该表上所关联的权限信息也进行导出,默认是Y。
INDEXS:导出文件中包含表中相关索引的创建语句,默认是Y。
CONSTRAINTS:导出文件中包含表中相关约束的创建语句,默认是Y.。
DIRECT:是否使用直接路径,默认为N,即用常规路径导出。direct=y时可以起到提速作用。
ROWS:是否导入数据,默认是Y。
CONSISTENT:是否以只读事务的形式进行导出,默认值为N。参数取Y时,exp将在一个事务中进行,所有数据都是基于一个时间点的,导出过程中发生改变的数据将从回滚段中获取,当回滚段数据被覆盖时,会报ORA-01555;参数取N时,每张表都作为一个单独的事务导出,所以只能保证表内的数据一致性,表之间的一致性会被破坏,所以导出时都应该在系统不繁忙是进行。
RECORDLENTH:操作系统I/O缓存大小,与DIRECT=Y配合使用,以字节为单位,最大为64K。直接路径导出时,BUFFER参数失效,取而代之的是recordlength参数
TRIGTGERS:导出文件中包含表中相关触发器的创建语句,默认是Y。
STATISTICS:对象分析,默认为estimate(estimate,估算;compute,计算;none,无对象分析)
PARFILE:指定参数文件,把参数信息都放入一个文件中,exp是指定该参数文件即可。
FEEDBACK:每导出多少行显示一次进度。
imp
与exp一样的参数就不说了
SHOW:按顺序列出dmp文件中的ddl语句,但不执行具体的导入。
IGNORE:创建数据库对象时,如果对象已存在,是否忽略,默认为N。
FROMUSER:从哪个用户导出,配合TOUSER使用。
TOUSER:导入到哪个用户下,配合FROMUSER使用,实现用户间的数据迁移。
COMMIT:导入数据时是否以缓存记录作为提交单位,默认为N,以表为提交单位。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26358285/viewspace-758393/,如需转载,请注明出处,否则将追究法律责任。