A、oracle server 端 字符集查询
    select userenv(‘language’) from dual
    B、查询oracle client端的字符集
    在windows平台下,就是注册表里面相应OracleHome的NLS_LANG。还可以在dos窗口里面自己设置,比如:   set nls_lang=AMERICAN_AMERICA.ZHS16GBK
    在unix平台下,就是环境变量NLS_LANG。
    $echo $NLS_LANG
    AMERICAN_AMERICA.ZHS16GBK

    如果检查的结果发现server端与client端字符集不一致,请统一修改为同server端相同的字符集。
    C、server端字符集修改
    更改字符集步骤方法(WE8ISO8859P1 —> ZHS16GBK)
    按照下列语句在cdm窗口依次执行:
    将数据库启动到RESTRICTED(有权限)的模式下做字符集更改:
    SQL> sqlplus user/password as sysdba
    Connected.
    SQL> shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup mount
    ORACLE instance started.
    Total System Global Area 236000356 bytes
    Fixed Size 451684 bytes
    Variable Size 201326592 bytes
    Database Buffers 33554432 bytes
    Redo Buffers 667648 bytes
    Database mounted.
    SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;
    System altered.
    SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
    System altered.
    SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;
    System altered.
    SQL> alter database open;
    Database altered.
    SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;
    ALTER DATABASE CHARACTER SET ZHS16GBK

    ERROR at line 1:
    ORA-12712: new character set must be a superset of old character set
    提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:
    SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
    Database altered.
    SQL>** select
    from v$nls_parameters;

    19 rows selected.
    重启检查是否更改完成:
    SQL>
    shutdown immediate;
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL>
    startup
    ORACLE instance started.
    Total System Global Area 236000356 bytes
    Fixed Size 451684 bytes
    Variable Size 201326592 bytes
    Database Buffers 33554432 bytes
    Redo Buffers 667648 bytes
    Database mounted.
    Database opened.
    SQL>
    select from v$nls_parameters; *
    NLS_CHARACTERSET 是否已经修改为ZHS16GBK
    19 rows selected.