暂无图片
如果Oracle没有设置客户端字符集变量NLS_LANG,那么客户端默认会用什么字符集?
我来答
分享
暂无图片 匿名用户
如果Oracle没有设置客户端字符集变量NLS_LANG,那么客户端默认会用什么字符集?

如果Oracle没有设置客户端字符集变量NLS_LANG,那么客户端默认会用什么字符集?

我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
Lucifer三思而后行
暂无图片

如果不设置 NLS_LANG,NLS_LANG 值默认为空,数据库查询出来的客户端字符集为对应数据库字符集,并不影响使用,我还原了一下:

image.png

关于客户端字符集和数据库字符集可以参考:《Oracle 查看数据库字符集和客户端字符集 SQL 语句》

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
Thomas

我感觉应该不行。在客户端登录时,会提示:

ERROR:
ORA-12705: Cannot access NLS data files or invalid environment specified

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena

我数据库字符集是AMERICAN_AMERICA.AL32UTF8
image.png
然后把操作系统里的环境变量、注册表里的字符集都删了,登录plsqldeveloper,提示
image.png
点确定进去
image.png

再看看sqlplus
image.png

然后把环境变量配置上去看看,
image.png
会弹出字符集不匹配的信息,点确定进去
image.png
image.png

最后看下官方的解释
image.png
如果没有设置字符集,则根据设置的语言来选择对应的字符集,没有设置语言的话就是默认语言

另外,注意一点,目前网上大部分文章说下面这个sql可以查客户端字符集,其实是错的,它的语言虽然的确是客户端语言,但他这个字符集其实是数据库的字符集

select userenv('language') from dual
复制

image.png
image.png

官网的说明
image.png

暂无图片 评论
暂无图片 有用 2
打赏 0
Thomas

DarkAthena,

select value from v$nls_parameters where parameter='NLS_CHARACTERSET'

select userenv('language') from dual;

得到的都是DB端字符集。换言之,alter session set NLS_CHARACTERSET='xxx'; 这句应该执行会报错的。就是说客户端连入后,就无法改当前session字符集,对吧。如果运行

select value from nls_session_parameters where parameter='NLS_CHARACTERSET';

查询无记录,是否也印证了无法在session里修改其值?

暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena
2022-01-17
是的,在会话里去改会话字符集,会报错"ORA-00922: 选项缺失或无效"。在nls客户端参数视图和nls会话参数视图里都没有字符集参数。
DarkAthena
2022-01-17
>NLS_LANG cannot be changed by ALTER SESSION, NLS_LANGUAGE and NLS_TERRITORY can. However NLS_LANGUAGE and /or NLS_TERRITORY cannot be set as "standalone" parameters in the environment or registry on the client.
回答交流
Markdown


请输入正文
提交
相关推荐
v$sesstat和v$mystat 为什么获取的值不一致。
回答 4
没找到更好的资料,根据GPT的答复。认为v$mystat具有更高的实时性。万知在比较V$SESSTAT和V$MYSTAT哪个更能反映实时信息时,我们需要考虑它们的数据更新方式和内容。V$MYSTAT:
Oracle 11g可以使用expdp远程备份吗
回答 9
已采纳
直接备机上安装一下对应版本的oracle软件,建库、建dblink,然后就expdp远程导出吧。
大佬们请教下,trace文件每天重复产生很多这样的。看alter也没见异常。这个进程PID,早都已经没有了。给点什么思路?
回答 2
一般这种情况就是触发BUG了,尤其是在升级、打补丁之类的动作后,可以在mos中搜索下。在巡检确认无误的情况下,如果没有匹配到对应的bug,也可以手工写个脚本定期清理,避免inode满影响数据库实例
oracle执行计划顺序如何?
回答 2
二叉树,后序遍历
zabbix-server log报找不到这个odbc驱动,文件是存在的,然后使用isql 也能登录 ldd这个文件也是正常的 ldconfig 也正常
回答 2
已采纳
缺少环境变量配置,试试配置下oracle环境变量cat/etc/sysconfig/zabbixserverexportORACLEHOME/usr/lib/oracle/11.2/client64e
10053,10046 看这个样子有1000多个事件可以跟踪是不是?
回答 1
已采纳
1005310046都是主要针对特定的sql进行分析的,10046是执行过程分析,10053是执行计划产生的分析
AWR分析报告问题求助:小白问题:怎么做能提升30%性能?
回答 2
直接读硬盘还是你主要问题。SQL优化,或者逻辑优化改写,这是最容易做,也是收效最大的方式。
为什么查询语句在SQL server中执行,在oracle中不能执行?
回答 1
函数不一样
impdp
回答 3
您好!1.数据迁移建议按照用户来做,也就是导入只导入业务用户步导入sys登系统用户;2.导入到pdb中3.报错问题建议上传日志方便分析4.建议贴下您导出语句包括sqlfile和全库
Oracle环境中客户端和服务器端的分割点在哪里?
回答 2
B.用户进程和服务进程之间;在Oracle的网络架构中,这个分割点是通过网络层来实现的,用户进程通过网络与服务进程通信。