1、修改server端字符集(不建議使用) 在oracle 8之前,可以用直接修改資料字典表props$來改變資料庫的字符集。但oracle8之後,至少有三張系統表記錄了資料庫字符集的資訊,只改props$表並不完全,可能引起嚴重的後果。正確的修改方法如下: $sqlplus /nolog SQL>conn / as sysdba;以上方法測試不行,用scott/tiger登陸sqlplus然後connect sys/sys as sysdba,然後輸入命令即可 若此時資料庫伺服器已啟動,則先執行SHUTDOWN IMMEDIATE命令關閉資料庫伺服器,然後執行以下命令: SQL>STARTUP MOUNT; SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; SQL>ALTER DATABASE OPEN; SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK; //跳過超子集檢測 SQL>ALTER DATABASE national CHARACTER SET INTERNAL ZHS16GBK;這一行不起作用,執行後出錯ORA-00933: SQL 命令未正確結束,不過執行上一行命令已經生效,其他文章裡未提到本行。 SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP
1、修改server端字符集(不建議使用) 在oracle 8之前,可以用直接修改資料字典表props$來改變資料庫的字符集。但oracle8之後,至少有三張系統表記錄了資料庫字符集的資訊,只改props$表並不完全,可能引起嚴重的後果。正確的修改方法如下: $sqlplus /nolog SQL>conn / as sysdba;以上方法測試不行,用scott/tiger登陸sqlplus然後connect sys/sys as sysdba,然後輸入命令即可 若此時資料庫伺服器已啟動,則先執行SHUTDOWN IMMEDIATE命令關閉資料庫伺服器,然後執行以下命令: SQL>STARTUP MOUNT; SQL>ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL>ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL>ALTER SYSTEM SET AQ_TM_PROCESSES=0; SQL>ALTER DATABASE OPEN; SQL>ALTER DATABASE CHARACTER SET INTERNAL_USE ZHS16GBK; //跳過超子集檢測 SQL>ALTER DATABASE national CHARACTER SET INTERNAL ZHS16GBK;這一行不起作用,執行後出錯ORA-00933: SQL 命令未正確結束,不過執行上一行命令已經生效,其他文章裡未提到本行。 SQL>SHUTDOWN IMMEDIATE; SQL>STARTUP