
第一步:通过系统管理员权限登录数据库。
sql>conn / as sysdba
第二步:关闭数据库和实例连接。
sql>shutdown immediate
database closed.
database dismounted.
oracle instance shut down.
第三步:启动数据库实例连接。
sql>startup mount
oracle instance started.
total system global area 135337420 bytes
fixed size 452044 bytes
variable size 109051904 bytes
database buffers 25165824 bytes
redo buffers 667648 bytes
database mounted.
第四步:限制其它用户连接数据库使用资源。
sql>alter system enable restricted session
system altered.
第五步:设置作业进行为0个。
sql>alter system set job_queue_processes=0
system altered.
第六步:设置启动时间管理器的数量为0
sql>alter system set aq_tm_processes=0
system altered.
第七步:打开数据库连接
sql>alter database open
database altered.
第八步:修改需要的编码格式
sql>alter database character set internal_use GBK
第九步:关闭连接。
sql>shutdown immediate
第十步:启动oracle进程。
sql>startup
备注:常用的有:UTF-8,GBK 。
UTF-8:是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。
1. 备份数据库中所有用户的数据以oracle用户登陆,执行以下命令
# export NLS_LANG = “SIMPLIFIED CHINESE_CHINA.UTF8”
保持与数据库服务器端一致,这样在exp导出时,就不会存在字符的转换了,备份最原始的数据。
2. 评估UTF8转换成ZHS16GBK的风险
转换之前,要使用Oracle的csscan工具对数据库扫描,评估字符集转换前后,数据有可能的损坏情况。如果评估情况糟糕,那就绝对要放弃了。
先安装属于 CSMIG 用户的一套表和过程。以oracle用户登陆UNIX,
#sqlplus “/ as sysdab”
SQL>@$ORACLE_HOME/ rdbms/admin/csminst.sql
SQL>exit
# $ORACLE_HOME\bin\csscan -help
可以更清楚如何使用csscan。
# $ORACLE_HOME/bin/csscan system/sunday user=mmsc FROMCHAR=UTF8 TOCHAR=ZHS16GBK ARRAY=102400 PROCESS=3 >csscan.log
以上命令意思是扫描用户:mmsc中的所有数据,从字符集UTF8更改为ZHS16GBK的转换情况。然后得到三个文件:scan.txt、scan.out、scan.err。
查看scan.out,scan.err,可以看出mmsc用户下的所有的数据都是可以转换的,并且没有出现转换“Exceptional”的情况,因此可以更放心一点。
3. 更改数据库的字符集为ZHS16GBK
前面说过,通过命令“Alter Database Characeter Set XXXX”,实现从超集到子集的转换,在Oracle是不允许的。但是该命令,提供这样的命令方式:
Alter Database Character Set INTERNAL_CONVERT/ INTERNAL_USE XXXX
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)