Oracle自带的exp/imp是一个比较常用的工具,可以用作备份(不用启用归档),公司开发转为生产的时候,只要结构,不用数据,以及多个库整合为一个库时使用,异构平台的迁移等(exp导出的文件与文件头无关,不同于RMAN)。

exp关键字解释:

exp help=y 查看

    关键字           说明(默认)               关键字            说明(默认)

     USERID        用户名/口令              INCTYPE           增量导出类型 

     FULL          导出整个文件 (N)        INDEXES           导出索引 (Y)

     BUFFER        数据缓冲区大小          RECORD            跟踪增量导出 (Y)

     OWNER         所有者用户名列表        DIRECT           直接路径 (N)

     FILE           输出文件 (EXPDAT.DMP)  LOG              屏幕输出的日志文件

     TABLES        表名称列表               TRIGGERS         导出触发器 (Y)

     COMPRESS      导入到一个区 (Y)        STATISTICS       分析对象 (ESTIMATE)

     ROWS           导出数据行 (Y)          RECORDLENGTHIO 记录的长度  

     GRANTS        导出权限 (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 执行完整的或部分相关性检查

    VOLSIZE                 写到每个磁带上字节

    TABLESPACES            要导出的表空间列表

    TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)

    TEMPLATE                调用 iAS 模式导出的模板名

exp导出的文件是一个专用的二进制格式转储文件,只能被imp导入工具所读取。

exp是客户端工具,生成的文件是客户端的平台格式。

exp导出时有四种模式:表模式、用户模式、数据库模式、可传输表空间模式


1.表模式:导出某个用户下指定的表,授权的用户可以导出其他用户下的表    

   应用:数据仓库中需要某个表,直接导出

2.用户模式:导出某个指定用户下所有的对象,授权的用户可以导出其他用户下的所有对象。使用较多,如果用户下表比较多,由于只能串行导,速度比较慢,可采用表模式直接导用户下的表,通过加并发加快速度。

3.数据库模式:导出除了sys以外、数据库中所有的对象,只有已授权的用户才能在该模式中执行导出,需要exp_full_database权限。

  应用:建库、用户等不规范,导致数据库中用户比较多,杂。

4.可传输表空间模式:导出某个指定表空间中的所有对象时,可以使用该模式,使用可传输表空间模式可以将一组表空间从一个数据库快速的转移到另一个数据库,速度相对于数据库的导入导出,还是较快的。两个大体步骤:复制数据文件、表空间结构信息导入到目标数据库。

  注意:10G之前只能在相同平台操作,10G之后才支持异构平台

使用exp导出的时候,有两种方式完成:

1.传统路径方式

exp采用SQL语句的方式把要导出的表数据检索出来,然后通过网络将数据传输到客户端,并在客户端生成转储文件,也就是说需要在shared_pool中解析生成执行计划以后,将数据缓存到buffer中,然后传递到客户端,是默认的导出方式

2.直接路径方式

使用直接路径方式,exp不采用SQL的方式,而是直接获得数据块,绕过shared_pool和buffer_cache,将数据块里的数据直接抽取出来之后直接传递到客户端,相对于传统路径来说,速度要快,在导出时加上direct=y则表示直接路径导出,但是不能导出含有lob,bfile等大对象的表。

用来迁移时,注意源端、目标端的版本,数据量大小,估算大体的时间

exp结合shareplex/dg/ogg,通过灾备

建立数据库的静态镜像,记录SCN,然后把该镜像导出并导入到目标数据库,最后应用灾备同步队列的内容。


低版本到高版本的使用

只能使用低版本的导出,然后使用低版本或者高版本的进行导入

如想将数据从9i迁移到11G,则使用9i导出,然后使用11G或者9i导入(使用别名导入)即可。

10g之后

如10g到11g,先用10g的expdp导出,然后传输到11g并用11g的impdp导入

详细操作见下篇。。。