oracle 10如何修改字符集?

 我来答
趣事情
2015-06-16 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
1.修改服务器端oracle默认字符集:打开“开始菜单”,在“运行”里输入“cmd”,回车,进入命令行编
辑模式。输入“sqlplus /nolog”,回车。修改默认字符集,以sysdba的身份执行SQL语句。输入“conn
sys/password@orcl as sysdba;”,回车。输入“select name,value$ from props$ where
name like
’%NLS%’;”,查看默认字符集。找到“NLS_CHARACTERSET”,其值为“WE8ISO8859P1”。
2.修改客户端sqlplus默认字符集:打开“开始菜单”,
在“运行”里输入“regedit”,回车,进入注册表编辑器。按CTRL+F,输入“NLS_LANG”,回车,找到sqlplus软件目录下的
NLS_LANG,其键值为“WE8ISO8859P1”。双击“NLS_LANG”,输入“ZHS16GBK”,点击“确定”按钮保存重启计算
机。
ssanitxu
2011-09-06 · TA获得超过325个赞
知道小有建树答主
回答量:333
采纳率:0%
帮助的人:189万
展开全部
文章分类:数据库
Oracle修改字符集
2.3oracle数据库的字符集更改

A、oracle server 端 字符集查询

select userenv(‘language’) from dual

其中NLS_CHARACTERSET 为server端字符集

NLS_LANGUAGE 为 server端字符显示形式

B、查询oracle client端的字符集

$echo $NLS_LANG

如果发现你select 出来的数据是乱码,请把client端的字符集配置成与linux操作系统相同的字符集。
如果还是有乱码,则有可能是数据库中的数据存在问题,或者是oracle服务端的配置存在问题。

C、server端字符集修改

*****************************************************************

* 更改字符集步骤方法(WE8ISO8859P1 --> ZHS16GBK) *

*****************************************************************

SQL>

将数据库启动到RESTRICTED模式下做字符集更改:

SQL> conn /as sysdba

Connected.

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup mount

ORACLE instance started.

Total System Global Area 236000356 bytes

Fixed Size 451684 bytes

Variable Size 201326592 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION;

System altered.

SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;

System altered.

SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0;

System altered.

SQL> alter database open;

Database altered.

SQL> ALTER DATABASE CHARACTER SET ZHS16GBK;

ALTER DATABASE CHARACTER SET ZHS16GBK

*

ERROR at line 1:

ORA-12712: new character set must be a superset of old character set

提示我们的字符集:新字符集必须为旧字符集的超集,这时我们可以跳过超集的检查做更改:

SQL> ALTER DATABASE character set INTERNAL_USE ZHS16GBK;

Database altered.

SQL> select * from v$nls_parameters;



19 rows selected.

重启检查是否更改完成:

SQL> shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SQL> startup

ORACLE instance started.

Total System Global Area 236000356 bytes

Fixed Size 451684 bytes

Variable Size 201326592 bytes

Database Buffers 33554432 bytes

Redo Buffers 667648 bytes

Database mounted.

Database opened.

SQL> select * from v$nls_parameters;



19 rows selected.

我们看到这个过程和之前ALTER DATABASE CHARACTER SET操作的内部过程是完全相同的,也就是说INTERNAL_USE提供的帮助就是使

Oracle数据库绕过了子集与超集的校验.

这一方法在某些方面是有用处的,比如测试;应用于产品环境大家应该格外小心,除了你以外,没有人会为此带来的后果负责:

结语(我们不妨再说一次):

对于DBA来说,有一个很重要的原则就是:不要把你的数据库置于危险的境地!

这就要求我们,在进行任何可能对数据库结构发生改变的操作之前,先做有效的备份,很多DBA没有备份的操作中得到了惨痛的教训

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

D、client端字符集修改

在 /home/oracle与 /root用户目录下的.bash_profile中

添加或修改 export NLS_LANG="AMERICAN_AMERICA.UTF8" 语句

关闭当前ssh窗口。

注意 NLS_LANG变量一定要配置正确否则会引起sqlplus 失效

选自:taotao学习空间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
09赏金猎人
2012-08-01
知道答主
回答量:71
采纳率:0%
帮助的人:23万
展开全部
1、先用system和密码登陆SQLPLUS(如果不能直接以sys登陆到sqlplus的话),进入到sql*plus之后,可以通过conn / as sysdba转变为sysdba身份连接到数据库
2、开始修改编码
shutdown immediate;停止oracle服务以及监听。如果服务停止,这部可省略
startup mount;
alter system enable restricted session;
alter system set job_queue_processes=0;初始化设置job
alter database open;
alter database character set internal_use utf8;设置编码 (alter database character set internal_use ZHS16GBK;)(alter database character set internal_use WE8ISO8859P1;)
shutdown immediate; 关闭
startup; 重启
至此编码已经设置完成。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shalong1943
2011-09-06 · TA获得超过206个赞
知道答主
回答量:12
采纳率:0%
帮助的人:14.4万
展开全部
oracle修改服务器端字符集:
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 ZHS16GBK;

如果出现了 ERROR at line 1: ORA-12712: new character set must be a superset of old character set     

SQL> ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳过超集的检查,

ALTER DATABASE character set INTERNAL_USE   

SQL>SHUTDOWN IMMEDIATE;   

SQL>STARTUP 再检查就发现已经把字符集修整过来了

NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
来自慧云寺婉若游龙的白玫瑰
2011-09-05 · TA获得超过699个赞
知道小有建树答主
回答量:267
采纳率:100%
帮助的人:292万
展开全部
有一个配置文件名为dbappscfg.properties,修改该文件即可解决上述问题。这个文件的位置在$ORACLE_HOME\sysman\config目录下,用任何的文本编辑器打开该文件,在这个文件里面,找到这样一项

NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK

set nls_lang = AMERICAN_AMERICA.ZHS16GBK
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式