关于exp/imp的总结学习

关于exp/imp,是很常用的数据导出导入工具,在10g开始推出的数据泵datapump相当于是exp/imp的补充和升级版本。在后续章节再做一个总结。
exp/imp的使用相对比较简单,通常用做在不同的数据库或者环境之间转移数据,即使数据库位于不同的平台,也可以通过统一的接口来做数据的导入导出工作。
使用方法可以通过exp -help,imp -help来得到一个简单的帮助说明。

USERID must be the first parameter on the command line.
Keyword    Description (Default)      Keyword      Description (Default)
--------------------------------------------------------------------------
USERID     username/password          FULL         export entire file (N)
BUFFER     size of data buffer        OWNER        list of owner usernames
FILE       output files
(EXPDAT.DMP)  TABLES       list of table names
COMPRESS   import into one extent (Y)
RECORDLENGTH length of IO record
GRANTS     export grants (Y)          INCTYPE      incremental export type
INDEXES    export indexes (Y)         RECORD       track incr. export (Y)
DIRECT     direct path (N)            TRIGGERS     export triggers (Y)
LOG        log file of screen
output  STATISTICS   analyze objects (ESTIMATE)
ROWS       export data rows (Y)       PARFILE      parameter filename
CONSISTENT cross-table consistency(N) CONSTRAINTS  export constraints (Y)

OBJECT_CONSISTENT    transaction set
to read only during object export (N)
FEEDBACK             display progress
every x rows (0)
FILESIZE             maximum size of
each dump file
FLASHBACK_SCN        SCN used to set
session snapshot back to
FLASHBACK_TIME       time used to get
the SCN closest to the specified time
QUERY                select clause used
to export a subset of a table
RESUMABLE            suspend when a
space related error is encountered(N)
RESUMABLE_NAME       text string used
to identify resumable statement
RESUMABLE_TIMEOUT    wait time for
RESUMABLE
TTS_FULL_CHECK       perform full or
partial dependency check for TTS
VOLSIZE              number of bytes
to write to each tape volume
TABLESPACES          list of
tablespaces to export
TRANSPORT_TABLESPACE export transportable tablespace metadata (N)
TEMPLATE             template name
which invokes iAS mode export


USERID must be the first parameter on the command line.
Keyword  Description (Default)       Keyword      Description (Default)
--------------------------------------------------------------------------
USERID   username/password           FULL         import entire file (N)
BUFFER   size of data buffer         FROMUSER     list of owner usernames
FILE     input files
(EXPDAT.DMP)    TOUSER       list of usernames
SHOW     just list file contents (N)
TABLES       list of table names
IGNORE   ignore create errors
(N)    RECORDLENGTH length of IO
record
GRANTS   import grants (Y)           INCTYPE      incremental import type
INDEXES  import indexes (Y)          COMMIT       commit array insert (N)
ROWS     import data rows (Y)        PARFILE      parameter filename
LOG      log file of screen
output   CONSTRAINTS  import constraints (Y)
DESTROY                overwrite
tablespace data file (N)
INDEXFILE              write
table/index info to specified file
SKIP_UNUSABLE_INDEXES  skip
maintenance of unusable indexes (N)
FEEDBACK               display
progress every x rows(0)
TOID_NOVALIDATE        skip
validation of specified type ids
FILESIZE               maximum size
of each dump file
STATISTICS             import
precomputed statistics (always)
RESUMABLE              suspend when a
space related error is encountered(N)
RESUMABLE_NAME         text string
used to identify resumable statement
RESUMABLE_TIMEOUT      wait time for
RESUMABLE
COMPILE                compile
procedures, packages, and functions (Y)
STREAMS_CONFIGURATION  import streams
general metadata (Y)
STREAMS_INSTANTIATION  import streams
instantiation metadata (N)
DATA_ONLY              import only
data (N)
VOLSIZE                number of
bytes in file on each volume of a file on tape
The following keywords only apply to transportable tablespaces
TRANSPORT_TABLESPACE import transportable tablespace metadata (N)
TABLESPACES tablespaces to be transported into database
DATAFILES datafiles to be transported into database
TTS_OWNERS users that own data in the transportable tablespace set

导出模式有四种,数据库,表空间,用户,表级四个级别。
对于数据库级的导入导出,需要拥有exp_full_database权限,一般这个操作也是通过dba来执行,但是使用的场景相对比较少。
    一个简单例子如下:
   exp n1/n1 file=db_backup.dmp buffer=9102000 log=db_backup.log full=Y
   至于导入,就不能直接使用全库导入了,一般都按照要去来看哪些数据缺失了,针对性的补充导入。

对于表空间的导入导出,这个功能和表空间传输的特性是相关联的,如果要使用表空间传输,需要用到,transport_tablespaces,tablespace这两个参数而且需要使用sys来做这个操作。
    一个简单的例子如下
  导出

  exp \'sys/oracle@PROD as sysdba\' file=hr_PROD.dmp transport_tablespace=y tablespaces=tbs4

   导入:
   imp \'sys/oracle123@repos as sysdba\' file=hr_PROD.dmp transport_tablespace=y tablespaces=tbs4 datafiles=/u01/app/db/oradata/repos/tbs04.dbf

对于用户级的导入导出,可能使用要频繁一些。
 导出的简单示例,导出appc下的所有信息,导出dump为a.dmp
 exp n1/n1 file=a.dmp owner=appc
 导入的时候,导入到work账户中
 imp n1/n1 file=a.dmp fromuser=appc touser=work
最后就是表级的导入导出,使用频率最为频繁。
最简单的一个例子就是
exp n1/n1 file=a.dmp tables=TEST
imp appc/appc file=a.dmp tables=TEST
其实我们来做些更多的使用补充。
-->使用parfile来完成复杂的导入导出
这个功能可能在做一些动态的数据导入导出的时候尤为有用,可以只关注于parfile的部分,比如我们导出appc下的表test1,test2,test3
就可以定义parfile appc.parfile,内容为
tables=test1,test2,test3
导入导出命令类似
exp appc/appc file=a.dmp parfile=appc.parfile logfile=appc_exp.log
导入命令类似
imp appc/appc file=a.dmp parfile=appc.parfile logfile=appc_exp.log
如果要指定导出几十个,上百个表,使用parfile就能避免命令的繁琐。
-->使用query来做细粒度的导入导出
SQL> select object_id from test;
 OBJECT_ID
----------
        20
        46
如果我只想导出object_id为20的数据,就可以使用query来进行逻辑层面的导出。
[ora11g@rac1 ora11g]$ exp n1/n1 file=a.dmp tables=test query=\'where object_id=20\'
About to export specified tables via Conventional Path ...
. . exporting table                           TEST          1 rows exported
Export terminated successfully without warnings.
如果要实现复杂的逻辑导出,也未尝不可。

-->生成数据脚本
可能对于生成ddl脚本的功能大家并不在意。但是在特定的场景中也是很实用的。
比如我们导出表test,t的创建脚本。
[ora11g@rac1 ora11g]$ exp n1/n1 file=a.dmp tables=test,t rows=n
Export: Release 11.2.0.3.0 - Production on Sun Jan 25 06:44:11 2015
Note: table data (rows) will not be exported
About to export specified tables via Conventional Path ...
. . exporting table                           TEST
. . exporting table                              T
Export terminated successfully without warnings.
然后使用imp来生成ddl脚本,这个过程不是在做实际的导入,只是在生成脚本。
[ora11g@rac1 ora11g]$ imp n1/n1 file=a.dmp indexfile=a.log tables=test,t
Import: Release 11.2.0.3.0 - Production on Sun Jan 25 06:45:04 2015
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
Export file created by EXPORT:V11.02.00 via conventional path
import done in AL32UTF8 character set and AL16UTF16 NCHAR character set
Import terminated successfully without warnings.
[ora11g@rac1 ora11g]$ ls -lrt
total 28
-rw-r--r-- 1 ora11g dba 24576 Jan 25 06:44 a.dmp
-rw-r--r-- 1 ora11g dba  1610 Jan 25 06:45 a.log
生成的脚本如下,可能还需要进一步处理,但是相对来说也算比较清晰了。
[ora11g@rac1 ora11g]$ less a.log 
REM  CREATE TABLE "N1"."TEST" ("OWNER" VARCHAR2(30) NOT NULL ENABLE, 
REM  "OBJECT_NAME" VARCHAR2(30) NOT NULL ENABLE, "SUBOBJECT_NAME" 
REM  VARCHAR2(30), "OBJECT_ID" NUMBER NOT NULL ENABLE, "DATA_OBJECT_ID" 
REM  NUMBER, "OBJECT_TYPE" VARCHAR2(19), "CREATED" DATE NOT NULL ENABLE, 
REM  "LAST_DDL_TIME" DATE NOT NULL ENABLE, "TIMESTAMP" VARCHAR2(19), 
REM  "STATUS" VARCHAR2(7), "TEMPORARY" VARCHAR2(1), "GENERATED" 
REM  VARCHAR2(1), "SECONDARY" VARCHAR2(1), "NAMESPACE" NUMBER NOT NULL 
REM  ENABLE, "EDITION_NAME" VARCHAR2(30)) PCTFREE 10 PCTUSED 40 INITRANS 1 
REM  MAXTRANS 255 STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 
REM  FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE 
REM  "POOL_DATA" LOGGING NOCOMPRESS ;
REM  CREATE TABLE "N1"."T" ("OWNER" VARCHAR2(30), "OBJECT_NAME" 
REM  VARCHAR2(128), "SUBOBJECT_NAME" VARCHAR2(30), "OBJECT_ID" NUMBER, 
REM  "DATA_OBJECT_ID" NUMBER, "OBJECT_TYPE" VARCHAR2(19), "CREATED" DATE, 
REM  "LAST_DDL_TIME" DATE, "TIMESTAMP" VARCHAR2(19), "STATUS" VARCHAR2(7), 
REM  "TEMPORARY" VARCHAR2(1), "GENERATED" VARCHAR2(1), "SECONDARY" 
REM  VARCHAR2(1), "NAMESPACE" NUMBER, "EDITION_NAME" VARCHAR2(30)) PCTFREE 
REM  10 PCTUSED 40 INITRANS 1 MAXTRANS 255 STORAGE(INITIAL 2097152 NEXT 
REM  1048576 MINEXTENTS 1 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL 
REM  DEFAULT) TABLESPACE "POOL_DATA" LOGGING NOCOMPRESS ;
CONNECT N1;
CREATE UNIQUE INDEX "N1"."IND_T" ON "T" ("OBJECT_ID" ) PCTFREE 10 INITRANS 
2 MAXTRANS 255 STORAGE(INITIAL 262144 NEXT 1048576 MINEXTENTS 1 FREELISTS 
1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "POOL_DATA" LOGGING ;

-->能够提升性能的参数
在导入导出的过程中,为了提高性能不妨考虑以下几个参数
grants=n    --一般来说数据的导入导出,是不需要这些权限信息的,我们需要的只是数据。
statistics=none   --统计信息很可能不需要,多个环境之间的数据量不同,尤其是大的分区表,如果导入统计信息还是很耗时的。可以酌情使用
constraints=n     --在数据导入的过程中,很可能不需要这个选项,大多数情况下,不需要我们来改变目标环境的结构
indexes=n      --这个选项一般也是不需要的,很可能目标环境已经有对应的索引了。
buffer=9102000   这个参数很重要,对于exp/imp来说,根据自己的条件来设定,我一般设置为9M,基本都够用了。

时间: 2024-10-06 08:38:18

关于exp/imp的总结学习的相关文章

EXP/IMP 学习(四)

1.4  常见问题1.  字符集问题ORACLE  多国语言设置是为了支持世界范围的语言与字符集,一般对语言提示, 货币形式,排序方式和  CHAR,VARCHAR2,C LOB,LONG  字段的数据的显示等有效. ORACLE  的多国语言设置最主要的两个特性就是国家语言设置与字符集设置,国家语 言设置决定了界面或提示使用的语言种类,字符集决定了数据库保存与字符集有关数据(如文本)时候的编码规则.ORACLE 字符集设定,分为数据库字符集和客户端字符集环境设置.在数据库端,字符集在创建数据库

EXP/IMP 学习(三)

1.3  优化1.  加快exp速度加大 large_pool_size,可以提高 exp的速度 采用直接路径的方式(direct=y),数据不需要经过内存进行整合和检查. 设置较大的 buffer,如果导出大对象,小 buffer会失败.export文件不在 ORACLE使用的驱动器上 不要 export到 NFS文件系统UNIX环境:用管道模式直接导入导出来提高 imp/exp的性能 2.  加快imp速度建立一个 indexfile,在数据 import完成后在建立索引将 import 文

[20171105]exp imp buffer参数解析.txt

[20171105]exp imp buffer参数解析.txt oracle官方所给的关于buffer的解释如下: https://docs.oracle.com/cd/A84870_01/doc/server.816/a76955/ch01.htm BUFFER Default: operating system-dependent. See your Oracle operating system-specific documentation to determine the defaul

【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中

[exp/imp]将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中   1.1  BLOG文档结构图     1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 如何将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中(重点,2种方法)? ② 从dmp文件可以获取到哪些信息?如何从dmp文件获取到dmp文件的字符集(重点,N种方法)? ③

利用RMAN转移数据和EXP/IMP转移数据的实测比较

比较|数据 由于工程需要经常将客户的现场数据导出到公司的开发环境中,随着客户现场数据量的不断增大,原先 使用的导出导入的方法需要花费越来越长的时间,所以测试一下RMAN的效率,验证是否能用恢复RMAN备 份的方法来代替以往的EXP/IMP方法.原本想过用传输表空间的方法,但是由于我们通常在创建数据库的 时候就给业务所用的表空间创建了很大的数据文件,这样在传输表空间的copy数据文件的步骤上会花费 很长的时间,所以还是决定测试一下RMAN了. 测试目的:实现对于JHJKREC用户的数据转移. 在1

exp/imp与expdp/impdp的用法区别

exp/imp与expdp/impdp的用法区别 1:把用户usera的对象导到用户userb,用法区别在于fromuser=usera touser=userb ,remap_schema='usera':'usera' .例如 imp system/passwd fromuser=usera touser=userb file=/oracle/exp.dmp log=/oracle/exp.log; impdp system/passwd directory=expdp dumpfile=e

Oracle的EXP/IMP版本支持列表

oracle EXP/IMP一般EXPORT时使用地版本,IMPORT时使用与目标库相同的IMP工具 10.1.09.2.09.0.18.1.78.1.68.1.58.0.x7.3.x10.1.0EXP10EXP920EXP901EXP817EXP816EXP815N/AN/A9.2.0EXP920EXP920EXP901EXP817EXP816EXP815EXP80xN/A9.0.1EXP901EXP901EXP901EXP817EXP816EXP815EXP80xN/A8.1.7EXP817

解决Oracle中Exp/Imp大量数据处理问题

Oracle的exp/imp是许多用户经常使用的两个工具. 它们常被用来做数据库的逻辑备份,数据库重组和数据转移等工作. 先由exp把数据卸出到文件系统, 产生一个.dmp文件, 然后必要时再由imp将数据装入数据库. 对于一般中小型数据库来说, 全数据库的exp所产生的dmp文件可能小于2GB, 但对稍大型的数据库, exp产生的数据动辄数十至上百个GB. 而现时多数操作系统为32位, 其文件系统允许的最大文件为2GB. 这样显然不能由文件系统存放exp产生的数据. 这是问题之一. 另一个问题

使用exp/imp导入oracle 11g数据到oracle 9i

现在有个需求,需要使用exp/imp导入11g的数据库数据到9i中,解决这个问题一般来说想到三种方法思路,一个个尝试(其实从高版本服务端支持低版本客户端的原则,可以大概的猜测出使用9i的客户端处理该问题) 方法1:导出导入都使用11g客户端 --11g客户端导出 [oracle@xifenfei ~]$ exp chf/xifenfei file=/tmp/t_xifenfei.dmp >log=/tmp/t_xifenfei.log tables=chf.t_xifenfei Export: