察看本机的oracle数据库字符集:
SQL> select userenv('language') from dual ;
USERENV('LANGUAGE')
----------------------------------------------------
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
现在的字符集是ZHS16GBK,需要把它修改为UTF8
过程如下:
SQL> shutdown immediate ;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup mount ;
ORACLE 例程已经启动。
Total System Global Area 401743872 bytes
Fixed Size 1333480 bytes
Variable Size 327157528 bytes
Database Buffers 67108864 bytes
Redo Buffers 6144000 bytes
数据库装载完毕。
SQL> show parameter dump
NAME TYPE VALUE
------------------------------------ ----------- -----------------------------
background_core_dump string partial
background_dump_dest string e:/oracle/diag/rdbms/demo/dem
/trace
core_dump_dest string e:/oracle/diag/rdbms/demo/dem
/cdump
max_dump_file_size string unlimited
shadow_core_dump string none
user_dump_dest string e:/oracle/diag/rdbms/demo/dem
/trace
SQL> alter session set sql_trace=true;
会话已更改。
SQL> alter system enable restricted session ;
系统已更改。
SQL> alter system set aq_tm_processes=0;
系统已更改。
SQL> alter database open ;
数据库已更改。
SQL> alter database character set INTERNAL_USE UTF8;
数据库已更改。
SQL> update props$ set value$='UTF8' where name = 'NLS_NCHAR_CHARACTERSET';
已更新 1 行。
SQL> commit ;
提交完成。
SQL> startup force
ORACLE 例程已经启动。
Total System Global Area 401743872 bytes
Fixed Size 1333480 bytes
Variable Size 327157528 bytes
Database Buffers 67108864 bytes
Redo Buffers 6144000 bytes
数据库装载完毕。
数据库已经打开。
SQL>
重新启动数据库正常,再察看oracle数据库,发现字符集已经改变
SQL> select userenv('language') from dual ;
USERENV('LANGUAGE')
--------------------------------------------------
SIMPLIFIED CHINESE_CHINA.UTF8
致此,修改成功,但是如果要在现网上修改的话,需要进行RMAN进行全量备份(归档模式)或者冷备份(停数据库,非归档模式)备份,才能修改,否则,哭吧