java characterset_修改Oracle字符集(character set)

本方法适用于Oracle9i, 10g以及XE. 在10.2.0.1.0下测试无错. 需要注意的是, 使用此方法会破坏数据库中的原有双字节字符. 一种办法是先将数据库导出, 修改完字符集后再导入; 另一种办法就是不管他, 就那样使用. 一般如果是一个测试环境, 像方法二那样就可以了, 但是可能某些表无法读取, 需要注意.

sql> shutdown immediate

sql> startup mount

sql> alter system enable restricted session;

sql> alter system set job_queue_processes=0;

sql> alter system set aq_tm_processes=0;

sql> alter database open;

sql> alter database character set AL32UTF8;

sql> shutdown immediate

sql> startup

这里的INTERNAL_USE可选,譬如用于不能从父集转到子集的场合,但是这样做会产生乱码,或者表中的数据不能读取。

如果数据库中存在CLOB字段,那么就不允许对字符集进行转换,此时可以查看alert.log文件,把含有CLOB的表trancate.

sql> trancate table [table_name];

转换后的数据库字符集可以通过以下命令察看.

sql> select name, value$ from props$ where name like '%NLS%';

导入导出是我们常用的一个数据迁移及转化工具,因其导出文件具有平台无关性,所以在跨平台迁移中,最为常用。

在导出操作时,非常重要的是客户端的字符集设置,也就是客户端的NLS_LANG设置。

NLS_LANG参数由以下部分组成:

NLS_LANG=_.

NLS_LANG各部分含义如下:

Language

-Oracle消息使用的语言

-日期中月份和日显示

Territory

-货币和数字格式

-地区和计算星期及日期的习惯

Clients Characterset

-控制客户端应用程序使用的字符集

例如

E:\>set NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

E:\>sqlplus "/ as sysdba"

或者

E:\>set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

E:\>sqlplus "/ as sysdba"

Windows客户端设置,可以在注册表中更改NLS_LANG,具体键值位于:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\

xx指存在多个ORACLE_HOME时系统编号。

posted on 2006-09-25 15:02 Mongoose 阅读(12392) 评论(2)  编辑  收藏

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值