1. 程式人生 > >Oracle --- ORA-01461:僅能繫結要插入 LONG 列的 LONG 值

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; 

參考文章: