Oracle 修改字符集(AL32UTF8 轉換成UTF8字符集)


1.首先檢查環境

[oracle@vm10-84-32-2 ~]$ sqlplus  / as sysdba

SQL*Plus: Release 11.2.0.4.0 Production on Thu Jun 11 19:53:38 2020

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> spool 2017_12_08.txt

SQL> set line 4000


SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
--------------------------------------------------------------------------------------------------------
AMERICAN_AMERICA.AL32UTF8

 

SQL> select * from v$nls_parameters;

PARAMETER VALUE
-------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET AL32UTF8
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM

PARAMETER VALUE
-------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE

19 rows selected.

SQL>

 

執行下面命令修改

 

SQL> shutdown immediate

數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup mount
ORACLE 例程已經啟動。

Total System Global Area 3373858816 bytes
Fixed Size 2180424 bytes
Variable Size 1946159800 bytes
Database Buffers 1409286144 bytes
Redo Buffers 16232448 bytes
數據庫裝載完畢。
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  utf8;
alter database character set  utf8
*
ERROR at line 1:
ORA-12712: new character set must be a superset of old character set


SQL> alter database character set internal_use utf8;

Database altered.

SQL> alter database character set internal_convert utf8;

Database altered.

SQL> alter database character set internal_use utf8;

Database altered.

上面就是執行的時候容易遇到的問題,

SQL> alter database character set  utf8;

Database altered.

 

SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> startup
ORACLE 例程已經啟動。

Total System Global Area 3373858816 bytes
Fixed Size                  2180424 bytes
Variable Size            1946159800 bytes
Database Buffers         1409286144 bytes
Redo Buffers               16232448 bytes
數據庫裝載完畢。
數據庫已經打開。

SQL> select userenv('language') from dual;

 
         

USERENV('LANGUAGE')
--------------------------------------------------------------------------------------------------------
AMERICAN_AMERICA.UTF8

 

如何將Oracle的字符集由AMERICAN_AMERICA.AL32UTF8修改為SIMPLIFIED CHINESE_CHINA.AL32UTF8

參考:

版權聲明:本文為CSDN博主「長林攻城獅」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/shao_yc/article/details/104524240

 

一直以為將Oracle的AMERICAN_AMERICA.AL32UTF8修改為SIMPLIFIED CHINESE_CHINA.AL32UTF8是Oracle客戶端的事情,其實搞錯了,我們該做的應該是去修改服務器端的環境變量的語言。

查看當前登錄用戶環境變量的語言

select userenv('language') from dual;

SQL> select userenv('language') from dual;
 
         

USERENV('LANGUAGE')
--------------------------------------------------------------------------------------------------------
AMERICAN_AMERICA.UTF8

 
         

SQL> exit

退出Oracle客戶端,修改環境變量

vi .bash_profile

[oracle@vm10-84-32-2 ~]$ whoami
oracle
[oracle@vm10-84-32-2 ~]$ vi .bash_profile
添加以下語句

#export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
export NLS_LANG="SIMPLIFIED CHINESE_CHINA".AL32UTF8

輸入命令使配置生效

source .bash_profile

重新登錄Oracle客戶端查看

select userenv('language') from dual;

[oracle@vm10-84-32-2 ~]$ sqlplus / as sysdba 

SQL*Plus: Release 11.2.0.4.0 Production on 星期四 6月 11 20:24:54 2020

Copyright (c) 1982, 2013, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

SQL> select userenv('language') from dual;

USERENV('LANGUAGE')
--------------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.UTF8

SQL> 

 

需要補充說明的是:

UTF8和AL32UTF8為不同的字符集,在oracle的11.2版本中,UTF8已經不是推薦的一員了。詳細說明可查看:https://blog.csdn.net/shao_yc/article/details/104524846



參考:

https://blog.csdn.net/shiyu1157758655/article/details/78748283

https://blog.csdn.net/u010457406/article/details/75646547

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM