oracle中imp命令详解
Oracle的导入实用程序(Import
utility)允许从数据库提取数据,并且将数据写入操作系统文件。imp使用的基本格式:imp
[urname[/password[@rvice]]],以下例举imp常用用法。
1.获取帮助
imphelp=y
2.导入一个完整数据库
impsystem/managerfile=d:=d:l=yignore=y
3.导入一个或一组指定用户所属的全部表、索引和其他对象
impsystem/managerfile=aparklog=aparkfromur=aparkimp
system/managerfile=aparklog=aparkfromur=(apark,amy,amyc,harold)
4.将一个用户所属的数据导入另一个用户
impsystem/managerfile=tanklog=tankfromur=aparktour=apark_copyimp
system/managerfile=tanklog=tankfromur=(apark,amy)tour=(apark1,
amy1)
5.导入一个表
impsystem/managerfile=tanklog=tankfromur=aparkTABLES=(a,b)
6.从多个文件导入
impsystem/managerfile=(paycheck_1,paycheck_2,paycheck_3,paycheck_4)
log=paycheck,filesize=1Gfull=y
7.使用参数文件
impsystem/managerparfile=bible_
bible_参数文件:
#ImportthesampletablesudfortheOracle8iDatabaAdministrator'sBible.
fromur=aparktour=apark_copyfile=aparklog=apark_import
8.增量导入
impsystem./managerinctype=RECTOREFULL=YFILE=AOracleimp/expC:Documents
andSettingsadministrator>exphelp=yExport:Relea9.2.0.1.0-Productionon
星期三7月2817:04:432004Copyright(c)1982,2002,
rightsrerved.通过输入EXP
命令和用户名/口令,您可以后接用户名/口令的命令:例程:EXP
SCOTT/TIGER或者,您也可以通过输入跟有各种参数的EXP
命令来控制“导出”按照不同参数。要指定参数,您可以使用关键字:格式:EXP
KEYWORD=value或KEYWORD=(value1,value2,...,valueN)例程:EXPSCOTT/TIGER
GRANTS=YTABLES=(EMP,DEPT,MGR)或TABLES=(T1:P1,T1:P2),如果T1是分区表USERID
必须是命令行中的第一个参数。关键字说明(默认)关键字
说明(默认)---------------------------------------------------------------------
-----USERID用户名/口令FULL导出整个文件(N)BUFFER
数据缓冲区大小OWNER所有者用户名列表FILE输出文件
()TABLES表名称列表COMPRESS导入到一个区(Y)
RECORDLENGTHIO记录的长度GRANTS导出权限(Y)INCTYPE
增量导出类型INDEXES导出索引(Y)RECORD跟踪增量导出
(Y)DIRECT直接路径(N)TRIGGERS导出触发器(Y)LOG
屏幕输出的日志文件STATISTICS分析对象(ESTIMATE)ROWS导出数据行
(Y)PARFILE参数文件名CONSISTENT交叉表的一致性(N)CONSTRAINTS
导出的约束条件(Y)OBJECT_CONSISTENT只在对象导出期间设置为读的事务处理
(N)FEEDBACK每x行的显示进度(0)FILESIZE
每个转储文件的最大大小FLASHBACK_SCN用于将会话快照设置回以前状态的
SCNFLASHBACK_TIME用于获取最接近指定时间的SCN的时间QUERY
用于导出表的子集的lect子句RESUMABLE遇到与空格相关的错误时挂起
(N)RESUMABLE_NAME用于标识可恢复语句的文本字符串RESUMABLE_TIMEOUT
RESUMABLE的等待时间TTS_FULL_CHECK对TTS
执行完整的或部分相关性检查TABLESPACES
要导出的表空间列表TRANSPORT_TABLESPACE导出可传输的表空间元数据(N)TEMPLATE
调用iAS
模式导出的模板名在没有警告的情况下成功终止导出。===============================
===================C:DocumentsandSettingsadministrator>imphelp=yImport:
Relea9.2.0.1.0-Productionon星期三7月2817:06:542004Copyright(c)
1982,2002,htsrerved.可以通过输入IMP
命令和您的用户名/口令后接用户名/口令的命令:例程:IMPSCOTT/TIGER或者,
可以通过输入IMP
命令和各种参数来控制“导入”按照不同参数。要指定参数,您可以使用关键字:格式:
IMPKEYWORD=value或KEYWORD=(value1,value2,...,vlaueN)例程:IMPSCOTT/TIGER
IGNORE=YTABLES=(EMP,DEPT)FULL=N或TABLES=(T1:P1,T1:P2),如果T1
是分区表USERID必须是命令行中的第一个参数。关键字说明(默认)
关键字说明(默认)-----------------------------------------------------
---------------------USERID用户名/口令FULL
导入整个文件(N)BUFFER数据缓冲区大小FROMUSER
所有人用户名列表FILE输入文件()TOUSER
用户名列表SHOW只列出文件内容(N)TABLES表名列表IGNORE
忽略创建错误(N)RECORDLENGTHIO记录的长度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)STREAMS_CONFIGURATION导入Streams的一般元数据(Y)STREAMS_INSTANITATION
导入Streams的实例化元数据
(N)下列关键字仅用于可传输的表空间TRANSPORT_TABLESPACE导入可传输的表空间元数据
(N)TABLESPACES将要传输到数据库的表空间DATAFILES
将要传输到数据库的数据文件TTS_OWNERS
拥有可传输表空间集中数据的用户成功终止导入,但出现警告。
oracle的imp和exp的一些用法--
Oracle8i/9iEXP/IMP使用经验一、8iEXP常用选项
1、FULL,这个用于导出整个数据库,在ROWS=N一起使用时,可以导出整个数据库的结构。
例如:expsysfile=./db_=./db_l=yrows=ncompress=y
direct=y
2、BUFFER和FEEDBACK,在导出比较多的数据时,我会考虑设置这两个参数。例如:exp
newfile=yw97_=yw97_2003_dback=10000buffer=100000000
tables=WO4,OK_YT
3、FILL和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括文件名和目录,例子?
厦妗?
需要说明的是,EXP可以直接备份到磁带中,即使用FILE=/dev/rmt0(磁带设备名),但是一
般我们都不这么做,原因有二:一、这样做的速度会慢很多
,二、现在一般都是使用磁带库的,不建议直接对磁带进行操作。至于没有使用磁带库的?
笥芽梢钥悸呛蚒NIX的TAR结合使用。
如果你真想使用EXP直接到磁带,你可以参考Metalink文章“EXPORTINGTOTAPEONUNIX
SYSTEMS”(文档号:30428.1),该文中有详细解释。
4、COMPRESS参数将在导出的同时合并碎块,尽量把数据压缩到initial的EXTENT里,默认?
荖,一般建议使用。DIRECT参数将告诉EXP直接读取数据,
而不像传统的EXP那样,使用SELECT来读取表中的数据,这样就减少了SQL语句处理过程。?
话阋步ㄒ槭褂谩2还行┣榭鱿翫IRECT参数是无法使用的。
5、如何使用SYSDBA执行EXP/IMP?
这是一个很现实的问题,有时候我们需要使用SYSDBA来执行EXP/IMP,如进行传输表空间的
EXP/IMP,以及在9i下用SYS用户来执行EXP/IMP时,都需要
使用SYSDBA才可。我们可以使用下面方式连入EXP/IMP:exp"'sys/sysassysdba'"
file=les==n
6、QUERY参数后面跟的是where条件,值得注意的是,整个where子句需要使用""括起来,w
here子句的写法和SELECT中相同,如果是UNIX平台所有"和'
都需要使用u26469屏蔽它们的特殊含义:expgototop/gototopfile==
tables=="wherec1=20andc2=gototop"
如果是windows平台,则使用下面的格式:expc/c@ncnfile==les=t
query="""whereid=1andname='gototop'"""二、8iIMP常用选项
1、FROMUSER和TOUSER,使用它们实现将数据从一个SCHEMA中导入到另外一个SCHEMA中。
2、IGNORE、GRANTS和INDEXES,其中IGNORE参数将忽略表的存在,继续导入,这个对于需?
髡淼拇娲⒉问焙苡杏茫颐强梢韵雀菔导是榭鲇?
合理的存储参数建好表,然后直接导入数据。而GRANTS和INDEXES则表示是否导入授权和索
引,如果想使用新的存储参数重建索引,或者为了加快到入
速度,我们可以考虑将INDEXES设为N,而GRANTS一般都是Y。
另外一个EXP/IMP都有的参数是PARFILE,它是用来定义EXP/IMP的参数文件,也就是说,上
面的参数都可以写在一个参数文件中,但我们一般很少使用。三、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-
设置表空间导出模式。个人觉得对于一般用户而言,这个才是新增参数中最实用的一个,?
梢匀糜没г谠吹腇ULL、OWNER、TABLES的基础上多了一种选择,使得EXP更加灵活。
四、不同版本的EXP/IMP问题?
一般来说,从低版本导入到高版本问题不大,麻烦的是将高版本的数据导入到低版本中,?
贠racle9i之前,不同版本Oracle之间的EXP/IMP可以通过下面的方法来解决:
1、在高版本数据库上运行底版本的;
2、使用低版本的EXP来导出高版本的数据;
3、使用低版本的IMP将数据库导入到底版本数据库中;
4、在高版本数据库上重新运行高版本的脚本。
但在9i中,上面的方法并不能解决问题。如果直接使用底版本EXP/IMP会出现如下错误:
EXP-00008:ORACLEerror%luencounteredORA-00904:invalidcolumnname
这已经是一个公布的BUG,需要等到Oracle10.0才能解决,BUG号为2261,你可以到METALIN
K上去查看有关此BUG的详细信息。
BUG归BUG,我们的工作还是要做,在没有Oracle的支持之前,我们就自己解决。在Oracle9
i中执行下面的SQL重建exu81rls视图即可。
CREATEORREPLACEviewexu81rls
(objown,objnam,policy,polown,polsch,polfun,stmts,chkopt,enabled,spolicy)
,,,a,,,
decode(bitand(_type,1),0,'','SELECT,')
||decode(bitand(_type,2),0,'','INSERT,')
||decode(bitand(_type,4),0,'','UPDATE,')
||decode(bitand(_type,8),0,'','DELETE,'),
_opt,_flag,
DECODE(BITAND(_type,16),0,0,1)
fromur$u,obj$o,rls$r
#=##=#
and(uid=0oruid=#or
exists(lect*fromssion_roleswhererole='SELECT_CATALOG_ROLE')
)
/81rlstopublic;
/
五、其他问题本文只讨论了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--AnExampletotupandu.
[NOTE:100698.1]Performtablespacepoint-in-timerecoveryusingTransportableTablespace.
在进行并行EXP/IMP的时候,如果IMP过程建索引的话不建议同时运行5个以上的IMP,如果你想加快速度
imp到库:
1导出:expurur@dbnameowner=urfile=pathfile;
2查看原数据库你要导出的用户的默认表空间(sys用户权限)
lect*fromdba_extentswhereowner='你想导出的用户名'
3、查看表空间对应数据文件(sys用户权限)
lect*fromdba_data_fileswheretablespace_name='你想导出的用户对应的表空间'
4、目的数据库建立表空间(最大表空间与dbblocksize相关,如果是默认的话,不能超过32G)
createtablespace'目标表空间、与你想导出的用户对应的表空间对应'loggingdatafile„路径数据文
件名如G:‟size500Mautoextendon
next50Mmaxsize50000Mextentmanagementlocal
5、创建用户
createur„目标数据库上的用户‟identifiedby'你设的password'defaulttablespace'上面的目标
表空间'temporarytablespacetempprofiledefault;
6授权给新建用户
grantconnect,resouceto„你新建的用户‟;
7导入
imp'目标dbur'/'password'@目标数据库fromur=„原数据库导出的用户‟tour='你新建的用户'
file='刚才导出的dump'
建议你exp按用户导出,导入时也按用户导入。
导入前先把所有用户和表空间建好,再导,可能该用户的表要授权给其他用户检索更新,如果其他用户不
存在就会报错。
本文发布于:2023-03-13 20:15:03,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678709704240390.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:数据导入.doc
本文 PDF 下载地址:数据导入.pdf
留言与评论(共有 0 条评论) |