ORACLEEXP命令共16页.docx

上传人:b****4 文档编号:11788656 上传时间:2023-04-01 格式:DOCX 页数:10 大小:21.16KB
下载 相关 举报
ORACLEEXP命令共16页.docx_第1页
第1页 / 共10页
ORACLEEXP命令共16页.docx_第2页
第2页 / 共10页
ORACLEEXP命令共16页.docx_第3页
第3页 / 共10页
ORACLEEXP命令共16页.docx_第4页
第4页 / 共10页
ORACLEEXP命令共16页.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

ORACLEEXP命令共16页.docx

《ORACLEEXP命令共16页.docx》由会员分享,可在线阅读,更多相关《ORACLEEXP命令共16页.docx(10页珍藏版)》请在冰豆网上搜索。

ORACLEEXP命令共16页.docx

ORACLEEXP命令共16页

本文对Oracle数据的导入导出imp,exp两个命令进行了介绍,并对其相应的参数进行了说明,然后通过一些示例进行演练,加深理解.

文章最后对运用这两个命令可能出现的问题(如权限不够,不同oracle版本)进行了探讨,并提出了相应的解决方案;

本文部分内容摘录自网络,感谢网友的经验总结;

一.说明

  oracle的exp/imp命令用于实现对数据库的导出/导入操作;

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

  imp命令用于把本地的数据库dmp文件从本地导入到远程的Oracle数据库中。

二.语法

可以通过在命令行输入imphelp=y获取imp的语法信息:

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

  C:

/DocumentsandSettings/auduser>imphelp=y

  Import:

Release9.0.1.1.1-Productionon星期二5月2018:

21:

572008

  (c)Copyright2001OracleCorporation. Allrightsreserved.

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

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

  例程:

IMPSCOTT/TIGER

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

  按照不同参数。

要指定参数,您可以使用关键字:

  格式:

IMPKEYWORD=value或KEYWORD=(value1,value2,...,vlaueN)

  例程:

IMPSCOTT/TIGERIGNORE=YTABLES=(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拥有可传输表空间集中数据的用户

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

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

  MicrosoftWindowsXP[版本5.1.2600]

  (C)版权所有1985-2001MicrosoftCorp.

  C:

/DocumentsandSettings/auduser>exphelp=y

  Export:

Release9.0.1.1.1-Productionon星期二5月2018:

26:

342008

  (c)Copyright2001OracleCorporation. Allrightsreserved.

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

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

  例程:

EXPSCOTT/TIGER

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

  按照不同参数。

要指定参数,您可以使用关键字:

  格式:

EXPKEYWORD=value或KEYWORD=(value1,value2,...,valueN)

  例程:

EXPSCOTT/TIGERGRANTS=YTABLES=(EMP,DEPT,MGR)

  或TABLES=(T1:

P1,T1:

P2),如果T1是分区表

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

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

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

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

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

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

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

  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中

  expsystem/manager@TestDBfile=E:

/sampleDB.dmpfull=y

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

  expsystem/manager@TestDBfile=E:

/sampleDB.dmp owner=(system,sys)

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

   expsystem/manager@TestDB file=E:

/sampleDB.dmp tables=(TableA,TableB)

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

  expsystem/manager@TestDB file=E:

/sampleDB.dmp tables=(tableA) query='wherefiled1='王五'

 

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

3.2数据的导入

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

  impsystem/manager@TEST file=E:

/sampleDB.dmp full=y ignore=y

 

 2将d:

/daochu.dmp中的表table1导入

 impsystem/manager@TEST file=E:

/sampleDB.dmp tables=(table1)

3.导入一个完整数据库

 impsystem/managerfile=bible_dblog=dible_dbfull=yignore=y

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

 impsystem/managerfile=seaparklog=seaparkfromuser=seaparkimp

 system/managerfile=seaparklog=seaparkfromuser=(seapark,amy,amyc,harold)

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

 impsystem/managerfile=tanklog=tankfromuser=seaparktouser=seapark_copy

 impsystem/managerfile=tanklog=tankfromuser=(seapark,amy)

 touser=(seapark1,amy1)

6.导入一个表

 impsystem/managerfile=tanklog=tankfromuser=seaparkTABLES=(a,b)

7.从多个文件导入

 impsystem/managerfile=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)

log=paycheck,filesize=1Gfull=y

8.使用参数文件

 impsystem/managerparfile=bible_tables.par

bible_tables.par参数文件:

 #ImportthesampletablesusedfortheOracle8iDatabaseAdministrator's

Bible.fromuser=seaparktouser=seapark_copyfile=seaparklog=seapark_import

参数文件示例见附录

9.增量导入

 impsystem./managerinctype=RECTOREFULL=Y FILE=A

 

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

 

四.参数说明

4.1、8iEXP常用选项

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

例如:

 expsysfile=./db_str.dmplog=./db_str.logfull=yrows=ncompress=ydirect=y

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

例如:

 expnewfile=yw97_2003.dmplog=yw97_2003_3.logfeedback=10000buffer=100000000tables=WO4,OK_YT

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

 需要说明的是,EXP可以直接备份到磁带中,即使用FILE=/dev/rmt0(磁带设备名),但是一般我们都不这么做,原因有二:

一、这样做的速度会慢很多,二、现在一般都是使用磁带库的,不建议直接对磁带进行操作。

至于没有使用磁带库的朋友可以考虑和UNIX的TAR结合使用。

 如果你真想使用EXP直接到磁带,你可以参考Metalink文章“EXPORTINGTOTAPEONUNIXSYSTEMS”(文档号:

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/sysassysdba'"file=1.dmptables=gototop.trows=n

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

 expgototop/gototopfile=1.dmplog=1.logtables=cyx.tquery="wherec1=20andc2=gototop"

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

     expc/c@ncnfile=c.dmplog=c.logtables=tquery="""whereid=1andname='gototop'"""

4.2、8iIMP常用选项

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

 2、IGNORE、GRANTS和INDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需要调整表的存储参数时很有用,我们可以先根据实际情况用合理的存储参数建好表,然后直接导入数据。

而GRANTS和INDEXES则表示是否导入授权和索引,如果想使用新的存储参数重建索引,或者为了加快到入速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y。

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

4.4、Oracle9iEXP功能描述

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

 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:

ORACLEerror%luencountered

 ORA-00904:

invalidcolumnname

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

 BUG归BUG,我们的工作还是要做,在没有Oracle的支持之前,我们就自己解决。

在Oracle9i中执行下面的SQL重建exu81rls视图即可。

 CREATEORREPLACEviewexu81rls 

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

 ASselectu.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) 

 fromuser$u,obj$o,rls$r 

 whereu.user#=o.owner# 

 andr.obj#=o.obj# 

 and(uid=0or 

 uid=o.owner#or 

 exists(select*fromsession_roleswhererole='SELECT_CATALOG_ROLE') 

 ) 

 / 

 grantselectonsys.exu81rlstopublic; 

 / 

六、其他问题

 本文只讨论了Oracle8i和9i中的EXP/IMP的一些情况,对于之前的版本,在8.0.X中,除了QUERY参数不能用外,其它差别不大。

针对没有QUERY的情况,我们可以先在数据库中使用查询条件建立临时中间表,然后使用EXP导出这个中间表即可。

至于Oracle7因为目前使用的人较少,gototop不打算在此做详细解释了,如果读者朋友有需求,你可以参考Metalink文档:

“OverviewofExportandImportinOracle7”(文档号:

61949.1)。

关于EXP/IMP的详细参数信息你可以通过EXP/IMPHELP=Y来获得。

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

 [NOTE:

77523.1]TransportableTablespaces--AnExampletosetupanduse. 

 [NOTE:

100698.1]Performtablespacepoint-in-timerecoveryusingTransportableTablespace. 

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

 

注意:

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

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

附录一:

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

 第一,启动sql*puls

 第二,以system/manager登陆

 第三,createuser用户名IDENTIFIEDBY密码(如果已经创建过用户,这步可以省略)

 第四,GRANTCREATEUSER,DROPUSER,ALTERUSER,CREATEANYVIEW,

  DROPANYVIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,

     DBA,CONNECT,RESOURCE,CREATESESSION TO用户名字

 第五,运行-cmd-进入dmp文件所在的目录,

     impuserid=system/managerfull=yfile=*.dmp

     或者impuserid=system/managerfull=yfile=filename.dmp

 附录二:

 Oracle不允许直接改变表的拥有者,利用Export/Import可以达

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 设计艺术

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1