修改Oracle數據庫字符集

1.Oracle server端的字符集查詢

select userenv('language') from dual;複製代碼

其中NLS_CHARACTERSET 爲server端字符集 NLS_LANGUAGE 爲 server端字符顯示形式  
數據庫

2.server端字符集修改bash

SQL> conn /as sysdba 
Connected. 
SQL> shutdown immediate; 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL> startup mount 
ORACLE instance started. 
Total System Global Area  236000356 bytes 
Fixed Size                   451684 bytes 
Variable Size             201326592 bytes 
Database Buffers           33554432 bytes 
Redo Buffers                 667648 bytes 
Database mounted. 

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; 
System altered. 

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; 
System altered. 

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; 
System altered. 

SQL> alter database open; 
Database altered. 

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK; 
ALTER DATABASE CHARACTER SET ZHS16GBK 
* 
ERROR at line 1: 
ORA-12712: new character set must be a superset of old character set 
複製代碼

提示咱們的字符集:新字符集必須爲舊字符集的超集,這時咱們能夠跳過超集的檢查作更改: 
ui

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK; 
Database altered. 
SQL> select * from v$nls_parameters; 
略 
19 rows selected. 複製代碼

重啓檢查是否更改完成: spa

SQL> shutdownimmediate; 
Database closed. 
Database dismounted. 
ORACLE instance shut down. 
SQL> startup ORACLE instance started. 
Total System Global Area  236000356 bytes 
Fixed Size        451684 bytes 
Variable Size     201326592 bytes 
Database Buffers  33554432 bytes 
Redo Buffers       667648 bytes 
Database mounted. 
Database opened. 
SQL> select * from v$nls_parameters; 複製代碼

字符集修改完成,可是很是不建議在這種在數據庫上修改字符集,很是容易出問題。code

相關文章
相關標籤/搜索