修改Oracle字符集(转贴)

http://hi.baidu.com/quijote/blog/item/7ed20f1732052b0f4a90a7a1.html

oracle 11g 修改字符集

2010-09-27 17:39

C、server端字符集修改 


SQL>conn / as sysdba; 

若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令: 

SQL>STARTUP MOUNT; 

SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; 

SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 

SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; 

SQL>ALTER  DATABASE OPEN; 

SQL>ALTER DATABASE  CHARACTER SET ZHS16GBK

   

提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改: 

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 


SQL> select * from v$nls_parameters; 


SQL>SHUTDOWN IMMEDIATE; 

SQL>STARTUP 

A、oracle server端字符集查询 

select userenv(‘language’) from dual 

其中NLS_CHARACTERSET 为server端字符集 

NLS_LANGUAGE 为 server端字符显示形式 

B、查询oracle client端的字符集 

$echo $NLS_LANG 

如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。 

oracle 11g 修改字符集
2010-09-27 17:39

C、server端字符集修改 


SQL>conn / as sysdba; 

若此时数据库服务器已启动,则先执行SHUTDOWN IMMEDIATE命令关闭数据库服务器,然后执行以下命令: 

SQL>STARTUP MOUNT; 

SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; 

SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 

SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; 

SQL>ALTER  DATABASE OPEN; 

SQL>ALTER DATABASE  CHARACTER SET ZHS16GBK

   

提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改: 

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 


SQL> select * from v$nls_parameters; 


SQL>SHUTDOWN IMMEDIATE; 

SQL>STARTUP 

A、oracle server端字符集查询 

select userenv(‘language’) from dual 

其中NLS_CHARACTERSET 为server端字符集 

NLS_LANGUAGE 为 server端字符显示形式 

B、查询oracle client端的字符集 

$echo $NLS_LANG 

如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。 

 

posted @ 2011-06-17 14:37  daweibalaomao  阅读(210)  评论(0编辑  收藏  举报