「Oracle」 ORA-12705(字符集问题)

ORA-1 2 7 05 错误说白了就是Oracle数据库的字符集设置错误,或者NLS_LANG环境变量写错,或者注册表中留了个尾。
这个问题其实处理起来很简单,只需两步:更改配置和重启服务。

扩展一下,Windows系统上最常见的事情是注册表中混合了错误的NLS_LANG键。
我们去年跑的项目就遇到了这个坑。
当时数据库3 000左右,删除key重启服务5 分钟内解决。
还有一点就是要特别注意Linux系统上的环境变量,尤其是.bash_profile等Oracle用户环境配置文件。
如果NA值没有正确更改,删除并重新安装也是没有用的。
还有另一个重要的细节。
例如,在SIMPLIFIEDCHINESE_CHINA.ZHS1 6 GBK这样的字符集中,如果输入错误的字母,就会报错。
您必须对照数据库文档逐字检查。

一开始我以为重装Oracle就能解决问题,后来发现不对劲。
环境变量没有同步修改,仍然报ORA-1 2 7 05 等等,还有一件事。
用俚语来说,这称为雪崩效应。
事实上,前面的一点滞后就会让一切都落后。
例如,当我重新启动服务时,它会退出而不等待命令行响应。
说实话,这种手术是相当尴尬的。

最后提醒:更改配置后重新启动服务时需要耐心等待,尤其是Linux系统。
有时你必须在source命令后等待1 0分钟才能使环境变量完全生效。
建议先在测试环境中练习一下。
很多人不注意这一点。

如何解决oracle11中文乱码问题

那天我在公司调试Oracle查询,突然发现SQLPlus出来的汉字都是大写的,一串串问号,很烦人。
后来我发现这是一个系统问题,向我学习这个技巧很有趣。

Windows系统默认编码为GBK,但Oracle客户端可能使用UTF8 ,存在冲突。
解决办法很简单,只需更改CMD窗口中的设置即可。

我先说一下细节。
我在 2 02 1 年 3 月就经历过这种情况。
当时我使用的是 Windows 1 0 专业版。
在C:\Oracle\bin中找不到sqlplus快捷方式。
要找到它,您需要转到用户目录中的AppData。
右键单击窗口顶部的标题栏,打开“属性”,在“选项”页面上勾选“使用旧控制台”。
检查并重启CMD,中文就正常了。

最重要的是,修改完后要完全关闭再打开CMD。
我尝试过最小化和恢复,但没有成功。
字体也很重要。
设置“控制台”,让汉字变得非常正常。

如果更新后代码仍然损坏,则需要检查 NLS_LANG 环境变量。
当时我发现是“AMERICAN_AMERICA.ZHS1 6 GBK”,使用的数据库是“SIMPLIFIEDCHINESE_CHINA.UTF8 ”,所以只好改系统环境变量。
请注意,格式中有一个点(例如“AMERICAN_AMERICA.SIMPLIFIEDCHINESE_CHINA.UTF8 ”),它必须与数据库配置匹配。

最烦人的就是重装系统后。
我昨天下午反复重新启动计算机,系统重新启动后,区域设置配置不正确。
等等,还有一件事,在我勾选了“使用较旧的控制台版本”复选标记后,我发现连CMD窗口的背景颜色都是深色的,这很奇怪。

现在我想知道,Oracle是否安装得太深以至于覆盖了底层系统设置?或者说Windows 1 0自带的主机从来不支持中文?这是值得考虑的。

oracle 用Sqlplus连接的时候中文出现乱码

昨天下午,帮朋友解决了数据库乱码的问题。
当他使用SQL Plus登录Windows系统并登录数据库时,所有汉字都变成了方块。
我打开他的电脑,先按win+r调出运行窗口,输入“cmd”打开命令提示符。
然后他按照指示输入了登录命令,但提示信息却很乱,完全看不懂。
我让他执行一条查询语句,发现字符集是GBK,得改一下。

我开始操作,首先设置客户端字符集。
我右键单击桌面上的“我的电脑”,选择属性,然后转到“高级”选项卡,单击“环境变量”。
我发现一个名为“NLS_LANG”的变量。
如果没有找到,我创建了一个新的并将值设置为“SIMPLIFIEDCHINESE_CHINA.ZHS1 6 GBK”。
然后我在控制面板中设置计算机语言,选择中文作为非Unicode程序的语言。

安装字符集时,系统提示我重新启动计算机。
重启后,我让他再次进入SQL Plus,这次汉字终于正常显示了。
等等,我还发现了一些事情。
他的计算机上有旧版本的 SQL Plus。
然后我让他更换新版本,问题就再也没有出现过。
我想到如果以后再遇到同样的问题,我可能得检查一下软件版本。
不过,这次的解题过程确实很有趣,就像解谜一样。