免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6778 | 回复: 14
打印 上一主题 下一主题

连接oracle报错(OCI_NLS_CHARSET_ID) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-27 15:10 |只看该作者 |倒序浏览
用perl连接Oracle数据库,报如下连接错误,研究了数天无法解决,请高手赐教,谢谢。
DBI connect('db@192.168.8.100:1521','sa',...)failed: ERROE OCINlsEnvironmentVariableGet(OCI_NLS_CHARSET_ID) Check NLS settings etc. at check.pl line 100

论坛徽章:
3
CU十二周年纪念徽章
日期:2013-10-24 15:41:34子鼠
日期:2013-12-14 14:57:19射手座
日期:2014-04-25 21:23:23
2 [报告]
发表于 2014-06-27 17:01 |只看该作者
1.oracle client 装了没有
2. NLS字符集设置了没有

论坛徽章:
0
3 [报告]
发表于 2014-06-27 17:20 |只看该作者
我把能设置的都设置了,还是不行,还有其他需要注意的吗?谢谢回复 2# mcshell


   

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
4 [报告]
发表于 2014-06-28 07:57 |只看该作者
本帖最后由 laputa73 于 2014-06-28 07:58 编辑

这个提示够明显了,就是字符集设得不对啊.
你用sqlplus能连吗?
        $ENV{NLS_LANG} = "SIMPLIFIED CHINESE_CHINA.ZHS16GBK";

论坛徽章:
0
5 [报告]
发表于 2014-06-30 15:48 |只看该作者
谢谢你的回复,但是我按照你的提示对字符集进行了修改,还是返回同样的错误,我本地安装的是oracle服务端数据库,通过perl脚本连接本地oracle 数据库,不知道还有其他方法纠正此错误吗?谢谢回复 4# laputa73


   

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
6 [报告]
发表于 2014-06-30 17:14 |只看该作者
1.先看看sqlplus能不能连上,如果不行,后面不用看了,先解决安装的问题(对比和oracle用户的环境变量)
2.如果能连上,用env命令,把环境变量列出来看看
3.代码里面把%ENV dump出来看看,比较一下
4,贴代码

论坛徽章:
0
7 [报告]
发表于 2014-07-01 08:53 |只看该作者
谢谢,麻烦你看一下。
1. sqlplus可以连接成功。
2. 系统的环境变量:
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。保留所有权利。

C:\Windows\System32>set
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\Administrator\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=LYJ
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\Administrator
LOCALAPPDATA=C:\Users\Administrator\AppData\Local
LOGONSERVER=\\LYJ
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
NUMBER_OF_PROCESSORS=2
ORACLE_HOME=E:\app\Administrator\product\12.1.0\dbhome_2
OS=Windows_NT
Path=E:\app\Administrator\product\12.1.0\dbhome_2\bin;E:\app\Administrator\produ
ct\12.1.0\dbhome_1\bin;D:\instantclient_12_1\bin;D:\Perl\site\bin;D:\Perl\bin;D:
\Program Files (x86)\ActiveState Perl Dev Kit 9.3\bin\;D:\Program Files\ActiveSt
ate Perl Dev Kit 9.3\bin\;D:\Perl64\site\bin;D:\Perl64\bin;C:\Program Files (x86
)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\Syst
em32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\Program Files\Microsoft
SQL Server\110\DTS\Binn\;D:\Program Files (x86)\Microsoft SQL Server\110\Tools\
Binn\;D:\Program Files\Microsoft SQL Server\110\Tools\Binn\;D:\Program Files (x8
6)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\
Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\;D:\Program Files (x8
6)\Microsoft SQL Server\110\DTS\Binn\;;d:\Dwimperl\perl\bin;d:\Dwimperl\perl\sit
e\bin;d:\Dwimperl\c\bin;
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 15 Stepping 13, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0f0d
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;D:\Program File
s (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\ADMINI~1\AppData\Local\Temp
TMP=C:\Users\ADMINI~1\AppData\Local\Temp
USERDOMAIN=LYJ
USERNAME=Administrator
USERPROFILE=C:\Users\Administrator
windir=C:\Windows

C:\Windows\System32>

3,  代码里输出的环境变量:

USERPROFILE=C:\Users\Administrator
NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK
HOMEDRIVE=C:
ORACLE_HOME=E:\app\Administrator\product\12.1.0\dbhome_2
COMMONPROGRAMFILES=C:\Program Files (x86)\Common Files
APPDATA=C:\Users\Administrator\AppData\Roaming
PROGRAMFILES=C:\Program Files (x86)
OS=Windows_NT
PWD=E:/workspace/COH - Develop
LOCALAPPDATA=C:\Users\Administrator\AppData\Local
PROGRAMW6432=C:\Program Files
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROMPT=$P$G
NUMBER_OF_PROCESSORS=2
FP_NO_HOST_CHECK=NO
HOMEPATH=\Users\Administrator
COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files
PATH=E:\app\Administrator\product\12.1.0\dbhome_2\bin;E:\app\Administrator\product\12.1.0\dbhome_1\bin;D:\instantclient_12_1\bin;D:\Perl\site\bin;D:\Perl\bin;D:\Program Files (x86)\ActiveState Perl Dev Kit 9.3\bin\;D:\Program Files\ActiveState Perl Dev Kit 9.3\bin\;D:\Perl64\site\bin;D:\Perl64\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;D:\Program Files\Microsoft SQL Server\110\DTS\Binn\;D:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\;D:\Program Files\Microsoft SQL Server\110\Tools\Binn\;D:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies\;D:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;;d:\Dwimperl\perl\bin;d:\Dwimperl\perl\site\bin;d:\Dwimperl\c\bin;
PROCESSOR_ARCHITEW6432=AMD64
USERDOMAIN=LYJ
PROGRAMDATA=C:\ProgramData
PROCESSOR_ARCHITECTURE=x86
PADRE_VERSION=0.94
PSMODULEPATH=C:\Windows\system32\WindowsPowerShell\v1.0\Modules\;D:\Program Files (x86)\Microsoft SQL Server\110\Tools\PowerShell\Modules\
TEMP=C:\Users\ADMINI~1\AppData\Local\Temp
SYSTEMDRIVE=C:
PROCESSOR_REVISION=0f0d
SYSTEMROOT=C:\Windows
COMMONPROGRAMW6432=C:\Program Files\Common Files
COMSPEC=C:\Windows\system32\cmd.exe
SESSIONNAME=Console
LOGONSERVER=\\LYJ
WINDIR=C:\Windows
PROCESSOR_LEVEL=6
PUBLIC=C:\Users\Public
USERNAME=Administrator
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 15 Stepping 13, GenuineIntel
PROGRAMFILES(X86)=C:\Program Files (x86)
ALLUSERSPROFILE=C:\ProgramData
COMPUTERNAME=LYJ
TMP=C:\Users\ADMINI~1\AppData\Local\Temp


4, 我对比了下两个环境变量,主要的都一致,但是还是输出同样的错误。连接的代码如下,麻烦你给看一下。

#!/usr/bin/perl

use strict;
use DBI;
use DBD::Oracle;

open FH, ">>", "test.txt";
foreach  my $tmp (keys %ENV) {
        print FH "$tmp=$ENV{$tmp}\n";
}

my $Server = "LYJ";
my $Database = "orcl";
my $UID = "system";
my $PWD = "hmlijg";
my $dbh = DBI->connect("dbi:Oracle:sid=$Database;host=$Server;port=1522",$UID,$PWD) or die "can't connect to database: DBI-errstr";


回复 6# laputa73


   

论坛徽章:
42
19周年集字徽章-周
日期:2019-10-14 14:35:31平安夜徽章
日期:2015-12-26 00:06:30数据库技术版块每日发帖之星
日期:2015-12-01 06:20:002015亚冠之首尔
日期:2015-11-04 22:25:43IT运维版块每日发帖之星
日期:2015-08-17 06:20:00寅虎
日期:2014-06-04 16:25:27狮子座
日期:2014-05-12 11:00:00辰龙
日期:2013-12-20 17:07:19射手座
日期:2013-10-24 21:01:23CU十二周年纪念徽章
日期:2013-10-24 15:41:34IT运维版块每日发帖之星
日期:2016-01-27 06:20:0015-16赛季CBA联赛之新疆
日期:2016-06-07 14:10:01
8 [报告]
发表于 2014-07-01 09:58 |只看该作者
试试
  1. $dbh =DBI->connect("dbi:Oracle:$oradb", $orauser,$orapsw);
复制代码
$oradb这个和你用sqlplus时的连接串一致(在tnsnames.ora定义)

论坛徽章:
0
9 [报告]
发表于 2014-07-01 10:14 |只看该作者
$oradb, $orauser, $orapsw 也在tnsnames.ora中定义?
我的tnsnames.ora是这么定义的:
orcl100 =
         (DESCRIPTION =
              (ADDRESS_LIST =  
                  (ADDRESS = (PROTOCOL = TCP)(HOST = LYJ)(PORT = 1522))
               )  
               (CONNECT_DATA =  
                     (SERVICE_NAME = oral )
               )
            )

可以吗?

回复 8# laputa73


   

论坛徽章:
0
10 [报告]
发表于 2014-07-01 10:20 |只看该作者
目前我是用我的代码连接我本地机子上的数据库
回复 8# laputa73


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP