oracle字符集修改AL32UTF8改为ZHS16GBK

database

在使用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:Usersasus>sqlplus /nolog

SQL*Plus: Release 18.0.0.0.0- Production on 星期四 3月 1214:34:382020

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>ALTERDATABASEOPEN;

数据库已更改。

SQL>ALTERDATABASECHARACTERSET INTERNAL_USE ZHS16GBK;

数据库已更改。

SQL>ALTERDATABASENATIONALCHARACTERSET 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 行。

 

 到这里我们的字符集就更改过来了

 

以上是 oracle字符集修改AL32UTF8改为ZHS16GBK 的全部内容, 来源链接: utcz.com/z/532623.html

回到顶部