日期:2014-05-16  浏览次数:20394 次

oracle imp、exp命令 精简介绍

 对于数据的的迁移,特别是不同版本之间和不同系统之间的迁移,使用exp/imp可以完成,
当然,我们推荐使用expdp/impdp进行数据的导入,导出。下面我们简单讲讲exp、imp的基本操作


1 整个数据库的导出、导入
 
 a 导出、导入之前我们需要确认数据库的字符集,设置环境变量NLS_LANG
   export NLS_LANG=AMERICAN_AMERICA.UTF8(这是我的参数,具体的根据实际情况而定)

   #查询oracle字符集参数
    select * from v$nls_parameters
    select * from v$nls_parameters where parameter='NLS_CHARACTERSET';
    select value from nls_database_parameters t where t.PARAMETER='NLS_NCHAR_CHARACTERSET'
 b 执行导出命令,需要使用一定权限的用户,否则只会导出该用户拥有的对象

    exp system/root file=/backup/full.dmp log=/backup/full.log full=y
 
 c 进行导入命令
  
    imp system/root file=/backup/full.dmp log=/backup/full2.log full=y ignore=y

2 基于用户进行数据的导出、导入
   export NLS_LANG=AMERICAN_AMERICA.UTF8

   a 执行导出命令,使用对应的用户,可以指定owner,也可以不指定  但是不能指定full参数
    
     exp scott/root file=/backup/scott.dmp log=/backup/scott.log  或者
     exp system/root file=/backup/scott.dmp log=/backup/scott.log owner=scott

   b 如果没有用户和表空间,我们需要先创建指定的表空间和用户
     
      create tablespace "hsj"
      logging
      DATAFILE '/u01/oradata/orcl/heshengjun.ora' SIZE 500M REUSE EXTENT
      MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT  AUTO ;

      创建用户

      create user hsj identified by root
      default tablespace hsj
      temporary tablespace temp;

   c 授予scott权限,具体用户根据自己的用户而定

 GRANT UNLIMITED TABLESPACE TO "SCOTT";
 GRANT CREATE DATABASE LINK TO "SCOTT";
 GRANT CREATE ANY TABLE TO "SCOTT";
 GRANT CREATE ANY TRIGGER TO "SCOTT";
 GRANT CREATE ANY VIEW TO "SCOTT";
 GRANT CREATE DATABASE LINK TO "SCOTT";
 GRANT CREATE PROCEDURE TO "SCOTT";
 GRANT CREATE TABLE TO "SCOTT";
 GRANT CREATE TABLESPACE TO "SCOTT";
 GRANT CREATE TRIGGER TO "SCOTT";
 GRANT DROP ANY TABLE TO "SCOTT";
 GRANT INSERT ANY TABLE TO "SCOTT";
 GRANT UPDATE ANY TABLE TO "SCOTT";
 GRANT CONNECT TO "SCOTT";
 GRANT RESOURCE TO "SCOTT";
 GRANT IMP_FULL_DATABASE to "SCOTT"
 GRANT DBA TO "SCOTT";

    d 执行导入命令
     
      imp scott/root file=/backup/scott.dmp log=/backup/scott2.log full=y

      或者
 
      imp scott/root file=/backup/scott.dmp log=/backup/scott2.log fromuser=scott touser=scott

  3 基于表对象的导出导入
    export NLS_LANG=AMERICAN_AMERICA.UTF8
    a 导出表 对象 demp 和emp
      #在linux系统下,对特殊符号转义
      exp scott/root file=/backup/table.dmp log=/backup/table.log tables=\(dept,emp\);
    b 导入表 对象 demp 和emp
      imp scott/root file=/backup/table.dmp log=/backup/table2.log full=y
 或者
      imp  scott/root file=/backup/table.dmp log=/backup/table2.log tables=\(dept,emp\);

 总结:对于其他参数,比如缓存 buffer,压缩 compress 都没有配置,有兴趣可以参考文档进行配置
 对于读取参数文件,将会在expdp、impdp中进行介绍

 

补充:对于数据库的迁移,务必设置相同的字符集。或者兼容的字符集