在使用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 行。
到這裏我們的字符集就更改過來了