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

  

通过腻子sql_plus连接数据库报错:
ora - 12705:不能访问NLS数据文件或无效的环境指定
<强>
此问题主要是腻子登录后的系统linux/windows当前环境变量NLS_LANG设置和数据库NLS_LANG参数变量不一致导致。

  

NLS_LANG参数由以下部分组成:
<代码> NLS_LANG=(语言)_(领土)。(客户Characterset)

  

NLS_Language指定:

  
      <李>甲骨文(错误)信息的语言李   <李>日和月份的名称
    注意:NLS_LANGUAGE与插入和查询的数据的语言无关。   
  

NLS_Territory指定:

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

客户端字符集(客户CHARACTERSET):

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

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

  
 <代码>选择
  (从nls_database_parameters选择价值
  参数=癗LS_LANGUAGE”)
  “_”| | | |
  (从nls_database_parameters选择价值
  参数=癗LS_TERRITORY”)
  | | ' . ' | |
  (从nls_database_parameters选择价值
  参数=NLS_CHARACTERSET) NLS_LANG哪里
  从双; 
  

注意:   

 <代码>选择userenv从双(“语言”);
  ——或
  select * from v $ nls_parameters;  
  

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

  

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

  

<代码> env | grep NLS_LANG

  

3。不一致则使用出口命令设置linux环境变量NLS_LANG的值
linux例如:<代码> export NLS_LANG=AMERICAN_AMERICA.AL32UTF8

  

如果要永久更新此变量需要在。bash_profile文件中设置或添加的NLS_LANG
例如:<代码>第六~/. bash_profile

  

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

  

2 . .注册表设置(永久生效)
默认情况下,windows上的甲骨文安装使用注册表来定义这个设置。
版本10 g及以上:
HKEY_LOCAL 机\甲骨文软件\ \键 & lt; oracle_home_name>
这里您会看到一个条目名为NLS_LANG

  

在64位windows平台上安装32位软件,会使用32位兼容性路径
HKEY_LOCAL 机\甲骨文软件\ Wow6432Node \ \键 & lt; oracle_home_name>

  

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

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