如果导出的表不属于当前连接用户,需要注意两点:

   *  执行导出的用户必须拥有EXP_FULL_DATABASE 角色对应的权限,或拥有DBA角色。

   * 在TABLES参数中指定表名时,必须以SCHEMA.TABLE的格式指定,如果不指定SCHEMA名称的话,默认导出连接用户下的同名表,如果没有该表就会报错。

1、示例:通过system用户下导出scott下的两个表:

 2、如果是导出某几个SCHEMA中的对象,同理也是需要EXP_FULL_DATABASE权限,或DBA角色,以下是在system用户下导出scott和ming两个用户的对象

建立参数文件parameter2.dat:

exp调用上述参数文件:

成功导出上述两用户对象

注意:上述参数OWNER主要用来指定需导出的schema列表,如有多个schema用,号分隔即可。

3、全库导出操作,这个就需要DBA角色或者EXP_FULL_DATABASE角色也可以,同时只需把前面相关表与用户模式的参数更改为full=y即可,其它操作相同:

所谓全库导出,只是逻辑上的全库,只导出了与用户数据相关的对象,对于一些与用户数据无关的对象,oracle并不会去处理它。

4、exp还有专门提供以下参数来控制是否导出授权(grants)、索引(indexes)、约束(constraints)、触发器(triggers),默认都为Y,导出,如不需要导出指定上述参数为N即可:

以上在执行全导出过程中,不导出授权、索引、约束等 。

5、导出的数据太大,超出操作系统限定大小。

可以通过限定导出的dmp文件大小来处理,使用参数filesize:

以下操作一样,exp在执行过程中,用户指定的文件如果用完则需提示用户手动输入文件名才可继续,如果不输入即停在那里了,如下:

那么如何知道导出的数据有多大,这样好进行设置多少个导出的dmp文件呢?通过系统查看文件大小。这个可以,但不一定准确,以下方法可以准确查询对象所占的空间大小:

SQL> select sum(bytes) /1024 /1024 M from user_segments;

         M
----------
       638
 

后续……关于优化exp命令的执行效率