oracle安装成功后,更改字符集

看了网上的文章,乱码有以下几种可能 
1. 操作系统的字符集 
2.oracle server的字符集 
3.客户端的字符集 

1. 查看oracle的字符集 
  

Java代码    收藏代码
  1. select userenv('language') from dual  



2.在Ubuntu中.bashrc 中加入下边的话: 
   export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK(改掉操作系统的字符集) 
Oracle  NLS_LANG Oracle 
3.

引用
如果oracle 与操作系统的字符集一致,查询时,就直接从oracle中把数据读出来,直接返回给用户,插入时,直接插入到数据库。  
  但是如果不一致的话,会将数据库中的数据转换成操作系统的字符集,返回给用户。插入时一样,就会将数据先做个转换,然后在插入到数据库。


  网上的人是这么说的,但具体的我也没试。我有时间试一下,看是不是他所说的那样。 

4.修改Oracle的编码和操作系统的一样。(参考别人的) 

登陆用dba 
SQL> conn sys/sys as sysdba; 

停掉数据库 
SQL>shutdown immediate; 


启动数据库到mount状态下 
SQL> STARTUP MOUNT; 

Java代码    收藏代码
  1. ORACLE instance started.  
  2. Total System Global Area   76619308 bytes  
  3. Fixed Size                   454188 bytes  
  4. Variable Size              58720256 bytes  
  5. Database Buffers           16777216 bytes  
  6. Redo Buffers                 667648 bytes  
  7. Database mounted.  



SQL> ALTER SESSION SET SQL_TRACE=TRUE; 
Session altered. 


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; 

设置字符集 
SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; 
先把数据库中的有中文乱码的清空了。 
然后在执行。这是有可能报错 
执行这个ALTER DATABASE character set INTERNAL_USE ZHS16GBK 
跳过字符集检查 

关闭数据库 
SQL> Shutdown immediate; 

重启 
SQL> startup; 


做完之后在sqlplus里边试一下,应该就好了,但是在pl/sql里边一看还是乱码, 
最后,在pl/sql里边创建个表,然后在插入中文,查看一下,应该是对的。 

这样就解决了乱码问题。 中间还有许多的问题,自己在慢慢研究吧。 

 

 

============================================================

http://weiruan85.iteye.com/blog/281470

你可能感兴趣的:(oracle)