oracleexp详解,Oracleimpexp命令详解
如何在oracle中导⼊dmp数据库⽂件? oracle数据导⼊导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp⽂件,imp命令可以把dmp⽂件从本地导⼊到远处的数据库服务器中。 利⽤这个功能可以构建两个相同的数据库,
如何在oracle中导⼊dmp数据库⽂件?
oracle数据导⼊导出imp/exp就相当于oracle数据还原与备份。exp命令可以把数据从远程数据库服务器导出到本地的dmp⽂件,imp命令可以把dmp⽂件从本地导⼊到远处的数据库服务器中。 利⽤这个功能可以构建两个相同的数据库,⼀个⽤来测试,⼀个⽤来正式使⽤。 执⾏环境:可以在或者dos(命令⾏)中执⾏, dos中可以执⾏时由于在oracle 8i 中 安装⽬录\ora81\bin被设置为全局路径, 该⽬录下有与⽂件被⽤来执⾏导⼊导出。 oracle⽤java编写,、、这两个⽂件有可能是被包装后的类⽂件。 调⽤、所包裹的类,完成导⼊导出功能。 下⾯介绍的是导⼊导出的实例。
数据导出:
1 将数据库orcl(实例)完全导出(只有DBA才可以,普通⽤户不可以),⽤户名system 密码manager 导出到d:\daochu.dmp中
exp system/manager@orcl file=d:\daochu.dmp full=y
2 将数据库中system⽤户与sys⽤户的表导出
exp system/manager@orcl file=d:\daochu.dmp owner=(system,sys)
3 将数据库中的表inner_notify、notify_staff_relat导出
exp scott/tiger@orcl file= d:\test.dmp tables=(inner_notify,notify_staff_relat)
4 将数据库中的表table1中的字段filed1以"00"打头的数据导出
exp system/manager@orcl 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
imp system/manager@test full=y file= d:\data\newsmgnt.dmp ignore=y
上⾯可能有点问题,因为有的表已经存在,然后它就报错,对该表就不进⾏导⼊。
在后⾯加上 ignore=y 就可以了。
oracle登录命令2 将d:\daochu.dmp中的表table1 导⼊
imp system/manager@test file=d:\daochu.dmp tables=(table1)
基本上上⾯的导⼊导出够⽤了。不少情况要先是将表彻底删除,然后导⼊。
注意: 操作者要有⾜够的权限,权限不够它会提⽰。 数据库时可以连上的。可以⽤tnsping test 来获得数据库test能否连上。
附录⼀:
给⽤户增加导⼊数据权限的操作
第⼀,启动sql*plus
第⼆,以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
执⾏⽰例: f:\work\oracle_data\backup>imp userid=test/test full=y file=inner_notify.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、IMP 命令详解
命令详解:
E:\>exp help=y
通过输⼊ 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)
ROWS 导出数据⾏ (Y)
PARFILE 参数⽂件名
CONSTRAINTS 导出限制 (Y)
CONSISTENT 交叉表⼀致性
LOG 屏幕输出的⽇志⽂件
STATISTICS 分析对象 (ESTIMATE)
DIRECT 直接路径 (N)
TRIGGERS 导出触发器 (Y)
FEEDBACK 显⽰每 x ⾏ (0) 的进度
FILESIZE 各转储⽂件的最⼤尺⼨
QUERY 选定导出表⼦集的⼦句
下列关键字仅⽤于可传输的表空间
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N) TABLESPACES 将传输的表空间列表
E:\>imp help=y
可以通过输⼊ 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)
ANALYZE 执⾏转储⽂件中的 ANALYZE 语句 (Y)
FEEDBACK 显⽰每 x ⾏ (0) 的进度
TOID_NOVALIDATE 跳过指定类型 id 的校验
FILESIZE 各转储⽂件的最⼤尺⼨
RECALCULATE_STATISTICS 重新计算统计值 (N)
下列关键字仅⽤于可传输的表空间
TRANSPORT_TABLESPACE 导⼊可传输的表空间元数据 (N) TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据⽂件
TTS_OWNERS 拥有可传输表空间集中数据的⽤户
---------------------------------------------------------------------------------------
如果只导出表的结构(建表语句),不导出表的数据,可⽤Tools--Export User Objects
选中要导出的表,设置好导出的路径和各个参数后,点击Export就OK
PS:这种⽅式只能导出属于这个⽤户的表,其他⽤户的表不能导出,建议⽤命令⾏导出(exp, imp)
如果想将表结构,表的数据,触发器,函数之类的全部导出,可⽤Tools--Export Tables
选中要导出的表(可选多个),导出⽅式有三种:
Oracle Export,Sql Insert,pl/sql developer
第⼀种是导出为.dmp的⽂件格式,.dmp⽂件是⼆进制的,可以跨平台,还能包含权限,效率也很不错,⽤的最⼴。
第⼆种是导出为.sql⽂件的,选中create tables选项,where clause ⾥写⼊ where rownum<1可⽤⽂本编辑器查看,通⽤性⽐较好,但效率不如第⼀种,适合⼩数据量导⼊导出。尤其注意的是表中不能有⼤字段(blob,clob),如果有,会提⽰不能导出,可以⽤第⼀种和第三种⽅式导出。
第三种是导出为.pde格式的,.pde为Pl/sql developer⾃有的⽂件格式,只能⽤Pl/sql developer⾃⼰导⼊导出;不能⽤编辑器查看,效率不知道怎么样
PS:只有“Oracle Export”⽅式导出再导⼊后,表结构和索引结构没有发⽣变化,另两种⽅式都改变了索引类型。
导⼊的情况和导出⼀样
在表的所有者不能改变的情况下,可以使⽤导⼊导出表结构和表数据的⽅法,将表移动到你想要的所有者下(注:特别是建⽴表的时候如果以sysdba的⾝份登录的话,所有表的所有者都为sys,此时会对你⽤c#访问数据库产⽣⿇烦,我在我的另⼀篇⽂章中也提到《.NET连接Oracle数据库的错误,pl/sql中的myobjects过滤器 》),此时你只能⽤这种⽅法改变所有者。
导⼊表结构:
执⾏刚刚导出的sql⽂件,记住要删掉table前的⽤户名,⽐如以前这表名为sys.tablename,必须删除s
ys
导⼊表数据:
执⾏刚刚导出的sql⽂件
本⽂原创发布php中⽂⽹,转载请注明出处,感谢您的尊重!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论