oracle exp导出空库,oracle exp/imp导出导入数据库

导出前先查看系统的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会自己做转换。

三、导入导出原则

e40005c6b7352772ba113ea66e9a2f82.png

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

2、在导入时,oracle将导入数据的字符集先转换为导入客户端字符集,然后存入数据库时再转换成数据库字符集。

3、小结

导出和导入的规则是:

导出数据库字符集和导入数据库字符集,必须一样或者是子集和超集的关系。

导出客户端字符集和导入客户端字符集强制设置为和当前数据库字符集一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值