oracle中imp命令具体解释
oracle中imp命令具体解释
Oracle的导⼊有⽤程序(Import utility)同意从数据库提取数据,⽽且将数据写⼊操作系统⽂
件。imp使⽤的基本格式:imp[username[/password[@service]]],下⾯例举imp经常使⽤⽤
法。
1. 获取帮助
imp help=y
2. 导⼊⼀个完整数据库
imp system/manager file=bible_db log=dible_db full=y ignore=y
3. 导⼊⼀个或⼀组指定⽤户所属的所有表、索引和其它对象
imp system/manager file=seapark log=seapark fromuser=seapark
imp system/manager file=seapark log=seapark fromuser=(seapark,amy,amyc,harold)
4. 将⼀个⽤户所属的数据导⼊还有⼀个⽤户
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)
5. 导⼊⼀个表
imp system/manager file=tank log=tank fromuser=seapark TABLES=(a,b)
6. 从多个⽂件导⼊
imp system/manager file=(paycheck_1,paycheck_2,paycheck_3,paycheck_4) log=paycheck,filesize=1G full=y 7. 使⽤參数⽂件
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
8. 增量导⼊(9i中已经取消)
imp system./manager inctype= RECTORE FULL=Y FILE=A
Oracle imp/exp帮助说明
C:Documents and Settingsadministrator>exp help=y
Export: Release 9.2.0.1.0 - Production on 星期三 7⽉ 28 17:04:43 2004
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
通过输⼊ EXP 命令和username/⼝令,您能够
后接username/⼝令的命令:
例程: EXP SCOTT/TIGER
或者,您也能够通过输⼊跟有各种參数的 EXP 命令来控制“导出”
依照不同參数。要指定參数,您能够使⽤keyword:
格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例程: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2),假设 T1 是分区表
USERID 必须是命令⾏中的第⼀个參数。
keyword 说明(默认) keyword 说明(默认)
--------------------------------------------------------------------------
USERID username/⼝令 FULL 导出整个⽂件 (N)
BUFFER 数据缓冲区⼤⼩ OWNER 全部者username列表
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 交叉表的⼀致性 (N) CONSTRAINTS 导出的约束条件 (Y) OBJECT_CONSISTENT 仅仅在对象导出期间设置为读的事务处理 (N) FEEDBACK 每 x ⾏的显⽰运⾏进度 (0)
FILESIZE 每⼀个转储⽂件的最⼤⼤⼩
FLASHBACK_SCN ⽤于将会话快照设置回曾经状态的 SCN FLASHBACK_TIME ⽤于获取最接近指定时间的 SCN 的时间QUERY ⽤于导出表的⼦集的 select ⼦句
RESUMABLE 遇到与空格相关的错误时挂起 (N)
RESUMABLE_NAME ⽤于标识可恢复语句的⽂本字符串RESUMABLE_TIMEOUT RESUMABLE 的等待时间
TTS_FULL_CHECK 对 TTS 运⾏完整的或部分相关性检查TABLESPACES 要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N) TEMPLATE 调⽤ iAS 模式导出的模板名
在没有警告的情况下成功终⽌导出。
==================================================
C:Documents and Settingsadministrator>imp help=y
Import: Release 9.2.0.1.0 - Production on 星期三 7⽉ 28 17:06:54 2004 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
能够通过输⼊ IMP 命令和您的username/⼝令
后接username/⼝令的命令:
例程: IMP SCOTT/TIGER
或者, 能够通过输⼊ IMP 命令和各种參数来控制“导⼊”
依照不同參数。要指定參数,您能够使⽤keyword:
格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
例程: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1: P1,T1: P2),假设 T1 是分区表
USERID 必须是命令⾏中的第⼀个參数。
keyword 说明(默认) keyword 说明(默认)
--------------------------------------------------------------------------
USERID username/⼝令 FULL 导⼊整个⽂件 (N)
BUFFER 数据缓冲区⼤⼩ FROMUSER 全部⼈username列表
FILE 输⼊⽂件 (EXPDAT.DMP) TOUSER username列表
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 的等待时间
oracle 字符串转数组COMPILE 编译过程, 程序包和函数 (Y)
STREAMS_CONFIGURATION 导⼊ Streams 的⼀般元数据 (Y)
STREAMS_INSTANITATION 导⼊ Streams 的实例化元数据 (N)
下列keyword仅⽤于可传输的表空间
TRANSPORT_TABLESPACE 导⼊可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据⽂件
TTS_OWNERS 拥有可传输表空间集中数据的⽤户
成功终⽌导⼊,但出现警告。
Oracle8i/9i EXP/IMP使⽤经验
⼀、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 file=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'"""
⼆、8i IMP经常使⽤选项
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 - 设置表空间导出模式。个⼈认为对于⼀般⽤户⽽⾔,这个才是新增參数中
最有⽤的⼀个,能够让⽤户在原来的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 u81rls 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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论