US7ASCII ⊂ ZHS16GBK:子集向超集轉換安全,無數據損失UTF8 基於 Unicode,雙字節存儲,空間佔用大但覆蓋最全Oracle 官方僅支援子集 → 超集轉換。錯誤修改 Server 端字符集可能導致不可預測後果,嚴重影響資料庫穩定。**除非萬不得已,不建議修改 Server 端字符集。**
SQLPLUS /NOLOG
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 ZHS16GBK;
ALTER DATABASE NATIONAL CHARACTER SET ZHS16GBK;
SHUTDOWN IMMEDIATE
STARTUP
錯誤:Cannot ALTER DATABASE NATIONAL CHARACTER SET when NCLOB data exists
方案:使用 INTERNAL_USE 關鍵字繞過檢查
SHUTDOWN IMMEDIATE
STARTUP MOUNT EXCLUSIVE
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE NATIONAL CHARACTER SET INTERNAL_USE UTF8;
SHUTDOWN IMMEDIATE
STARTUP
此法較 RECREATE 簡單,適用於存在 NCLOB 數據的場景。
V$NLS_PARAMETERS 對比截圖