Oracle中IMP导入数据时提示字符集不一致解决(2)

1   NLS_LANGUAGE          AMERICAN
2   NLS_TERRITORY        AMERICA
3   NLS_CURRENCY          $
4   NLS_ISO_CURRENCY   AMERICA
5   NLS_NUMERIC_CHARACTERS   .,
6   NLS_CHARACTERSET   ZHS16GBK --此处是显示字符集
7   NLS_CALENDAR   GREGORIAN
8   NLS_DATE_FORMAT   DD-MON-RR
9   NLS_DATE_LANGUAGE   AMERICAN
10   NLS_SORT   BINARY
11   NLS_TIME_FORMAT   HH.MI.SSXFF AM
12   NLS_TIMESTAMP_FORMAT   DD-MON-RR HH.MI.SSXFF AM
13   NLS_TIME_TZ_FORMAT   HH.MI.SSXFF AM TZR
14   NLS_TIMESTAMP_TZ_FORMAT   DD-MON-RR HH.MI.SSXFF AM TZR
15   NLS_DUAL_CURRENCY   $
16   NLS_COMP   BINARY
17   NLS_LENGTH_SEMANTICS   BYTE
18   NLS_NCHAR_CONV_EXCP   FALSE
19   NLS_NCHAR_CHARACTERSET   AL16UTF16
20   NLS_RDBMS_VERSION   11.2.0.4.0

方法2:在不知道dmp中字符集是什么,如何查看

1  查看dmp文件的中字符集

cat '/home/soft/scott.dmp' |od -x|head -1|awk '{print $2 $3}'|cut -c 3-6

结果为:0345

2  然后用以下SQL查出它对应的字符集:

SQL> select nls_charset_name(to_number('0354','xxxx')) from dual;
NLS_CHARSET_NAME(TO_NUMBER('0354','XXXX'
----------------------------------------
ZHS16GBK

如何修改字符集

修改字符集有几种方法

方法1、修改服务器端中的环境变量中的字符集设置(服务器端导入只要配置服务器端,客户端导入的话还要设置客户端字符集),注:此方法在服务器修改后再及时修改回去

方法2、修改数据库中字符集

方法3、修改dmp文件中字符集

本环境是在服务器端导入的,所以采用方法1

1、查询当前环境变量

[oracle@localhost.localdomain:/soft]$cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
   . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH

# Oracle Settings oracle
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
PS1="[`whoami`@`hostname`:"'$PWD]$'
alias sqlplus="rlwrap sqlplus"
alias rman="rlwrap rman"
alias alert="cd /oracle/app/oracle/diag/rdbms/db01/db01/trace"
alias lsnrctl="rlwrap lsnrctl"
alias adrci="rlwrap adrci"
export LANG=en_US
ORACLE_BASE=/oracle/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/11.2.0; export ORACLE_HOME
ORACLE_SID=db01; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM

PATH=/usr/sbin:$PATH; export PATH
PATH=$ORACLE_HOME/bin:$PATH; export PATH

LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
NLS_DATE_FORMAT="yyyy-mm-dd HH24:MI:SS"; export NLS_DATE_FORMAT
NLS_LANG=AMERICAN_AMERICA.ZHS16GBK;export NLS_LANG

if [ $USER = "oracle" ] || [ $USER = "grid" ]; then
        if [ $SHELL = "/bin/ksh" ]; then
        ulimit -p 16384
              ulimit -n 65536
        else
              ulimit -u 16384 -n 65536
        fi
        umask 022
fi

2、配置环境变量
[oracle@localhost.localdomain:/soft]$vi ~/.bash_profile

3、查询配置后信息

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c829acb42ea79837b97f97643c0d39a2.html