SSIS连接Oracle参考.docx_第1页
SSIS连接Oracle参考.docx_第2页
SSIS连接Oracle参考.docx_第3页
SSIS连接Oracle参考.docx_第4页
SSIS连接Oracle参考.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SSIS连接Oracle参考Wu ShuoVanceinfo相关知识:1, 理解服务器之间的访问机制:连接oracle的时候,是按照SQL Server 引擎的版本去载入oracle provider的版本。如果SQL Server是64bit的,只能载入64 bit oracle的provider。32bit的SQL Server只能使用32bit的oracle的provider。2, 很多SQL Server的图形界面工具都是32bit的,比如SSIS,32位的 import/export wizard,这些32bit的工具只能load 32 bit的oracle provider。如果想知道这个工具是不是32bit的,去检查工具所对应的exe文件是不是在program files(x86)子路径下,或者在进程管理器中检查是否带有32字样。3, Linked server或SSIS去 连接oracle的时候,首先会读取tnsname.ora文件,然后读取sqlnet.ora文件,然后用SQLServr.exe直接去连oracle,连接成功以后会再次读取tnsname.ora文件,然后开始载入oracle OLEDB的DLL文件。在64位操作系统上安装的32位SQL Server中,读到的路径是这样的:(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=18)(PORT=1521)(CONNECT_DATA=(SID=express)(CID=(PROGRAM=D:Program Files (x86)Microsoft SQL ServerMSSQL.1MSSQLBinnsqlservr.exe)(HOST=SCT-IT-SQLTEST)(USER=SYSTEM)在64 bit的操作系统上按照32 bit的SQL Server服务器以及32 bit的oracle客户端,是可以创建linked server和SSIS程序包的。但是,oracle在处理包含括号文件全路径名称时有个bug,这个bug在8i,9i和10g的版本上都存在。必须通过打oracle的补丁来解决。4, 如果使用64 bit的SQL Server服务器和64 bit 的oracle 客户端,linked server和SSIS是可以工作的。但是oracle在64 bit的OLEDB provider上有个bug,会导致连接服务器访问失败。报错信息如:Msg 7333, Level 16, State 2, Line 1Cannot fetch a row using a bookmark from OLE DB provider OraOLEDB.Oracle for linked server .这个问题在32位环境下使用32位 MSDAORA (Microsofts OLEDB Provider for Oracle) provider或者32-bit ORAOLEDB (Oracles OLEDB Provider) provider时不会发生。只发生在使用64-bit ORAOLEDB provider时(MSDAORA没有64位版本存在)。5, 如果在一个64 位的SQL Server上想同时使用linked server和SSIS的BIDS去连oracle,必须要同时安装64 位和32位的oracle客户端。但是,在oracle 10g早期的版本中,貌似有一个bug导致oracle 10g的32 位和64 位客户端无法同时在一台机器上工作。我这次在11g和10g上都安装了双客户端,没有遇到这个问题,但不确定该问题是否已经被解决。6, 32 位上还可以使用oracle的ODBC driver 创建ODBC数据源,然后在创建连接的时候使用Microsoft OLEDB for ODBC provider 然后指向oracle的ODBC数据源。如果是64位的SQL Server 2005,默认安装是没有64bit的Microsoft OLEDB for ODBC provider的。需要去下载并安装64 位 Microsoft OLEDB for ODBC provider,然后就可以按照同样的方法使用oracle的ODBC。/downloads/details.aspx?FamilyID=000364db-5e8b-44a8-b9be-ca44d18b059b&displaylang=en7, 使用oracle ODBC provider比较容易遇到中文字符的问题,建议尽量使用OLEDB的provider。步骤:1, 根据Oracle版本(10g或11g),安装相对应的64位客户端Administrator模式,并配置相应的LISTENER和SERVICE NAME。2, 安装32位Administrator模式客户端,并配置相应的LISTENER和SERVICE NAME。3, 在SSIS中使用Oracle Provider for OLEDB连接即可。常见问题:1, 设计时运行正常,运行时报TNS无法解析的错误。在BIDS设计环境下,只有32位的本地服务命名可以正确连接。而在运行时需要64位程序调用包时(例如SQLServer存储过程),则需要改为64位命名。因此,我建议在双客户端下都建立本地服务命名,并以包配置的形式保存连接字符串。这样在切换运行环境时,只需要修改一下连接串中的命名即可。2, 遇到Oracle数据可以预览,但执行ETL出错的问题。检查SSIS工程属性,将Run64BitRuntime置为False。3, 执行包正常,用作业调用时包卡住。检查包日志。一般来说此类问题是SQL Server Agent操作账号的权限不够,无法获取全部Oracle连接信息导致。将SQL Server Agent操作账号从Local System改为Administrator即可。4, RAC集群连接当配置oracle客户端服务名以便应用程序访问ORACLE数据库时,一般使用oracle实例的虚IP。这样当ORACLE RAC 中的一个实例DOWN掉后,ORACLE RAC会自动切换到另一个实例。但是通过这样配置的ORACLE 服务名,客户端在利用它连接ORACLE数据库时,会经常提示ORA-12545错误。关于连接Oracle RAC 找不到主机问题,请尝试以下方法看是否能解决:方法一:修改ORACLE客户端所在的机器上的HOSTS文件来解决这个问题。HOSTS文件位于C:WindowsSystem32driversetchosts 。在hosts文件中加入ORACLE RAC节点的主机名解析,包括虚IP。例如,当前我们线上环境ORACLE RAC的配置为:节点1:实际IP: 7 虚拟IP:3 主机名: zsxtdb1-vip节点2:实际IP: 6 虚拟IP:4 主机名: zsxtdb2-vip则可在HOSTS文件中加入:7 zsxtdb1-vip3 zsxtdb1-vip6 zsxtdb2-vip4 zsxtdb2-vip 再次通过客户端访问ORACLE数据库,问题解决。方法二:在DNS服务器中加入ORACLE RAC节点的主机名解析(这个需要网络服务器配置,无需修改客户端)另附TNS配置信息供参考:ZSXT =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = zsxtdb2-vip)(PORT = 1521)(ADDRESS = (PROTOCOL = TCP)(HOST = zsxtdb1-vip)(PORT = 1521)(LOAD_BALANCE = yes)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = zsxt)ZSXT2 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = zsxtdb2-vip)(PORT = 1521)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = zsxt)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论