Oracle 字符集修改

DBA_每日記發表於2019-10-23

Oracle 字符集修改

問題背景

有些客戶在安裝oracle的時候,由於沒有設定正確的字符集,導致一些功能不能正常使用,並在備份資料庫的時候報錯。


解決辦法:


1> 檢視當前資料庫字符集

SQL> select userenv('LANGUAGE') from dual;

USERENV('LANGUAGE')

AMERICAN_AMERICA.WE8ISO8859P1


2> 正常關閉資料庫

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

3> 將資料庫啟動到mount狀態

SQL> startup mount 

ORACLE instance started.

Total System Global Area 1728053248 bytes

Fixed Size                  1219832 bytes

Variable Size             402653960 bytes

Database Buffers         1308622848 bytes

Redo Buffers               15556608 bytes

Database mounted.


4> 將資料庫設定為受限模式

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; 

System altered.

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

System altered.

補充: JOB_QUEUE_PROCESSES

只用於複製環境。它指定每個例程的 SNP 作業佇列程式的數量 (SNP0, ... SNP9, SNPA, ... SNPZ)。要自動更新錶快照或執行由 DBMS_JOB 建立的請求, 請將該引數設定為 1 或更大的值。 

值範圍: 0 到 36 

預設值: 10(10g是10,9i是1,這個值可以先show parameter JOB_QUEUE_PROCESSES來檢視。)

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; 

System altered.

補充: AQ_TM_PROCESSES

如果大於零, 就會啟用對佇列訊息的時間監視。該時間值可用於指定訊息的延遲和失效屬性 (用於應用程式的開發)。 

值範圍: 0 - 10 

預設值: 0


5> 開啟資料庫

SQL> alter database open;

Database altered.

SQL> alter database character set INTERNAL_USE ZHS16GBK;

Database altered.

或者修改為AL32UTF8

SQL> ALTER DATABASE character set INTERNAL_USE AL32UTF8;  

Database altered.


6> 關閉資料庫用以驗證

SQL> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> select userenv('LANGUAGE') from dual;

USERENV('LANGUAGE')

AMERICAN_AMERICA.ZHS16GBK

此時資料庫字符集已經為修改後的狀態

startup;

注意:由於之前你設定了restricted限制了其他使用者的登入,可能導致其他客戶不能通過pl/sql來登入

影響正常使用,

需要調整回來

alter system disable restricted session ;     




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69950231/viewspace-2661153/,如需轉載,請註明出處,否則將追究法律責任。

相關文章