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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章