Linux 下修改Oracle 的字符集

来源:互联网 发布:linux批量重命名 编辑:程序博客网 时间:2024/06/05 21:55

参考:
Linux 下修改Oracle 的字符集:WE8ISO8859P1 修改为 ZHS16GBK
问题描述:在Linux下静默安装的Oracle,默认的字符集没有修改,使用的是WE8ISO8859P1,imp导入后的数据中文全显示为???。问题出在oracle服务端的字符集不支持中文导致。
可以通过:
select userenv(‘language’) from dual; 命令可以查看服务端的使用的字符集。
或者select * from VNLSPARAMETERS;selectfromSYS.PROPS;

网上很多人说,oracle服务端安装好了之后字符集是不可以更改的,实践证明是可以修改的,至少oracle8以上的版本都是可以修改的。
我的解决步骤:
1、ssh登录,切换到oracle用户
切换用户命令:su -oracle
之后用sqlplus登录oracle,命令:
:sqlplus /nolog
:connect /as sysdba
这样就登录了。
2、更改字符集
首先 sqlplus登录后,关闭oracle数据库
1.shutdown immediate ;
2.startup mount ;
3.alter system enable restricted session ;
4.alter system set JOB_QUEUE_PROCESSES=0;
5.alter system set AQ_TM_PROCESSES=0;
6.alter database open ;
7. alter database character set INTERNAL_USE ZHS16GBK;
8.shutdown immediate ;
9.startup ;
注:一开始我按照上面的步骤没有解决,因为在第7步的时候有的资料提示使用alter database character set ZHS16GBK;我试过,这个命令不行,我使用的是alter database character set INTERNAL_USE ZHS16GBK; 提示修改成功。同样,如果在startup mount 下命令提示error的话,可以尝试在startup restrict下运行第七步的命令。
以下是我的调试命令记录,大家可以参考一下,那些提示错误的命令都是执行失败的,可以不必管。

SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> startup mount;ORACLE instance started.Total System Global Area 6680915968 bytesFixed Size                  2213936 bytesVariable Size            3892316112 bytesDatabase Buffers         2751463424 bytesRedo Buffers               34922496 bytesDatabase 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 INTERNAL_USE ZHS16GBK;Database altered.SQL> shutdown immediate;Database closed.Database dismounted.ORACLE instance shut down.SQL> SQL> startupORACLE instance started.Total System Global Area 6680915968 bytesFixed Size                  2213936 bytesVariable Size            3892316112 bytesDatabase Buffers         2751463424 bytesRedo Buffers               34922496 bytesDatabase mounted.Database opened.SQL> quitDisconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options[oracle@itzc-pms3 ~]$

补充:
(1).数据库服务器字符集
select * from nls_database_parameters
来源于props$,是表示数据库的字符集。

(2).客户端字符集环境
select * from nls_instance_parameters
其来源于v$parameter,表示客户端的字符集的设置,可能是参数文件,环境变量或者是注册表

(3).会话字符集环境
select * from nls_session_parameters
来源于v$nls_parameters,表示会话自己的设置,可能是会话的环境变量或者是alter session完成,如果会话没有特殊的设置,将与nls_instance_parameters一致。

原创粉丝点击