Oracle关于数据表中字段长度的问题

今天在向oracle数据库导入数据的时候,发现提示字段过长,但是检查了半天,也没有发现过长的字段,后来百度了一波才知道oracle对于不同的字符编码,数据的字节数是不一样的。

使用sql

select * from nls_database_parameters

查询数据库的字符编码会出现以下两个字段

NLS_CHARACTERSET、NLS_NCHAR_CHARACTERSET

NLS_CHARACTERSET是数据库字符集
NLS_NCHAR_CHARACTERSET是国家字符集

我的数据库的使用的Varchar2,它默认使用的是NLS_CHARACTERSET的字符编码------AL32UTF8,这样数据导入占3个字节,因此我将它改为了ZHS16GBK

具体的过程如下:

sqlplus username/password
conn /as sysdba
shutdown immediate
startup mount
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
shutdown immediate;
startup;

这样设置完后重新查询,会发现字符编码已经改变了。

你可能感兴趣的:(随笔)