Oracle --- ORA-01461:仅能绑定要插入 LONG 列的 LONG 值

问题描述:

在项目中向Oracle插入数据时报错::ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值。

这是因为我的Oracle数据库字符集为32位编码的字符集,所能存储的汉字大大缩减。

 

解决办法:

执行“select userenv('language') from dual;”查看字符集,显示为AL32UTF8,将其修改为ZHS16GBK后问题解决。

 

Oracle 11g修改字符集为ZHS16GBK方法:

1. cmd下,cd到oracle数据库软件的服务器端 如:D:\oraclexe\app\oracle\product\11.2.0\server\bin

2. 输入set ORACLE_SID=你想进入的数据库的那个sid,我的为XE

3. 输入 sqlplus /nolog

将数据库启动到RESTRICTED模式下做字符集更改: 

sysdba角色登录Oracle:

conn /as sysdba

关闭数据库:

shutdown immediate; 

 以mount打来数据库:

 startup mount 

设置session :

ALTER SYSTEM ENABLE RESTRICTED SESSION;  
 
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 

ALTER SYSTEM SET AQ_TM_PROCESSES=0; 

开启数据库:

alter database open; 

修改数据库字符集为ZHS16GBK:

ALTER DATABASE CHARACTER SET ZHS16GBK; 

 这时候会报错:ORA-12712: new character set must be a superset of old character set ,提示我们新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:

跳过超集检查修改字符集:

ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 

查看字符集是否被修改:

select * from v$nls_parameters; 

 重启检查是否更改完成: 

shutdown immediate; 

startup

select * from v$nls_parameters; 

 

 

 

参考文章:

调试经验-ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章