Oracle 10g修改字符集的方法:
1.首先执行$ORACLE_HOME/rdbms/admin/csminst.sql,创建一些数据库对象,包括数据库用户
2.备份Oracle数据库,最好全库备份;
3.使用csscan命令检查字符集转换是否可行.csscan有四种扫描模式:全库扫描,按用户扫描,按表扫描,按列扫描.因为我们是改变全库的字符集,所以要用全库扫描.并且要求有DBA权限.
4.运行csscan扫描数据库:csscan SYSTEM/testdb FULL=y TOCHAR=ZHS16GBK ARRAY=1024000 PROCESS=1
5.扫描结束后,会在当前目录下产生三个文件:scan.txt,scan.out,scan.err,我们更多的需要关注scan.err
6.可能需要多运行几次csscan命令,以确保scan.err中没有报错,才能进行字符转换.
7.没有问题之后,然后运行$ORACLE_HOME/rdbms/admin/csalter.plb脚本,进行转化。转化的过程中,需要注意,数据库不能有别的session运行,否则会报错.另外,由于在转换的过程中读取的是CSMIG用户下的CSM$PARAMETERS表中的数据,因此在转换前必须用csscan执行一次全库扫描.
可能会遇到的问题:
Full database scan is required ----需要全表扫描
Exceptional data found in scanner result -----检查scan.err应该还有错误报告
Sorry only one session is allowed to run this script -----还有别的session在运行,断开连接后再试试.[@more@]