imp命令导⼊指定表_oracle导⼊imp命令
最常⽤的 imp name/password@IP:1521/orcl[库] file="c:\123.dmp" full=y ignore=y。
例:imp abc/123@192.168.1.3:1521/orcl file = "c:\123.dmp" full=y ignore = y。
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 命令和⽤户名/⼝令,您可以
后接⽤户名/⼝令的命令:
例程: 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 交叉表的⼀致性 (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 命令和您的⽤户名/⼝令
后接⽤户名/⼝令的命令:
例程: 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)
STREAMS_CONFIGURATION 导⼊ Streams 的⼀般元数据 (Y)
STREAMS_INSTANITATION 导⼊ Streams 的实例化元数据 (N)
下列关键字仅⽤于可传输的表空间
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=100000000tables=WO4,OK_YT
3、FILL和LOG,这两个参数分别指定备份的DMP名称和LOG名称,包括⽂件名和⽬录,例⼦见上⾯。
需要说明的是,EXP可以直接备份到磁带中,即使⽤FILE=/dev/rmt0(磁带设备名),但是⼀般我们都不这么做,原因有⼆:⼀、这样做的速度会慢很多,⼆、现在⼀般都是使⽤磁带库的,不建议直接对磁带进⾏操作。⾄于没有使⽤磁带库的朋友可以考虑和UNIX的TAR结合使⽤。
如果你真想使⽤EXP直接到磁带,你可以参考Metalink⽂章“EXPORTING TO TAPE ON UNIXSYSTEMS”(⽂档号: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 andc2=gototop"
如果是windows平台,则使⽤下⾯的格式:
expc/c@ncnfile=c.dmp log=c.log tables=t query="""where id=1 and name='gototop'"""
⼆、8i IMP常⽤选项
1、FROMUSER和TOUSER,使⽤它们实现将数据从⼀个SCHEMA中导⼊到另外⼀个SCHEMA中。
oracle登录命令
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#
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论