Oracle字符集问题求助

海天一树 2014-09-12 05:13:08
Oracle字符集问题求助


环境:
在虚拟机装Redhat5 + Oracle 11g作为服务器端
在Win7中免安装版的PL/SQL Developer和免安装版的Oracle客户端instantclient-basic-win32-11.2.0.1.0
服务器端中的NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
Win7的系统环境变量中添加NLS_LANG=AMERICAN_AMERICA.ZHS16GBK

操作步骤:
1)服务器端创建表
create table test_table(id int, name varchar2(20));
插入数据并提交
insert into test_table values(1, '张三');
commit;

2)Win7用PL/SQL Developer连接服务器端,且执行
insert into test_table values(2, '李四');
commit;

3)在服务器端查询
select * from test_table;
显示结果
ID NAME
---------- --------------------
2 ???
1 张三

4)在Win7的PL/SQL Developer中查询
select * from test_table;
显示结果
2 李四
1 寮犱笁

问题:
看现象,是服务器端和客户端互相不认得对方的汉字,但不知道具体原因在哪里。这个问题困扰我多时了,请各位大神帮忙看一下。
...全文
532 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yuyeyi 2014-12-12
  • 打赏
  • 举报
回复
服务区器读取的是服务器的字符集, 而cmd 读的其实才是客户端也就是client的字符集。 plsql读取的是自己的字符集(在注册表中),所以你应该修改注册表中的字符集。
ning_wnn2014 2014-12-11
  • 打赏
  • 举报
回复
这个涉及到oracle字符集的问题若此时数据库服务器已启动,则先执行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 INTERNAL_USE ZHS16GBK; //跳过超子集检测   SQL>ALTER DATABASE national CHARACTER SET INTERNAL ZHS16GBK; 这一行不起作用,执行后出错ORA-00933: SQL 命令未正确结束,不过执行上一行命令已经生效,不用担心,继续下面操作。   SQL>SHUTDOWN IMMEDIATE;   SQL>STARTUP 执行完后检测是否成功: sql>select userenv('langvage') from dual,
yuyeyi 2014-11-17
  • 打赏
  • 举报
回复
select userenv('language') from dual; 查看服务器的字符集, 然后再注册表里面修改本地字符集,一样的话基本没问题。
riskyvall 2014-11-17
  • 打赏
  • 举报
回复
二楼的方法不行 删除重新安装
小麻雀NG 2014-11-14
  • 打赏
  • 举报
回复
这个涉及到oracle字符集的问题若此时数据库服务器已启动,则先执行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 INTERNAL_USE ZHS16GBK; //跳过超子集检测
  SQL>ALTER DATABASE national CHARACTER SET INTERNAL ZHS16GBK;
这一行不起作用,执行后出错ORA-00933: SQL 命令未正确结束,不过执行上一行命令已经生效,不用担心,继续下面操作。
  SQL>SHUTDOWN IMMEDIATE;
  SQL>STARTUP
执行完后检测是否成功:
sql>select userenv('langvage') from dual,
如果出现以下图片所示情况就ok了

海天一树 2014-09-12
  • 打赏
  • 举报
回复
上面第3)步中?是被黑色的菱形包围着,由于论坛不允许那种字符,我改用?来表示。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧