更改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字符集為ZHS16GBKOracle
- Oracle 字符集從GBK升級到Utf8Oracle
- Oracle 字符集修改Oracle
- MySQL 5.7 版本的 UTF8 字符集調研MySql
- Oracle如何使用spool匯出utf8字符集的文字檔案Oracle
- 修改Oracle資料庫字符集(zt)Oracle資料庫
- 字符集
- 「Oracle」資料庫字符集編碼修改Oracle資料庫
- PYTHON3 cx-Oracle 字符集 轉換錯誤的解決方案PythonOracle
- Tomcat字符集Tomcat
- MySQL字符集MySql
- Oracle Linux 7設定中文字符集OracleLinux
- 深入理解Emoji(一) —— 字符集,字符集編碼
- 38、字符集_2(匯出匯入指定字符集)
- VS2013 由Unicode字符集切換為多位元組字符集後編譯報錯Unicode編譯
- 修改sqlserver字符集SQLServer
- 更新Linux字符集Linux
- 批次修改欄位字符集和表表字符集,sql生成SQL
- Oracle 12.2 新特性 | PDB不同字符集變更深入解析Oracle
- ZHS16GBK轉換成AL32UTF8
- 4.2.1.4 選擇字符集
- mysql字符集說明MySql
- 字符集與編碼
- 遷移ORACLE資料到MogDB/openGauss時的字符集問題Oracle
- mysql字符集和字元排序MySql字元排序
- CentOS7.5修改字符集CentOS
- weblogic 啟動指定字符集Web
- 字符集編碼(三):UnicodeUnicode
- 字符集編碼(四):UTF
- Oracle 12C 修改字符集為AL32UTF8研究Oracle
- iOS CharacterSet(字符集)簡單理解iOS
- 資料型別和字符集資料型別
- 教你玩轉Eclipse—修改字符集Eclipse
- 字符集和比較規則
- MySQL 不同版本預設字符集MySql
- 2.2.2 關於字符集選擇
- windows核心程式設計--字符集Windows程式設計
- 字符集編碼(上):Unicode 之前Unicode