因为原系统中数据库用的字符集是ZHS16GBK,但是ORALCE 11默认安装的字符集是AL32UTF8的字符集,所在导入导出数据后经常会提示字段的长度不够,是因为在UTF8的情况下一个汉字要占用2个字节,所以会报错,需要手工修改。
首先查看一下当前数据库的字符集是什么:
select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------------------------------
SIMPLIFIED CHINESE_CHINA.AL32UTF8
然后我们需要把数据关掉,再进入装载模式
C:\Users\Administrator>sqlplus /nolog
SQL*Plus: Release 11.2.0.1.0 Production on 星期五 7月 10 11:02:16 2020
Copyright (c) 1982, 2010, Oracle. All rights reserved.
SQL> connect / as sysdba
已连接。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount;
ORACLE 例程已经启动。
Total System Global Area 6847938560 bytes
Fixed Size 2188768 bytes
Variable Size 3573549600 bytes
Database Buffers 3254779904 bytes
Redo Buffers 17420288 bytes
数据库装载完毕。
SQL>
然后执行以下命令后再打开数据库
ALTER SESSION SET SQL_TRACE=TRUE;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE character set INTERNAL_USE ZHS16GBK;
ALTER SESSION SET SQL_TRACE=FALSE;
shutdown immediate;
startup;
再次检查下数据库当前的字符集,如果没有问题就可以啦,更改字符集后建议重新恢复一下数据库,防止乱码。