如何解决Linux Oracle中文字符乱码

1)查看数据库字符集


03:12:58 SQL> select userenv('language') from dual;


USERENV('LANGUAGE')


----------------------------------------------------


AMERICAN_AMERICA.ZHS16GBK




2)编辑linux 的NLS_LANG变量


03:13:20 SQL> !


[oracle@oraserv ~]$ pwd


/home/oracle


[oracle@oraserv ~]$ ls -a


.                      cr_dbprod.sql  .gconfd            .ICEauthority  .rman_history     .Xauthority


cr_db.sql      .gnome             logmnr         sel.sql           .xsession-errors


.bash_history          cr_dict.sql    .gnome2            .metacity      sql.log           中国


.bash_logout           Desktop        .gnome2_private    .mozilla       sqlnet.log


.bash_profile          .dmrc          .gstreamer-0.10    .nautilus      .sqlplus_history


.bashrc                .eggcups       .gtkrc-1.2-gnome2  ora.sh         s.sh


close_bak_command.sql  ftp.msg        hot_bak_cmd.sql    ora.txt        start.sh


cold_bak.sql           .gconf         hot_bak.sql        .redhat        .Trash


[oracle@oraserv ~]$ vi .bashrc


# .bashrc


# Source global definitions


if [ -f /etc/bashrc ]; then


. /etc/bashrc


fi


# User specific aliases and functions


export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK


".bashrc" 10L, 167C written




3)注销oracle用户,重新登录


[oracle@oraserv ~]$ su - oracle


Password: ******


[oracle@oraserv ~]$ env |grep LANG


NLS_LANG=AMERICAN_AMERICA.ZHS16GBK


LANG=en_US.UTF-8


[oracle@oraserv ~]$ export ORACLE_SID=prod


[oracle@oraserv ~]$ env |grep LANG


NLS_LANG=AMERICAN_AMERICA.ZHS16GBK


LANG=en_US.UTF-8


[oracle@oraserv ~]$ !sql


sqlplus '/as sysdba';


SQL*Plus: Release 10.2.0.1.0 - Production on Fri Apr 8 03:15:59 2011


Copyright (c) 1982, 2005, Oracle.  All rights reserved.


Connected to:


Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production


With the Partitioning, OLAP and Data Mining options


03:16:02 SQL> conn scott/tiger


Connected.


03:16:08 SQL> select * from tab;


TNAME                          TABTYPE  CLUSTERID


------------------------------ ------- ----------


DEPT                           TABLE


EMP                            TABLE


BONUS                          TABLE


SALGRADE                       TABLE


03:16:16 SQL> update dept set dname='财务' where deptno=10;


1 row updated.


03:16:47 SQL> select * from dept;


DEPTNO DNAME          LOC


---------- -------------- -------------


10 财务   NEW YORK


20 RESEARCH       DALLAS


30 SALES          CHICAGO


40 OPERATIONS     BOSTON


注意:解决问题的原则,客户端的字符集和oracle 数据库的字符集保持一致。



oracle视频教程请关注:http://u.youku.com/user_video/id_UMzAzMjkxMjE2.html

你可能感兴趣的:(oracle,linux,linux,Oracle中文字符乱码)