在oracle 8之前,可以通過直接修改數據字典表props$來更改數據庫的字符集。但是oracle8以後,至少有三個系統表記錄了數據庫字符集的信息,只修改props$ table是不完整的,可能會造成嚴重的後果。正確的修改方法如下:
$sqlplus /nolog
SQL & gtconn/as SYSDBA;
以上方法無法測試,只需用scott/tiger登錄sqlplus然後以sysdba身份連接sys/sys,然後輸入命令即可。
如果此時數據庫服務器已啟動,首先執行SHUTDOWN IMMEDIATE命令關閉數據庫服務器,然後執行以下命令:
SQL & gt啟動掛載;
SQL & gtALTER SYSTEM啟用受限會話;
SQL & gtALTER SYSTEM SET JOB _ QUEUE _ PROCESSES = 0;
SQL & gt請更改系統設置AQ進程= 0;
SQL & gt打開數據庫;
SQL & gt更改數據庫字符集INTERNAL _ USE zhs 16 gbk;//跳過超集檢測
SQL & gt更改數據庫國家字符集內部zhs 16 gbk;
這行不行,執行後有錯誤。ORA-00933:SQL命令沒有正確結束,但是前壹行的執行已經生效,其他文章也沒有提到這壹行。
SQL & gt立即關閉;
SQL & gt啟動