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

imp和emp命令

========exp导出表的dmp文件==============
1、表数据不大的时候,可一次导出多张表
exp username/password file=/home/**/filename.dmp tables=(tablename1,tablename2,...)

如:
exp username/password file=/home/oracle/20110909_other1.dmp tables=(tablename1,tablename2,...)

2、表的数据比较大的时候,可以添加查询条件:query
exp username/password file=/home/**/filename.dmp tables=(tablename) query=\"where column1 in \(**,**,**\) and column2 \>= to_Date \(\'2011-08-01 00:00:00\' ,\'yyyy-MM-DD HH24:MI:SS\'\) and column2 \<to_date\(\'2011-09-01 00:00:00\' ,\'yyyy-MM-DD HH24:MI:SS\'\) \"?

如:
exp username/password file=/home/oracle/201108_101_PortRate.dmp tables=(T_PORTRATE) query=\"where subregionid in \(102,103,104,105,106,108,109,110,111,112,114,1135216\) and CREATETIME \> =to_date\(\'2011-08-01 00:00:00\' ,\'yyyy-MM-DD HH24:MI:SS\'\) and CREATETIME \<to_date\(\'2011-09-01 00:00:00\' ,\'yyyy-MM-DD HH24:MI:SS\'\) \"

exp中的file后面的路径和文件名,都是指的在exp那台机器上的路径和文件名。

?

=======imp导入表的dmp文件=============================

imp username/password file ='/home/***/***/filename.dmp' full=y indexes=y buffer=65536

当被导入的数据库的表中已经存在一部分数据,而我们imp的dmp文件中的数据可能是另外一些查询条件emp出来的,
可以不覆盖原表中的数据,直接继续导入,加上以下参数。
ignore=y,即告诉IMP如果当前表存在就不创建表结构而直接导入新的数据。


imp username/password file ='/home/***/***/filename.dmp' full=y indexes=y buffer=65536 ignore=y

?

?

?

=========exp过程中的错误:EXP-00091===========

原因:EXP-00091问题是exp工具所在的环境变量中的NLS_LANG与DB中的NLS_CHARACTERSET不一致导致的

解决方法:在exp的机器上,

1、[oracle@www oracle]$echo $NLS_LANG

AMERICAN

2、sqlplus进入SQL>环境查看oracle的NLS_CHARACTERSET是神马?

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK

?

虽然都是AMERICAN,但是还是不一样的。所以修改当前机器环境变量NLS_LANG

3、、[oracle@www oracle]$export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

也可以再次echo $NLS_LANG确认下。

4、再次exp后,EXP-00091?错误消失。

导出环境oracle版本为:oracle9i。

?

?

?


=======(暂时的工作中)exp和imp流程:====================
现网导出,并导入本地测试库:
1、从241ssh到现网数据库*.*.*.*(一个IP),exp出现网表
如果文件较大,最好打包,
压缩:tar -zcvf??? *.tar.gz??? *.dmp
2、ftp登录241的内网地址:*.*.26.100将现网dmp文件或者压缩后的文件put到*.*.26.100上
3、从winScp(bbass)上将该文件拉到本地电脑
4、登录需要导入的数据库的服务器:192.168.8.49,用ssh将本地的dmp文件或者压缩后的文件上传到192.168.8.49
解压:
tar -zxvf??? *.tar.gz??? *.dmp
后,执行imp语句。

?