原文出自: http://www.cnblogs.com/fjfzhkb/archive/2007/09/03/879807.html

Oracle数据导入导出imp/exp
功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份。
 
大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢失)。
 Oracle有个好处,虽然你的电脑不是服务器,但是你装了oracle客户端,并建立了连接
 (通过Net Configuration Assistant添加正确的服务命名,其实你可以想成是客户端与服务器端 修了条路,然后数据就可以被拉过来了)
 这样你可以把数据导出到本地,虽然可能服务器离你很远。
 你同样可以把dmp文件从本地导入到远处的数据库服务器中。
 利用这个功能你可以构建俩个相同的数据库,一个用来测试,一个用来正式使用。
 
执行环境:可以在SQLPLUS.EXE或者DOS(命令行)中执行,
 DOS中可以执行时由于 在oracle 8i 中  安装目录\$ora10g\BIN被设置为全局路径,
 该目录下有EXP.EXE与IMP.EXE文件被用来执行导入导出。
 oracle用java编写,我想SQLPLUS.EXE、EXP.EXE、IMP.EXE这俩个文件是被包装后的类文件。
 SQLPLUS.EXE调用EXP.EXE、IMP.EXE他们所包裹的类,完成导入导出功能。
 
下面介绍的是导入导出的实例,向导入导出看实例基本上就可以完成,因为导入导出很简单。
数据导出:
 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能否连上。

数据导出:
exp hkb/hkb@boss_14 full=y file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbfull.log;

导出注意事项:导出的是当前用户的的数据,当前用户如果有DBA的权限,则导出所有数据!

同名用户之间的数据导入:
imp hkb/hkb@xe  file=c:\orabackup\hkbfull.dmp log=c:\orabackup\hkbimp.log full=y

不同名之间的数据导入:
imp system/test@xe fromuser=hkb touser=hkb_new file=c:\orabackup\hkbfull.dmp

log=c:\orabackup\hkbimp.log;

------------------------------------------------------------------------------------------------------------

百度文库资料

Oracle数据库文件资料收集:

一、Oracle数据导入导出imp/exp命令 10g以上expdp/impdp命令 详细

A) 数据导出:

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 将数据库中的表inner_notify、notify_staff_relat导出

exp aichannel/aichannel@TESTDB2 file= d:datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat)

4 将数据库中的表table1中的字段filed1以"00"打头的数据导出

exp system/manager@TEST file=d:daochu.dmp tables=(table1) query=" where filed1 like '00%'"

上面是常用的导出,对于压缩,既用winzip把dmp文件可以很好的压缩。

也可以在上面命令后面 加上 compress=y 来实现。

B) 数据的导入

1 将D:daochu.dmp 中的数据导入 TEST数据库中。

imp system/manager@TEST  file=d:daochu.dmp

imp aichannel/aichannel@HUST full=y  file=d:datanewsmgnt.dmp ignore=y

上面可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进行导入。

在后面加上 ignore=y 就可以了。

2 将d:daochu.dmp中的表table1 导入

imp system/manager@TEST  file=d:daochu.dmp  tables=(table1)

*注:要先是将表彻底删除,然后导入。

操作者要有足够的权限,权限不够它会提示。

数据库时可以连上的。可以用tnsping TEST 来获得数据库TEST能否连上

当然,上面的方法在导出数据时可能会导出很大的包,那是因为你的用户可能在授权的时候授予了DBA的权限,所以可以采用下面方法来进行数据库备份:

二、数据库备份
建议系统过渡后,每周进行一次备份。或者在数据表发生重大改变前,对要改变的数据表进行备份。

执行以下步骤,进行备份。

在命令行里,敲入“cmd”,回车,进入命令行窗口。

在窗口中,输入:

exp mas/123456@mas

系统提示:输入数组提取缓冲区大小: 4096 >

可以直接回车;

系统提示:导出文件: EXPDAT.DMP>

此处输入导出文件的位置,其路径必须存在,Oracle在这里不会自动建立路径,但可以建立文件名。备份文件以dmp作为后缀。

输入内容如:e:\work\mas_db_090925v1.dmp 回车

系统提示: (1)E(完整的数据库),(2)U(用户) 或 (3)T(表): (2)U > u

此处可以输入u,也可以直接回车,因为系统此时默认的是U

系统提示:导出权限(yes/no):yes>回车

系统提示:导出表数据(yes/no):yes>回车

系统提示:压缩区(yes/no):yes>回车

系统提示:要导出的用户: (RETURN 以退出) > mas

系统提示:要导出的用户: (RETURN 以退出) > 回车

此时系统会自动进行备份

经验总结:
A.说明
 oracle 的exp/imp命令用于实现对数据库的导出/导入操作;

exp命令用于把数据从远程数据库服务器导出至本地,生成dmp文件;

imp命令用于把本地的数据库dmp文件从本地导入到远程的Oracle数据库中。
B.语法
可以通过在命令行输入 imp help=y 获取imp的语法信息:

C:\Documents and Settings\auduser>imp help=y

Import: Release 9.0.1.1.1 - Production on 星期二 5月 20 18:21:57 2008

(c) Copyright 2001 Oracle Corporation.  All rights reserved.

可以通过输入 IMP 命令和您的用户名/口令

后接用户名/口令的命令:

A.导入:例程: IMP SCOTT/TIGER

或者, 可以通过输入 IMP 命令和各种参数来控制“导入”

按照不同参数。要指定参数,您可以使用关键字:

格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)

例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N

或 TABLES=(T1: P1,T1: P2),如果 T1 是分区表

USERID 必须是命令行中的第一个参数。

关键字  说明(默认)        关键字      说明(默认)

--------------------------------------------------------------------------

USERID   用户名/口令           FULL         导入整个文件 (N)

BUFFER   数据缓冲区大小         FROMUSER     所有人用户名列表

FILE     输入文件 (EXPDAT.DMP)    TOUSER       用户名列表

SHOW     只列出文件内容 (N) TABLES      表名列表

IGNORE   忽略创建错误 (N)    RECORDLENGTH  IO 记录的长度

GRANTS  导入权限 (Y)           INCTYPE      增量导入类型

INDEXES 导入索引 (Y)          COMMIT       提交数组插入 (N)

ROWS    导入数据行 (Y)        PARFILE      参数文件名

LOG      屏幕输出的日志文件   CONSTRAINTS  导入限制 (Y)

DESTROY                覆盖表空间数据文件 (N)

INDEXFILE              将表/索引信息写入指定的文件

SKIP_UNUSABLE_INDEXES  跳过不可用索引的维护 (N)

FEEDBACK               每 x 行显示进度 (0)

TOID_NOVALIDATE        跳过指定类型 ID 的验证

FILESIZE               每个转储文件的最大大小

STATISTICS             始终导入预计算的统计信息

RESUMABLE              遇到与空格有关的错误时挂起 (N)

RESUMABLE_NAME         用来标识可恢复语句的文本字符串

RESUMABLE_TIMEOUT      RESUMABLE 的等待时间

COMPILE                编译过程, 程序包和函数 (Y)

下列关键字仅用于可传输的表空间

TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)

TABLESPACES 将要传输到数据库的表空间

DATAFILES 将要传输到数据库的数据文件

TTS_OWNERS 拥有可传输表空间集中数据的用户

==============================================

同样可以通过输入 exp help=y 获取exp的语法信息

Microsoft Windows XP [版本 5.1.2600]

(C) 版权所有 1985-2001 Microsoft Corp.

C:\Documents and Settings\auduser>exp help=y

Export: Release 9.0.1.1.1 - Production on 星期二 5月 20 18:26:34 2008

(c) Copyright 2001 Oracle Corporation.  All rights reserved.

通过输入 EXP 命令和用户名/口令,您可以

后接用户名/口令的命令:

B .导出例程: EXP SCOTT/TIGER

或者,您也可以通过输入跟有各种参数的 EXP 命令来控制“导出”

按照不同参数。要指定参数,您可以使用关键字:

格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)

例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)

或 TABLES=(T1: P1,T1: P2),如果 T1 是分区表

USERID 必须是命令行中的第一个参数。

关键字  说明(默认)        关键字      说明(默认)

--------------------------------------------------------------------------

USERID   用户名/口令           FULL         导出整个文件 (N)

BUFFER   数据缓冲区大小         OWNER     所有者用户名列表

FILE       输出文件 (EXPDAT.DMP)  TABLES       表名称列表

COMPRESS   导入到一个区 (Y) RECORDLENGTH IO 记录的长度

GRANTS  导出权限 (Y)           INCTYPE      增量导出类型

INDEXES    导出索引 (Y)         RECORD       跟踪增量导出 (Y)

DIRECT     直接路径 (N)            TRIGGERS     导出触发器 (Y)

LOG        屏幕输出的日志文件  STATISTICS   分析对象 (ESTIMATE)

ROWS    导出数据行 (Y)        PARFILE      参数文件名

CONSISTENT 交叉表一致性    CONSTRAINTS  导出约束条件 (Y)

FEEDBACK             每 x 行显示进度 (0)

FILESIZE             每个转储文件的最大大小

FLASHBACK_SCN        用于回调会话快照的 SCN

FLASHBACK_TIME       用来获得最接近于指定时间的 SCN 的时间

QUERY                用来导出表的子集的选择子句

RESUMABLE            遇到与空格有关的错误时挂起 (N)

RESUMABLE_NAME       用来标识可恢复语句的文本字符串

RESUMABLE_TIMEOUT    RESUMABLE 的等待时间

TTS_FULL_CHECK       对 TTS 执行完全或部分相关性检查

TABLESPACES          要导出的表空间列表

TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)

TEMPLATE 调用 iAS 模式导出的模板名称

三、使用示例
3.1 数据导出:

1 将数据库SampleDB完全导出,用户名system 密码manager 导出到E:\SampleDB.dmp中

exp system/manager@TestDB file=E:\sampleDB.dmp full=y

2 将数据库中system用户与sys用户的表导出

exp system/manager@TestDB file=E:\sampleDB.dmp  owner=(system,sys)

3 将数据库中的表 TableA,TableB 导出

exp system/manager@TestDB  file=E:\sampleDB.dmp  tables=(TableA,TableB)

4 将数据库中的表tableA中的字段filed1 值为 "王五" 的数据导出

exp system/manager@TestDB  file=E:\sampleDB.dmp  tables=(tableA)  query=' where filed1='王五'

如果想对dmp文件进行压缩,可以在上面命令后面 加上 compress=y 来实现。

3.2 数据的导入

1 将备份数据库文件中的数据导入指定的数据库SampleDB 中,如果 SampleDB 已存在该表,则不再导入;

imp system/manager@TEST  file=E:\sampleDB.dmp  full=y  ignore=y

2 将d:\daochu.dmp中的表table1 导入

imp system/manager@TEST  file=E:\sampleDB.dmp  tables=(table1)

3. 导入一个完整数据库

imp system/manager file=bible_db log=dible_db full=y ignore=y

4. 导入一个或一组指定用户所属的全部表、索引和其他对象

imp system/manager file=seapark log=seapark fromuser=seapark imp

system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)

5. 将一个用户所属的数据导入另一个用户

imp system/manager file=tank log=tank fromuser=seapark touser=seapark_copy

imp system/manager file=tank log=tank fromuser=(seapark,amy)

touser=(seapark1, amy1)

6. 导入一个表

imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)

7. 从多个文件导入

imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)

log=paycheck, filesize=1G full=y

8. 使用参数文件

imp system/manager parfile=bible_tables.par

bible_tables.par参数文件:

#Import the sample tables used for the Oracle8i Database Administrator's

Bible. fromuser=seapark touser=seapark_copy file=seapark log=seapark_import

参数文件示例见附录

9. 增量导入

imp system./manager inctype= RECTORE FULL=Y  FILE=A

*注:不少情况下要先将表彻底删除,然后导入。

四、参数说明
4.1、8i EXP常用选项

1、FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。例如:

exp sys file=./db_str.dmp log=./db_str.log full=y rows=n compress=y direct=y

2、BUFFER和FEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。例如:

exp new file=yw97_2003.dmp log=yw97_2003_3.log feedback=10000 buffer=100000000 tables=WO4,OK_YT

3、FILL和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录,例子见上面。

需要说明的是,EXP可以直接备份到磁带中,即使用FILE=/dev/rmt0(磁带设备名),但是一般我们都不这么做,原因有二:一、这样做的速度会慢很多,二、现在一般都是使用磁带库的,不建议直接对磁带进行操作。至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使用。

如果你真想使用EXP直接到磁带,你可以参考Metalink文章“EXPORTING TO TAPE ON UNIX SYSTEMS”(文档号:30428.1),该文中有详细解释。

4、COMPRESS参数将在导出的同时合并碎块,尽量把数据压缩到initial的EXTENT里,默认是N,一般建议使用。DIRECT参数将告诉EXP直接读取数据,而不像传统的EXP那样,使用SELECT来读取表中的数据,这样就减少了SQL语句处理过程。一般也建议使用。不过有些情况下DIRECT参数是无法使用的。

5、如何使用SYSDBA执行EXP/IMP?

这是一个很现实的问题,有时候我们需要使用SYSDBA来执行EXP/IMP,如进行传输表空间的EXP/IMP,以及在9i下用SYS用户来执行EXP/IMP时,都需要使用SYSDBA才可。我们可以使用下面方式连入EXP/IMP:

exp "'sys/sys as sysdba'" file=1.dmp tables=gototop.t rows=n

6、QUERY参数后面跟的是where条件,值得注意的是,整个where子句需要使用""括起来,where子句的写法和SELECT中相同,如果是UNIX平台所有"和'都需要使用\u26469屏蔽它们的特殊含义:

exp gototop/gototop file=1.dmp log=1.log tables=cyx.t query="where c1=20 and c2=gototop"

如果是windows平台,则使用下面的格式:

exp c/c@ncn file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'"""

4.2、8i IMP常用选项

1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。

2、IGNORE、GRANTS和INDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。而GRANTS和INDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y。

另外一个EXP/IMP都有的参数是PARFILE,它是用来定义EXP/IMP的参数文件,也就是说,上面的参数都可以写在一个参数文件中,但我们一般很少使用。

4.4、Oracle9i EXP功能描述

Oracle9i EXP在原有的基础上新增了部分新的参数,按功能主要分为以下几个部分:

1、OBJECT_CONSISTENT - 用于设置EXP对象为只读以保持对象的一致性。默认是N。

2、FLASHBACK_SCN和FLASHBACK_TIME - 用于支持FLASHBACK功能而新增。

3、RESUMABLE、RESUMABLE_NAME和RESUMABLE_TIMEOUT - 用于支持RESUMABLE空间分配而新增。

4、TTS_FULL_CHECK - 用于在传输表空间时使用依赖性检查。

5、TEMPLATE - 用于支持iAS。

6、TABLESPACES - 设置表空间导出模式。个人觉得对于一般用户而言,这个才是新增参数中最实用的一个,可以让用户在原来的FULL、OWNER、TABLES的基础上多了一种选择,使得EXP更加灵活。

五、不同版本的EXP/IMP问题?
一般来说,从低版本导入到高版本问题不大,麻烦的是将高版本的数据导入到低版本中,在Oracle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决:

1、在高版本数据库上运行底版本的catexp.sql;

2、使用低版本的EXP来导出高版本的数据;

3、使用低版本的IMP将数据库导入到底版本数据库中;

4、在高版本数据库上重新运行高版本的catexp.sql脚本。

但在9i中,上面的方法并不能解决问题。如果直接使用底版本EXP/IMP会出现如下错误:

EXP-00008: ORACLE error %lu encountered

ORA-00904: invalid column name

这已经是一个公布的BUG,需要等到Oracle10.0才能解决,BUG号为2261,你可以到METALINK上去查看有关此BUG的详细信息。

BUG归BUG,我们的工作还是要做,在没有Oracle的支持之前,我们就自己解决。在Oracle9i中执行下面的SQL重建exu81rls视图即可。

CREATE OR REPLACE view exu81rls

(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)

AS select u.name, o.name, r.pname, r.pfschma, r.ppname, r.pfname,

decode(bitand(r.stmt_type,1), 0,'', 'SELECT,')

|| decode(bitand(r.stmt_type,2), 0,'', 'INSERT,')

|| decode(bitand(r.stmt_type,4), 0,'', 'UPDATE,')

|| decode(bitand(r.stmt_type,8), 0,'', 'DELETE,'),

r.check_opt, r.enable_flag,

DECODE(BITAND(r.stmt_type, 16), 0, 0, 1)

from user$ u, obj$ o, rls$ r

where u.user# = o.owner#

and r.obj# = o.obj#

and (uid = 0 or

uid = o.owner# or

exists ( select * from session_roles where role='SELECT_CATALOG_ROLE')

)

/

grant select on sys.exu81rls to public;

/

六、其他问题

本文只讨论了Oracle8i和9i中的EXP/IMP的一些情况,对于之前的版本,在8.0.X中,除了QUERY参数不能用外,其它差别不大。针对没有QUERY的情况,我们可以先在数据库中使用查询条件建立临时中间表,然后使用EXP导出这个中间表即可。至于Oracle7因为目前使用的人较少,gototop不打算在此做详细解释了,如果读者朋友有需求,你可以参考Metalink文档:“Overview of Export and Import in Oracle7”(文档号:61949.1)。关于EXP/IMP的详细参数信息你可以通过EXP/IMP HELP=Y来获得。

另外关于传输表空间的更多信息可以参考下面的Metelink文档,本文不再详述。

[NOTE:77523.1] Transportable Tablespaces -- An Example to setup and use.

[NOTE:100698.1] Perform tablespace point-in-time recovery using Transportable Tablespace.

在进行并行EXP/IMP的时候,如果IMP过程建索引的话不建议同时运行5个以上的IMP,如果你想加快速度,可以在IMP的时候不建索引,这样只要内存允许,可以多跑几个,然后是SQL脚本创建需要的索引。

注意:*

操作者要有足够的权限,权限不够它会提示。

数据库是否可以连上, 可以用tnsping TestDB  来获得数据库 TestDB 能否连上。

附录一:

给用户增加导入数据权限的操作

第一, 启动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

附录二:

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

exp 命令的参数:

将数据库内的各对象以二进制方式下载成dmp文件,方便数据迁移。

buffer:下载数据缓冲区,以字节为单位,缺省依赖操作系统

consistent:下载期间所涉及的数据保持read only,缺省为n

direct:使用直通方式 ,缺省为n

feeback:显示处理记录条数,缺省为0,即不显示

file:输出文件,缺省为expdat.dmp

filesize:输出文件大小,缺省为操作系统最大值

indexes:是否下载索引,缺省为n,这是指索引的定义而非数据,exp不下载索引数据

log:log文件,缺省为无,在标准输出显示

owner:指明下载的用户名

query:选择记录的一个子集

rows:是否下载表记录

tables:输出的表名列表

导出整个实例

exp dbuser/oracle file=oradb.dmp log=oradb.log full=y consistent=y direct=y

user应具有dba权限

导出某个用户所有对象

exp dbuser/oracle file=dbuser.dmp log=dbuser.log owner=dbuser buffer=4096000 feedback=10000

导出一张或几张表

exp dbuser/oracle file=dbuser.dmp log=dbuser.log tables=table1,table2 buffer=4096000 feedback=10000

导出某张表的部分数据

exp dbuser/oracle file=dbuser.dmp log=dbuser.log tables=table1 buffer=4096000 feedback=10000 query=\”where col1=\’…\’ and col2 \<…\”

不可用于嵌套表

以多个固定大小文件方式导出某张表

exp dbuser/oracle file=1.dmp,2.dmp,3.dmp,… filesize=1000m tables=emp buffer=4096000 feedback=10000

这种做法通常用在:表数据量较大,单个dump文件可能会超出文件系统的限制

直通路径方式

direct=y,取代buffer选项,query选项不可用

有利于提高下载速度

consistent选项

自export启动后,consistent=y冻结来自其它会话的对export操作的数据对象的更新,这样可以保证dump结果的一致性。但这个过程不能太长,以免回滚段和联机日志消耗完

imp

将exp下载的dmp文件上载到数据库内。

buffer:上载数据缓冲区,以字节为单位,缺省依赖操作系统

commit:上载数据缓冲区中的记录上载后是否执行提交

feeback:显示处理记录条数,缺省为0,即不显示

file:输入文件,缺省为expdat.dmp

filesize:输入文件大小,缺省为操作系统最大值

fromuser:指明来源用户方

ignore:是否忽略对象创建错误,缺省为n,在上载前对象已被建立往往是一个正常现象,所以此选项建议设为y

indexes:是否上载索引,缺省为n,这是指索引的定义而非数据,如果上载时索引已建立,此选项即使为n也无效,imp自动更新索引数据

log:log文件,缺省为无,在标准输出显示

rows:是否上载表记录

tables:输入的表名列表

touser:指明目的用户方

导入整个实例

imp dbuser/oracle file=oradb.dmp log=oradb.log full=y buffer=4096000 commit=y ignore=y feedback=10000

导入某个用户所有对象

imp dbuser/oracle file=dbuser.dmp log=dbuser.log fromuser=dbuser touser=dbuser2 buffer=2048000 commit=y ignore=y feedback=10000

导入一张或几张表

imp dbuser2/oracle file=user.dmp log=user.log tables=table1,table2 fromuser=dbuser touser=dbuser2 buffer=2048000 commit=y ignore=y feedback=10000

以多个固定大小文件方式导入某张表

imp dbuser/oracle file=\(1.dmp,2.dmp,3.dmp,…\) filesize=1000m tables=emp fromuser=dbuser touser=dbuser2 buffer=4096000 commit=y ignore=y feedback=10000

exp/imp已经很好用了,但是唯一的确定是速度太慢,如果1张表的数据有个百千万的,常常导入导出就长时间停在这个表这,但是从Oracle 10g开始提供了称为数据泵新的工具expdp/impdp,它为Oracle数据提供高速并行及大数据的迁移。

imp/exp可以在客户端调用,但是expdp/impdp只能在服务端,因为在使用expdp/impdp以前需要在数据库中创建一个Directory

create directory dump_test as '/u01/oracle10g';

grant read, write on directory dump_test to piner

然后就可以开始导入导出

expdp piner/piner directory=dump_test dumpfile=user.dmp  导出用户的数据

expdp piner/piner directory=dump_test dumpfile=table.dmp tables=test1,test2 导出表数据

impdp piner/piner directory=dump_test dumpfile=user.dmp 导入该用户数据

impdp piner/piner directory=dump_test dumpfile=table.dmp  导出表数据

my test:

SQL> create directory dump_test as '/home/oracle/oracle10g';

Directory created.

SQL> drop directory dump_test;

Directory dropped.

SQL>  create directory dump_test as '/u01/oracledmp';

Directory created.

--接下来记得创建directory在系统上,并赋好权限

[oracle@localhost ~]$ expdp anlen/anlen123 directory=dumpdir dumpfile=anlen.dmp

Export: Release 10.2.0.4.0 - Production on Saturday, 12 June, 2010 14:43:20

Copyright (c) 2003, 2007, Oracle.  All rights reserved.

Connected to: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - Production

With the Partitioning, OLAP, Data Mining and Real Application Testing options

Starting "ANLEN"."SYS_EXPORT_SCHEMA_01":  anlen/******** directory=dumpdir dumpfile=anlen.dmp

Estimate in progress using BLOCKS method...

Processing object type SCHEMA_EXPORT/TABLE/TABLE_DATA

Total estimation using BLOCKS method: 1.125 MB

Processing object type SCHEMA_EXPORT/USER

Processing object type SCHEMA_EXPORT/SYSTEM_GRANT

Processing object type SCHEMA_EXPORT/ROLE_GRANT

Processing object type SCHEMA_EXPORT/DEFAULT_ROLE

Processing object type SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA

Processing object type SCHEMA_EXPORT/SEQUENCE/SEQUENCE

Processing object type SCHEMA_EXPORT/TABLE/TABLE

Processing object type SCHEMA_EXPORT/TABLE/INDEX/INDEX

Processing object type SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT

Processing object type SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS

Processing object type SCHEMA_EXPORT/TABLE/COMMENT

. . exported "ANLEN"."DBA_01"                            571.2 KB   20000 rows

. . exported "ANLEN"."DBA_02"                            278.4 KB   20000 rows

Master table "ANLEN"."SYS_EXPORT_SCHEMA_01" successfully loaded/unloaded

******************************************************************************

Dump file set for ANLEN.SYS_EXPORT_SCHEMA_01 is:

/u01/dmpdir/anlen.dmp

Job "ANLEN"."SYS_EXPORT_SCHEMA_01" successfully completed at 14:43:41

oracle 数据库导入导出文章相关推荐

  1. oracle 数据库导入语句,oracle 数据库导入导出语句

    1 将数据库test完全导出.用户名system/manager导出到D:daochu.dmp 代码如下: exp system/manager@test file=d:daochu.dmp full ...

  2. Oracle数据库导入导出命令!

    oracle数据库导入导出命令! 转自:http://www.cnblogs.com/fjfzhkb/archive/2007/09/03/879807.html Oracle数据导入导出imp/ex ...

  3. oracle数据库导出数据6,Oracle数据库导入导出方法汇总

    Oracle数据库导入导出方法: 1.使用命令行: 数据导出: 1.将数据库TEST完全导出,用户名system密码manager导出到D:\daochu.dmp中 exp system/manage ...

  4. Oracle数据库导入导出命令imp/exp

    为什么80%的码农都做不了架构师?>>>    Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份.   大多情况 ...

  5. Oracle 数据库导入导出 dmp文件

    首先询问对方数据库的表空间名称和大小,然后在你的oracle中建立相应表空间,最后使用命令导入.导出数据. 补充: 1.要新建一个数据库: Oracle数据导入导出imp/exp就相当于oracle数 ...

  6. oracle+导入emp,Oracle数据库导入导出emp文件

    首先询问对方数据库的表空间名称和大小,然后在你的oracle中建立相应表空间,最后使用命令导入.导出数据. 补充: 1.要新建一个数据库: Oracle数据导入导出imp/exp就相当于oracle数 ...

  7. Oracle数据库导入导出 imp/exp备份还原

    Oracle数据导入导出imp/exp Oracle数据导入导出imp/exp 在cmd的dos命令提示符下执行,而不是在sqlplus里面,但是格式一定要类似于: imp/exp 用户名/密码@se ...

  8. Oracle 数据库导入导出

      Oracle数据导入导出imp/exp就相当于oracle数据还原与备份.exp命令可以把数据从远程数据库服务器导出到本地的dmp文件,imp命令可以把dmp文件从本地导入到远处的数据库服务器中. ...

  9. Oracle数据库导入导出emp文件

    首先询问对方数据库的表空间名称和大小,然后在你的oracle中建立相应表空间,最后使用命令导入.导出数据. 补充: 1.要新建一个数据库: Oracle数据导入导出imp/exp就相当于oracle数 ...

最新文章

  1. Docker 安装registry (构建私有镜像库)
  2. 需要注意AT24Cxx和BL24Cxx引脚不一样
  3. PDB命令行调试Python代码
  4. nginx源码初读(1)--让烦恼从数据结构开始(ngx_cdecl/ngx_int/ngx_log)
  5. word文档相关使用
  6. goland远程调试Docker
  7. JavaWeb三大组件(ServletFilterListener)
  8. numpy中方法参数axis取值理解
  9. oracle @id@,修改oracle用户id
  10. 电脑投屏电视怎么设置_教程 | 小米VR一体机投屏到电视/电脑/手机
  11. android native c++ 打印调用栈
  12. php面试专题---1、php中变量存储及引用的原理
  13. 亲测可用企业级自动发卡平台PHP系统源码
  14. java版简易计算器,java 简易计算器
  15. 部署Extmail邮件系统需注意几点
  16. 【论文阅读】Speicher: Securing LSM-based Key-Value Stores using Shielded Execution
  17. 阿铭Linux_传统IDC 部署网站学习笔记20190118
  18. 自制中文编程语言一(语言设计一)
  19. Vue3 + Vite 使用 Less 配置
  20. 虚拟机linux开启端口 与阿里云服务器开启端口的方法

热门文章

  1. 输入一个字符串,对字符中的各个英文字符,数字,空格进行统计。 按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
  2. PB云存储系统问世 解决数据中心能耗问题
  3. securecrt 8.1 7.3 注册机 使用步骤【转】
  4. 01_k8s入门----部署一个应用程序
  5. NAT基本原理与私有IP
  6. rt-n18u usb3.0 linux ex,【晒一下论坛晒单奖品】华硕RT-N18U多功能无线路由器2.4G 600Mbps...
  7. java 针对专业技能可能会被问到的面试题
  8. GNN理论入门和小实践——从卷积讲起
  9. Flink 多流转换
  10. 1033,2052 是什么意思?