在使用ORACLE的過程中,會出現各種各樣的問題,各種各樣的錯誤,其中ORA-12899就是前段時間我在將數據導入到我本地機器上的時候一直出現的問題.不過還好已經解決了這個問題,現在分享一下,解決方案;出現ORA-12899,是字元集引起的,中文在UTF-8中占3個位元組,ZHS16GBK中占2個位元組 ...
在使用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 行。
到這裡我們的字元集就更改過來了