oracle 字符集修改 AL32UTF8 改爲 ZHS16GBK

在使用ORACLE的過程中,會出現各種各樣的問題,各種各樣的錯誤,其中ORA-12899就是前段時間我在將數據導入到我本地機器上的時候一直出現的問題.不過還好已經解決了這個問題,現在分享一下,解決方案;
出現ORA-12899,是字符集引起的,中文在UTF-8中佔3個字節,ZHS16GBK中佔2個字節,而源dmp文件字符集是ZHS16GBK庫裏倒出來的數據,現在要導入到目標字符集爲UTF-8的庫裏,所以會出現ORA-12899
其實只要修改一下ORACLE 的字符集就可以很好的解決這個問題;

Microsoft Windows [版本 10.0.18362.10024]
(c) 2019 Microsoft Corporation。保留所有權利。

C:\Users\asus>sqlplus /nolog

SQL*Plus: Release 18.0.0.0.0 - Production on 星期四 3月 12 14:34:38 2020
Version 18.4.0.0.0

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

SQL> conn / as sysdba
已連接。
SQL> select userenv('language') from dual;
 
USERENV('LANGUAGE')
--------------------------------------------------------------------------------
 
SIMPLIFIED CHINESE_CHINA.AL32UTF8
 
SQL> shutdown immediate
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> STARTUP MOUNT EXCLUSIVE;
ORACLE 例程已經啓動。
 
Total System Global Area 2533359616 bytes
Fixed Size                  3835256 bytes
Variable Size             738200200 bytes
Database Buffers         1778384896 bytes
Redo Buffers               12939264 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 INTERNAL_USE ZHS16GBK;
 
數據庫已更改。
 
SQL> ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE AL16UTF16;
 
數據庫已更改。
 
SQL> SHUTDOWN IMMEDIATE
數據庫已經關閉。
已經卸載數據庫。
ORACLE 例程已經關閉。
SQL> STARTUP
ORACLE 例程已經啓動。
 
Total System Global Area 2533359616 bytes
Fixed Size                  3835256 bytes
Variable Size             738200200 bytes
Database Buffers         1778384896 bytes
Redo Buffers               12939264 bytes
數據庫裝載完畢。
數據庫已經打開。
SQL> select userenv('language') from dual;
 
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
 
SQL> col parameter format a32;
SQL> col value format a32;
SQL> select * from nls_database_parameters;
 
PARAMETER                        VALUE
-------------------------------- --------------------------------
NLS_RDBMS_VERSION                12.1.0.2.0
NLS_NCHAR_CONV_EXCP              FALSE
NLS_LENGTH_SEMANTICS             BYTE
NLS_COMP                         BINARY
NLS_DUAL_CURRENCY                $
NLS_TIMESTAMP_TZ_FORMAT          DD-MON-RR HH.MI.SSXFF AM TZR
NLS_TIME_TZ_FORMAT               HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_FORMAT             DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_FORMAT                  HH.MI.SSXFF AM
NLS_SORT                         BINARY
NLS_DATE_LANGUAGE                AMERICAN
 
PARAMETER                        VALUE
-------------------------------- --------------------------------
NLS_DATE_FORMAT                  DD-MON-RR
NLS_CALENDAR                     GREGORIAN
NLS_NUMERIC_CHARACTERS           .,
NLS_NCHAR_CHARACTERSET           AL16UTF16
NLS_CHARACTERSET                 ZHS16GBK
NLS_ISO_CURRENCY                 AMERICA
NLS_CURRENCY                     $
NLS_TERRITORY                    AMERICA
NLS_LANGUAGE                     AMERICAN
 
已選擇 20 行。
 

 

 到這裏我們的字符集就更改過來了

 

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