解决ORA-12705无法访问NLS问题

通过putty sql_plus 连接数据库报错:
ORA-12705:Cannot access NLS data files or invalid environment specified

此问题主要是putty登录后的系统linux/windows当前环境变量NLS_LANG设置和数据库NLS_LANG参数变量不一致导致.

NLS_LANG参数由以下部分组成:
NLS_LANG=[Language]_[Territory].[Clients Characterset]

NLS_Language 指定:

  • Oracle(错误)信息的语言
  • 日和月份的名称
    注意:NLS_LANGUAGE与插入和查询的数据的语言无关。

NLS_Territory 指定:

  • 货币和数字格式
  • 计算星期和天数的范围和惯例

客户端字符集(CLIENTS CHARACTERSET):

  • 定义Oracle客户端,客户应用使用的编码
  • 或者它要符合您Microsoft Windows代码页 (GUI工具的ACP, 命令提示符的CHCP 值)
  • 或者为Unicode WIN32应用设置为UTF8/AL32UTF8。

1.首先查询数据库的语言字符集环境变量;

 SELECT 
 (SELECT VALUE  from nls_database_parameters
 WHERE parameter='NLS_LANGUAGE')
 ||'_'||
  (SELECT VALUE  from nls_database_parameters
 WHERE parameter='NLS_TERRITORY')
 ||'.'||
   (SELECT VALUE  from nls_database_parameters
 WHERE parameter='NLS_CHARACTERSET') NLS_LANG
 FROM dual;

注意:

select userenv('language') from dual;
--或
select * from v$nls_parameters;

如上查询只能查询出数据库当前session的语言字符集,

2.在putty linux 中查询当前的环境变量NLS_LANG是否和数据库语言字符集保持一致.

env | grep NLS_LANG

3.不一致则使用export 命令设置linux环境变量NLS_LANG的值
linux例如:export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

如果要永久更新此变量需要在.bash_profile文件中设置或添加的NLS_LANG
例如:vi ~/.bash_profile

注:远程机器如果为windows;
windows设置NLS_LANG有三种方式
1.cmd命令如下:
set nls_lang=AMERICAN_AMERICA.AL32UTF8

2..注册表设置(永久生效)
默认情况下,windows上的Oracle安装使用注册表来定义这个设置。
版本 10g 及以上:
HKEY_LOCALMACHINE\SOFTWARE\ORACLE\KEY<oracle_home_name>
这里您会看到一个条目名为NLS_LANG

在64位windows平台上安装32位软件,会使用32位兼容性路径
HKEY_LOCALMACHINE\SOFTWARE\Wow6432Node\ORACLE\KEY<oracle_home_name>

3..操作系统环境变量
尽管注册表是Microsoft Windows设置的主要存储位置,它不是唯一可以设置参数的地方。
虽然不推荐,但您可以设置NLS_LANG为系统属性中的系统或者用户变量。这个设置会被所有Oracle home使用。
设置位置: '我的电脑' -> '属性' > '高级' -> '环境变量'

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ORA-12705错误表示Oracle数据库无法访问所需的NLS设置。NLS代表"National Language Support",是Oracle数据库用来处理多语言字符集的特性。 通常,ORA-12705错误是由于Oracle数据库无法识别或找不到正确的字符集设置而引起的。要解决问题,您可以尝试以下几种方法: 1. 检查环境变量:确保您的操作系统环境变量设置正确。特别是检查NLS_LANG和ORACLE_HOME环境变量是否正确设置。 2. 检查Oracle客户端:确保您正在使用的Oracle客户端版本与服务器版本匹配,并已正确安装。此外,您还需要检查客户端的NLS设置是否与服务器的NLS设置匹配。 3. 检查数据库字符集:确保您的数据库字符集与客户端字符集匹配。如果不匹配,您需要使用ALTER DATABASE语句更改数据库字符集。 希望这些方法能够帮助您解决ORA-12705错误。 ### 回答2: ORA-12705错误是Oracle数据库的一种常见错误,通常出现在尝试连接数据库时或在操作数据库时。它意味着不能访问NLS,即国家语言支持库。这个错误出现的原因可能是因为数据的字符集和操作系统或客户端的字符集不同,或者字符集没有正确安装。 如果您遇到ORA-12705错误,要解决它,您可以采取以下几个步骤: 1. 检查您的NLS设置是否正确。您可以使用以下命令来检查您的NLS_LANG: echo $NLS_LANG 如果这个命令没有输出,则说明NLS_LANG没有设置。 2. 修改您的NLS设置。您可以使用以下命令来修改您的NLS_LANG: export NLS_LANG=[NLS_CHARACTERS_SET]_[NLS_TERRITORY].[NLS_CHARACTER_SET] [NLS_CHARACTERS_SET]可以是任何有效的字符集,如UTF8、GBK等。[NLS_TERRITORY]可以是您所在的国家或地区。[NLS_CHARACTER_SET]可以是任何有效的字符集,如UTF8、GBK等。 3. 如果您的NLS设置已经正确设置,但仍然遇到ORA-12705错误,则可能是因为您的Oracle客户端没有正确配置NLS。您可以尝试重新安装Oracle客户端并重新配置NLS。 总之,ORA-12705错误通常是由NLS设置不正确或NLS没有正确配置引起的。通过检查和修改您的NLS设置,您可以解决这个错误。如果您仍然无法解决这个问题,您可以考虑寻求支持。 ### 回答3: ORA-12705错误是Oracle数据库中的一个常见错误。这个错误通常表示Oracle客户端无法访问NLS(National Language Support)环境。这种情况通常发生在客户端语言设置与数据库设置不匹配时,可能会导致字符集无法正确识别和转换。 ORA-12705可能是由下列原因引起: 1. 客户端语言设置无法匹配数据库语言设置。如果客户端语言设置与数据库不一致,那么它可能无法正常地执行字符集的转换。 2. 客户端缺少必要的NLS组件。如果客户端缺少必要的NLS(National Language Support)组件,则可能会导致ORA-12705错误。 3. 数据库字符集设置不正确。如果数据库字符集设置不正确,则会导致ORA-12705错误。 对于ORA-12705错误,可以采取以下措施: 1. 检查客户端语言设置与数据库语言设置是否一致。 2. 检查客户端是否安装了必要的NLS组件。可以检查ORACLE_HOME/nls目录下的组件是否完整。 3. 检查数据库字符集设置是否与NLS_LANG变量匹配。 4. 针对Windows环境,在注册表中设置NLS_LANG参数。 5. 如果采取上述措施后仍无法解决问题,则可以考虑更改客户端语言设置或者重新安装Oracle客户端。 总的来说,ORA-12705错误是Oracle数据库中的一个常见错误,通常表示Oracle客户端无法访问NLS(National Language Support)环境。在解决此类问题时,应该对客户端语言设置、NLS组件、数据库字符集设置等方面进行综合考虑和排查。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值