ORACLE字符集简介

ORACLE字符集设定,分为数据库字符集客户端字符集环境设置。
在数据库端,字符集在创建数据库的时候设定,并保存在数据库props$表中。
对于8i以上产品,已经可以采用“Alter database character set 字符集”来修改数据库的字符集,但也仅仅是从子集到超集.
注意:
不要通过update props$来修改字符集,如果是不支持的转换,可能会失去所有与字符集有关的数据,就是支持的转换,也可能导致数据库的不正常工作。

在客户端的字符集环境比较简单,主要就是环境变量或注册表项NLS_LANG。
注意:
NLS_LANG的优先级别为:参数文件、注册表、环境变量、alter session。
NLS_LANG的组成为“国家语言设置.字符集”,如nls_lang=simplified chinese_china.zhs16gbk。
建议:
客户端的字符集最好与数据库端一样(国家语言设置可以不一样,如zhs16gbk的字符集,客户端可以是nls_lang =simplified
chinese_china.zhs16gbk或Ameircan_America.zhs16gbk,都不影响数据库字符的正常显示),
如果字符集不一样,而且字符集的转换也不兼容,那么客户端的数据显示与导出/导入的与字符集有关的数据将都是乱码。

数据库端字符集的检查方法
以sys用户登陆数据库,检查props$表,使用语句如下:
SELECT * FROM PROPS$ WHERE NAME='NLS_CHARACTERSET';

示例:
SQL> COLUMN NAME FORMAT A20
SQL> COLUMN VALUE$ FORMAT A20
SQL> COLUMN COMMENT$ FORMAT A20
SQL> SELECT * FROM PROPS$ WHERE NAME='NLS_CHARACTERSET';

NAME VALUE$ COMMENT$
-------------------- -------------------- --------------------
NLS_CHARACTERSET AL32UTF8 Character set


字符集修改方法
如果数据库字符集不是AL32UTF8,需要修改,否则影响很多应用程序的正常使用。
修改方法如下:
一、使用Alter database character set修改数据库字符集
这个语句仅仅用于ORACLE8i以上版本,并且是子集到超集的修改。
如utf8修改到al32utf8.
示例:Alter database character set AL32UTF8;

具体步骤如下:
1、关闭数据库。
可以使用shutdown immediate语句。

2、数据库全备份。
由于the ALTER DATABASE CHARACTER SET 语句不可以回滚,如果出错,数据库就废掉了。

3、修改字符集
以sys用户登陆数据库,在sqlplus中执行下列语句:
STARTUP MOUNT;
ALTER SYSTEM ENABLE RESTRICTED SESSION;
ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;
ALTER SYSTEM SET AQ_TM_PROCESSES=0;
ALTER DATABASE OPEN;
ALTER DATABASE CHARACTER SET new_character_set;
SHUTDOWN IMMEDIATE;
STARTUP;
alter system SET JOB_QUEUE_PROCESSES=10;
ALTER SYSTEM SET AQ_TM_PROCESSES=1;


二、重新建库
如果不能使用语句修改字符集,则只有重新建立数据库了。

使用exp导出所有的已经建立的用户,再重新建立一个数据库,其字符集需要定义为AL32UTF8。
使用imp导入各个用户。

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22403494/viewspace-1029982/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/22403494/viewspace-1029982/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值