怎样从SSIS (64位)连接上远方的oracle 10g数据?
0
系统是windows Server 2008R2 SP1,
数据库是SQL Server 2012
安装了oracle11g, oracle 10g 64位客户端和 oracle 32位客户端。tnsname也都配置好。但是,在SSIS中新建连接到远方的oracle 10 g 数据库,不通。
现象1:
如果用Native OLE DB\Oracle Provider for OLE DB, 测试连接出错为 ORA-12154
现象2:
如果用Native OLE DB\Microsoft OLE DB Provider for Oracle,测试连接报错为 ORA-06413
求高手指点
数据库是SQL Server 2012
安装了oracle11g, oracle 10g 64位客户端和 oracle 32位客户端。tnsname也都配置好。但是,在SSIS中新建连接到远方的oracle 10 g 数据库,不通。
现象1:
如果用Native OLE DB\Oracle Provider for OLE DB, 测试连接出错为 ORA-12154
现象2:
如果用Native OLE DB\Microsoft OLE DB Provider for Oracle,测试连接报错为 ORA-06413
求高手指点
没有找到相关结果
重要提示:提问者不能发表回复,可以通过评论与回答者沟通,沟通后可以通过编辑功能完善问题描述,以便后续其他人能够更容易理解问题.
14 个回复
yabei - 大数据时代,谁也离不开BI 2013-11-30 回答
赞同来自: 梁勇
1.格式化电脑,重装操作系统和SQL Server 2012。因为看到有一种说法是64位的SQL Server安装的路径中有program file (X86),这个括号影响oracle客户端工作。在未重做系统前,卸载重装不能改变这个安装路径,可能是卸不干净的问题。重装的时候指定了文件路径和共享路径为c:\sqlserver,但是在运行时,发现visual studio2010的实际路径仍在program file (X86)下。
- 安装oracle 10g 32位客户端,再安装oracle10g 64位客户端,有顺序要求。在安装前要修改一下文件,否则系统报错,装不上。
~ 编辑安装包内文件 database/stage/prereq/db/refhost.xml增加下面节点
<OPERATING_SYSTEM>
<VERSION VALUE="6.1"/>
</OPERATING_SYSTEM>
~ 编辑安装包内文件 database/install/oraparam.ini
找到小节 在下面的第二行中增加windows版本6.1,如下面所示
Windows=4.0,5.0,5.1,5.2,6.1
至此,在net manager中建立和oracle的连接,测试是连通的,但是在SSIS中连不上。
3.安装oralce 11g 32位,然后安装oracle 11g64位。安装完成后,修改注册表。
(1) For both 32-bit and 64-bit installations, open up REGEDIT and make the following registry changes:
HKEY_LOCAL_MACHINE\Software\Microsoft\MSDTC\MTxOCI
OracleOciLib contains the value oci.dll
OracleSqlLib contains the value orasql11.dll (old value is SQLLib80.dll)
OracleXaLib contains the value oraclient11.dll (old value is xa80.dll)
(2) For 64-bit installations only:
HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\MSDTC\MTxOCI
OracleOciLib contains the value oci.dll
OracleSqlLib contains the value orasql11.dll (old value is SQLLib80.dll)
OracleXaLib contains the value oraclient11.dll (old value is xa80.dll)
(3) You must reboot your server for the changes to apply. Reboot your server.
参考文章 http://social.msdn.microsoft.c ... -2012
然后把在oracle 10g下的TNSNAME文件拷贝到各个版本的客户端下。
在SSIS project name上右键选属性,在debuging下,把运行64位改成false。
最后,抱着如果不成功,就把电脑砸了的心情,在SSIS中测试连接到oracle数据库,成功了!
梁勇 - 天道酬勤、上善若水。爱好商业智能 2013-11-22 回答
赞同来自:
yabei - 大数据时代,谁也离不开BI 2013-11-22 回答
赞同来自:
但是在SSIS中就报错。我把tnsname.ora文件拷贝到client\network\admin下了,也不行
biee新手 - 新手求带 2013-11-22 回答
赞同来自:
分配权限: SQL>grant dba to ts;
然后在用 ts登录进去看看。还有根据 ORA-06413 这个错误编码,你是不是安装 Oracle在 (x86)这个目录下安装的,可能 SSIS解析不了这种特殊的字符。
liangf 2013-11-22 回答
赞同来自:
yabei - 大数据时代,谁也离不开BI 2013-11-22 回答
赞同来自:
yabei - 大数据时代,谁也离不开BI 2013-11-22 回答
赞同来自:
# Generated by Oracle configuration tools.
KJJC =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.67.27.5)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora815)
)
)
YQSJS =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.67.27.5)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora815)
)
)
KJDZ =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.67.27.5)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora815)
)
)
yabei - 大数据时代,谁也离不开BI 2013-11-22 回答
赞同来自:
梁勇 - 天道酬勤、上善若水。爱好商业智能 2013-11-22 回答
赞同来自:
liangf 2013-11-22 回答
赞同来自:
即:
zhoutiea - 小小白沙 2013-11-29 回答
赞同来自:
雁儿 - 成都IT 2014-04-23 回答
赞同来自:
梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-04-23 回答
赞同来自:
梁勇 - 天道酬勤、上善若水。爱好商业智能 2014-05-28 回答
赞同来自: