一聚教程网:一个值得你收藏的教程网站

热门教程

oracle中 exp/imp导出导入数据库例子

时间:2022-06-29 09:52:14 编辑:袖梨 来源:一聚教程网


导出前先查看系统的NLS_LANG设置:

echo $NLS_LANG
AMERICAN_AMERICA.ZHS16CGB231280


select userenv('language') from dual;
AMERICAN_AMERICA.ZHS16GBK

这两个值不同会报错:

EXP-00091: Exporting questionable statistics

问题产生的原因:
linux下用户环境变量语言集和oracle数据库中的环境变量语言集不同。
解决办法:
将linux下用户环境变量语言集和数据库设置成一样。

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

一、导出
有两种使用exp的方式:
1、交互式
执行exp

Username:  //用户名
Password:  //密码
Enter array fetch buffer size: 4096 >  //导出缓冲区大小
Export file: expdat.dmp >  //导出文件名称
(2)U(sers), or (3)T(ables): (2)U >  //导出的单位是用户还是表
Export grants (yes/no): yes >  //是否导出授权
Export table data (yes/no): yes >  //是否导出表数据
Compress extents (yes/no): yes > no  //是否压缩,这里不压缩

后面就刷刷的开始导出了。

2、一条命令方式

exp userid=nlcmp/nlcmp@nlcmp file=./20150305nlcmp.dmp log=./1.txt

如果加了full=y会把一些系统表也导出来。

二、导入
同样设置环境变量NLS_LANG和导出客户端的字符集一样。

export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

使用imp命令导入:

1、交互式

执行imp

Username:  //用户名
Password:  //密码
Import file: expdat.dmp >  //导入文件位置
Enter insert buffer size (minimum is 8192) 30720>  //导入缓冲区大小,默认
List contents of import file only (yes/no): no >  //是否仅仅列出数据不导入,默认
Ignore create error due to object existence (yes/no): no >  //如果对象已经存在,是否忽略创建的错误,默认
Import grants (yes/no): yes >  //是否导入权限,默认
Import table data (yes/no): yes >  //是否导入表数据,默认
Import entire export file (yes/no): no >  //是否导入整个文件,这里选yes

随后就刷刷的开始导入数据。

2、一条命令方式

imp userid=wangyi/wangyi@orcl full=y file=/tmp/20150305nlcmp.dmp log=/tmp/imp.txt

3、如果导入时提示
1)

IMP-00013: only a DBA can import a file exported by another DBA
IMP-00000: Import terminated unsuccessfully

需要赋予imp_full_database权限:

grant imp_full_database to wangyi;

2)

Warning: the objects were exported by NLCMP, not by you

表示导出的用户和导入的用户不一致,可能用户权限也不一样,所以有警告信息,最好用户要一样。

3)

import done in ZHS16GBK character set and AL16UTF16 NCHAR character set
export server uses UTF8 NCHAR character set (possible ncharset conversion)

是因为导出端国家字符集为UTF8,导入端国家字符集是AL16UTF16,不一样,oracle会自己做转换。

三、导入导出原则

1、在导出时,oracle会把数据从数据库字符集转换成客户端字符集,如果两者不一样,oracle会做数据转换。所以导出时exp会检查导出数据库字符集和客户端字符集是否一致,不一致会有警告信息。
2、在导入时,oracle将导入数据的字符集先转换为导入客户端字符集,然后存入数据库时再转换成数据库字符集。

3、小结

导出和导入的规则是:
导出数据库字符集和导入数据库字符集,必须一样或者是子集和超集的关系。
导出客户端字符集和导入客户端字符集强制设置为和当前数据库字符集一致。

热门栏目