我们从生产数据库备份了dmp文件,在本地电脑上做了一个测试库。测试库环境是linux7+oracle11,数据导入成功后,执行之前在生产库编写的select语句,结果提示中文乱码。现在描述下导入和解决乱码的过程。
下载导入dmp文件的过程:
压缩:
tar -czvf 20211029040001.dmp.tar.gz 20211029040001.dmp
解压:
tar -xzvf file.tar.gz
tar参数:-c表示创建,-z表示gz压缩,-x表示解压。
ssh远程命令行传输:
scp 20211029040001.dmp.tar.gz root@172.26.5.6:/app/temp
导入dmp:
impdp “oracle数据库用户名”/“密码” dumpfile =20211210040001.dmp logfile=jlrcweb.log directory=DATA_PUMP_DIR table_exists_action=replace tables=cb20,cb21,cc20,cc21,SYS_USER_ACCOUNT,SYS_USER_ACCOUNT_EXT,AA10,AC0D,GA02,AAD_CELL_NEW,CC22,AAD_TYPE_NEW
导入后出现汉字显示错误:
查询字符集:
SQL> select userenv('language') from dual;
NLS_LANG AMERICAN_AMERICA.ZHS16GBK
[root@ ~]# echo $LANG
如果plsql developer乱码,需要修改本机(windows)的系统属性-高级-环境变量-系统变量
linux系统字符集只影响在linux系统sqlplus下查询语句显示的汉字
中文乱码需修改:vim /home/oracle/.bash_profile,这是linux下添加的字符集设置:
export LANG=C
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8