2011年1月25日 星期二

修改 Oracle XE 的CHARACTERSET

從AMD64的Oracle 9i要把ddsysV2資料轉入到acoldev oracle xe上,有些資料會出現欄位長度不夠的狀況
發現是原資料庫的 NLS_CHARACTERSET=ZHT16BIG5,但是Oracle XE上的是AL32UTF8,前者會把一個中文字視為2個字元集,後者則為3個字元集,所以長度就會不夠了,以下為將Oracle XE上的AL32UTF8改為ZHT16BIG5的方法:


以 sysdba 角色進入 sqlplus 之後執行以下

SHUTDOWN IMMEDIATE;
STARTUP MOUNT;
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 ZHT16BIG5;
-- >>會出現Error: ORA-12712: new character set must be a superset of old character set
-- 改為
ALTER DATABASE CHARACTER SET INTERNAL_USE ZHT16BIG5;
ALTER SESSION SET SQL_TRACE=FALSE;

查看Oracle 參數
select * from v$NLS_PARAMETERS

沒有留言: