更改Oracle字符集:把字符集ZHS16GBK換成UTF8
SQL> select name,value$ from props$ where name like '%NLS%';
NAME VALUE$
------------------------------ ------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NAME 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_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.1.0
20 rows selected.
NLS_CHARACTERSET是資料庫字符集,NLS_NCHAR_CHARACTERSET是國家字符集
ORACLE中有兩大類字元型資料,VARCHAR2是按照資料庫字符集來儲存資料。
而NVARCHAR2是按照國家字符集儲存資料的。同樣,CHAR和NCHAR也一樣,一是資料庫字元符,一是國家字符集。
轉換字符集,資料庫應該在RESTRICTED模式下
首先要確定修改後的字符集是不是修改前的超集,如果不是可能出現相同的程式碼點對應不同的字元,出現亂碼的問題。
出現這個錯誤是 oracle 只支援從子集到超集的轉變
那有什麼方法可進行強制轉換呢?
該指令會跳過子集與超集的檢驗,當然強制轉換可能會造成資料的損壞,要謹慎使用!!
下面藉助eygle的帖子執行。
SQL> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1845493760 bytes
Fixed Size 2021568 bytes
Variable Size 452986688 bytes
Database Buffers 1375731712 bytes
Redo Buffers 14753792 bytes
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;
Database altered.
SQL> alter database character set INTERNAL_USE UTF8;
Database altered.
SQL>update props$ set VALUE$='UTF8' where NAME='NLS_NCHAR_CHARACTERSET'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31520497/viewspace-2156858/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle更改字符集Oracle
- oracle字符集的更改【轉】Oracle
- 修改Oracle字符集為ZHS16GBKOracle
- Linux下轉換字符集(UTF8轉換)Linux
- oracle字符集轉換(ZHS16GBK轉AL32UTF8)Oracle
- oracle資料庫的字符集更改Oracle資料庫
- oracle 字符集 AL32UTF8、UTF8Oracle
- US7ASCII字符集轉換為ZHS16GBKASCII
- Oracle 11g 修改字符集 為 ZHS16GBKOracle
- 測試用 oracle11g更改字符集AL32UTF8為ZHS16GBKOracle
- Oracle 字符集從GBK升級到Utf8Oracle
- 【轉】 oracle 字符集 AL32UTF8、UTF8Oracle
- mysql 字符集 utf8 for solaris 10MySql
- oracle字符集轉換分析工具Oracle
- mysql 字符集 latin1 轉換utf8血淚史 。MySql
- oracle11g更改資料庫字符集Oracle資料庫
- oracle9i 更改字符集步驟方法Oracle
- 字符集轉換
- Oracle字符集 ZHS16GBK VS WE8ISO8859P1Oracle
- linux 字符集和oracle 字符集LinuxOracle
- Oracle字符集和國家字符集Oracle
- MySQL字符集設定及字元轉換(latin1轉utf8)MySql字元
- 遷移資料時oracle字符集的轉換遷移資料時oracle字符集的轉換Oracle
- Oracle字符集Oracle
- Oracle 字符集Oracle
- 巧妙轉換ORACLE資料庫字符集Oracle資料庫
- oracle資料庫字符集的轉換Oracle資料庫
- MySQL 5.7 版本的 UTF8 字符集調研MySql
- ORACLE11G 字符集更改(這裡更改為AL32UTF8)Oracle
- 【字符集】論Oracle字符集“轉碼”過程Oracle
- Oracle 字符集修改Oracle
- 修改oracle字符集Oracle
- oracle修改字符集Oracle
- oracle字符集修改Oracle
- oracle 修改字符集Oracle
- ORACLE字符集(zt)Oracle
- 搞懂oracle字符集Oracle
- oracle 字符集 (轉)Oracle