全部博文(389)
分类: Oracle
2013-08-14 11:10:36
数据库字符集zhs16gbk迁移到al32utf8
1,确定当前的字符集
SQL>select * from v$nls_parameters where parameter='NLS_CHARACTERSET'
PARAMETER VALUE
---------------------------------------------------------------- -------------
NLS_CHARACTERSET ZHS16GBK
2,以sys用户运行 $ORACLE_HOME/rdbms/admin/csminst.sql;
SQL> @csminst.sql;
3,运行$ORACLE_HOME/bin/csscan 评估迁移到新字符集的影响,新字符集必须是原来的字符集的超集
比如al32utf8 是zhs16gbk,u7ascii的超集
$ORACLE_HOME/bin/csscan system/sys tochar=al32utf8 array=10240000 process=8 full=y
4,查出输出的几个文件,主要关注 scan.txt,其中有一行
"The data dictionary can be safely migrated using the CSALTER script"
5,开始转换
SQL> alter database character set internal_use al32utf8;
使用internal_use跳过内部是不是超集这样的检查
6,查看转换过后的
SQL>select * from v$nls_parameters where parameter='NLS_CHARACTERSET'
PARAMETER VALUE
---------------------------------------------------------------- -----------
NLS_CHARACTERSET AL32UTF8
注:转换危险性比较大,不保证成功.一定要记得提前做好备份,或是使用其他的可选方案,如导出导入,GG这样的工具