用imp/exp命令 导入导出Oracle数据  标签: oracle  转载  分类: 资料库 2007-05-11 15:01 oracle10g之前传统导出导入分别是使用exp工具,imp工具来完成的。oracle10g开始,还增加了数据泵导出导入工具expdp&impdp。
1、exp和imp是客户端工具,既可以再客户端使用,也可以在服务器端使用。
2、expdp和impdp是服务器端工具,只能在服务器端使用,不能在客户端使用
3、imp只使用于exp导出文件,不适用于expdp导出文件,impdp只适用于expdp导出文件,不适用于exp导出文件imp命令行选项
1、buffer
指定传送数据时的缓冲区尺寸,通过 rows_in_array*maximum_row_size确定
2、commit
指定在每次数组插入完成后是否提交数据,默认为N
3、compile
指定在导入包,过程,函数时是否要进行编译,默认为Y
4、constraints
指定是否要导入表的约束,默认为Y
5、datafiles
指定要搬移到数据库的数据文件列表
6、destroy
指定是否要覆盖已存在的数据文件,默认为N。如果存在同名文件,则导入失败
7、feedback
指定根据导入行数显示导入进度框,默认为0,如果设为10,则每导入10行显示一个圆点
8、file
指定导入操作要使用的转储文件名称,默认为expdat.dmp
9、filesize
指定导出文件的最大尺寸。如果数据库对象数据被分布到多个导出文件中,则在导入时必须指定该选项
10、fromuser
指定从导出文件中摘取并导入特定用户的对象
11、full
指定导入转储文件的所有内容,默认为Y
12、grants
指定是否要导入对象的权限信息,默认为Y
13、help
指定是否显示imp命令行选项的帮助信息,默认为N
14、ignore
指定是否忽略对象建立错误信息,默认为N
15、index
指定是否要导入与表相关的索引,默认为Y
16、indexfile
指定生成的导入日志文件的名称,默认为N
17、log
指定生成的导入日志文件的名称,默认为n
18、PARFILE
指定导入工具要使用的参数文件名。经常使用imp导入数据时,可以将命令行选项放到参数文件中,然后在导入时调用该参数文件。例如:
PARM.TXT
talbes=dept,emp
constraints=n
indexes=n
grants=n
file=a.dmpimp scott/tiger parfile=parm.txt
19、recodlength
指定文件记录的长度,默认为buffer的值,需要将导出文件传送到不同os平台时,需要设置,不能大于64K
20、resumable
指定是否激活空间继续分配特征,为了使用resumable_name和resumable_timeout,必须设置为Y。默认为N
21、resumable_name
指定空间继续分配语句所对应的标识符
22、resumable_timeout
指定错误被修正的最大时间周期,默认为7200。如果在该时间范围内没有修正错误,语句会被终止
23、rows
指定是否要导入表行数据,默认为Y,为N时,只导入表结构,不会导入数据
24、show
指定是否显示文件内容,默认为N
25、skip_unusable_indexes
指定在导入时是否要跳过不可用的索引,默认为N
26、streams_configuration
指定是否要导入流元数据,默认为Y
27、tables
指定导入表或表分区
28、statistics
指定在导入时数据库优化器要执行的操作,默认为always
29、tablespaces
指定导入特定表空间上的所有对象,使用时full必须为Y
30、told_novalidate
指定导入对象表时要排除校验的对象类型。默认会比较已存在的对象类型标识符TOID与导出文件的对象类型标识符是否匹配,如果不匹配,则不会导入表。
31、touser
指定将特定方案对象导入到其他用户
32、transport_tablespace
指定导入表空间元数据,默认为N
33、tts_owners
设置transport_tablespace为Y时,列出所有被搬移表空间数据的数据库用户
34、userid
指定执行导入操作的用户名、口令和连接字符串。当以特权用户导入时,必须用单引号,userid='sys/admin as sysdba'.另外,如果userid为imp的第一个选项,可以省略useridexp命令行选项
1 buffer
指定在提取行数据时的缓冲区尺寸
2 compress
指定导出导入管理初始区的方法,默认为Y,oracle会将其设置为表段的当前尺寸
3 consistent
确保所有被导出表会在同一个事务内完成导出
4 direct
指定是否使用直接导出方式,默认为N。当设置为Y时,采用直接导出方式;当设置为N时,采用常规导出方式。直接导出速度要优于常规导出,但要求客户端和服务器端的字符集必须保持一致。
5 filesize
指定导入文件的最大尺寸,如果不指定则所有对象和数据会放到一个导出文件中
6、flashback_scn
指定导出特定scn时刻的表数据
7、flashback_time
指定导出特定时刻的表数据,例如:exp system/manager table=scott.dept file=a.dmp flashback_time="'2006-06-17 21:34:00'"
8、object_consistent
指定是否要基于对象级设置只读事务导出,默认为N
9、owner
指定用户导出模式。exp system/manager owner=scott file=a.dmp log=a.log
10、query
指定where条件字句,导出表的部分数据,当使用直接导出方式不能指定该选项
11、triggers
指定是否要导出触发器,默认为Y
12、tts_full_check
指定是否检查被搬移表空间集合的关联关系,默认N。当设置为Y时,导出工具会检查表空间之间的完整关联关系如果表所在的表空间或其索引所在的表空间只有一个表空间被搬移,则会报错;当设置选项为N时,导出工具只会检查单端以来,如果要搬移索引所在表空间,但未搬移表所在表空间,则会报错,而如果搬移表所在的表空间,未搬移索引所在表空间,则不会报错13、rows
指定是否导出表行数据,默认值为Y。
exp scott/tiger tables=emp file=a.dmp rows=N
14、tablespace
指定表空间导出模式。
exp system/manager tablespace=user01 file=a.dmp
exp userid='system/manager as sysdba' tablespace=user01 file=a.dmp
15、log
指定导出日志文件的名称,默认情况下不会生成导出日志文件。
exp system/manager owner=scott file=a.dmp log=a.log
数据库导入、导出的几个例子
数据导出:
1 将数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp中
exp ​​​system/manager@TEST​​​ file=d:\daochu.dmp full=y
2 将数据库中system用户与sys用户的表导出
exp ​​​system/manager@TEST​​​ file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表table1 、table2导出
exp ​​​system/manager@TEST​​​ file=d:\daochu.dmp tables=(table1,table2)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp ​​​system/manager@TEST​​​ file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"

上面是常用的导出,对于压缩我不太在意,用winzip把dmp文件可以很好的压缩。不过在上面命令后面 加上 compress=y 就可以了 数据的导入
1 将D:\daochu.dmp 中的数据导入 TEST数据库中。
imp ​​​system/manager@TEST​​​ file=d:\daochu.dmp
上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。
在后面加上 ignore=y 就可以了。
2 将d:\daochu.dmp中的表table1 导入
imp ​​​system/manager@TEST​​ file=d:\daochu.dmp tables=(table1) 注意:
操作者要有足够的权限,权限不够它会提示。
数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上。附录一:
给用户增加导入数据权限的操作
第一,启动sql*puls
第二,以system/manager登陆
第三,create user 用户名 IDENTIFIED BY 密码 (如果已经创建过用户,这步可以省略)
第四,GRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
DBA,CONNECT,RESOURCE,CREATE SESSION TO 用户名字
第五, 运行-cmd-进入dmp文件所在的目录,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp 执行示例:
F:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp屏幕显示
Import: Release 8.1.7.0.0 - Production on 星期四 2月 16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation. All rights reserved.连接到: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production经由常规路径导出由EXPORT:V08.01.07创建的文件
已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导入
导出服务器使用UTF8 NCHAR 字符集 (可能的ncharset转换)
. 正在将AICHANNEL的对象导入到 AICHANNEL
. . 正在导入表 "INNER_NOTIFY" 4行被导入
准备启用约束条件...
成功终止导入,但出现警告。
附录二:
Oracle 不允许直接改变表的拥有者, 利用Export/Import可以达到这一目的.
先建立import9.par,
然后,使用时命令如下:imp parfile=/filepath/import9.par
例 import9.par 内容如下:
FROMUSER=TGPMS
TOUSER=TGPMS2 (注:把表的拥有者由FROMUSER改为TOUSER,FROMUSER和TOUSER的用户可以不同)
ROWS=Y
INDEXES=Y
GRANTS=Y
CONSTRAINTS=Y
BUFFER=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log 以下我自己补充:
1.在导入导出命令中加上feedback=1000可以让过程显示一个不断增多的“...”,以改变以往的闪烁的光标