问题背景:

刚进入公司不久的BI新手,最近接部门的一个交接项目,需要在SQL Server上通过openquery来获取Oracle数据库的数据。各种配置,各种设置折腾了一周之久。在此,将自己的问题解决过程拿出来与大家分享。这里需要强调一点,网络资源虽然强大,但是每个人的问题一定是specific的,切忌生搬硬套。

系统配置:Windows server 2012 R2,64bit Intel Xeon 8 threads,48GB Memory;

预装软件:VS 2012 32bit,SQL Server 2014 64bit,Oracle Client 11g 32bit;其中,所有盘符及其子文件均已设置SQL SERVER\Agent均有读写、可执行权限。

在以上条件下,SSMS中的Linked server无法显示Oracle provider,ODBC中也没有Oracle home的驱动。因此,无法直接通过openquery来操作Oracle数据库的表。

解决方案:

问题的解决从一周前说起。

刚开始,本人信息检索能力比较差,很久都没有找到有效信息。基本在Oracle Community、MSDN、Stackoverflow这三个社区找到点信息。但试了一下均不奏效。其中有一个帖子说在安装64bit的Oracle database后问题解决了,但是不知道是何原因。

接下来,一位同事遇到相同的问题,我给他说,我听说过database的解决方案但没有尝试。接下来,他在Work station上安装了database也成功在SSMS中通过openquery链接了Oracle数据库。但是,当我想自己装的时候,他说不确定自己装的是哪个版本的database。经确认他装的是32bit,并在2008版的SSMS上。接下来他推荐我先安装32bit的database试一下。

1)安装32bit Oracle数据库 (失败)

我首先尝试公司软件库中的32bit数据库,结果安装成功后,SSMS、ODBC中均无任何反应。在网上又经过搜索,什么system32文件夹dll文件的检查、注册表的修改都做过,没有效果。最后结论,32bitSSMS-->32bitOracle,64bitSSMS-->64bitOracle,所以我想不明白为什么那个同事的是32bit的。

然后,我就卸载Oracle 32bit的数据库。。。各种坑。。。(按照网上完全卸载来做的)

2)安装64bit Oracle数据库 (无法安装)

按照网上的卸载过程,注册表需要删除,但是由于Oracle的注册表系列对32bit Client端和database是通用的,所以卸载完成后,Client端也不能用了。连带构建的SSIS包也无法使用,32bit的Oracle Provider失效。于是,就必须重装32bit Client端。。。

Oracle 11g安装包的通病是,它无法兼容Win7及以上版本,于是,调整setup.exe文件为Vista兼容模式。最终,安装成功。测试后32Bit Oracle Provider亦能正常使用。那么,就接着安装64bit的database。

新的问题又出现了!database安装包的setup.exe点击后出现黑框后,接下来就没有反应了!!!无论是否设置兼容模式,均是这种情况。接下来,分别测试了64bit Client端、32bit database、32bit Client端、64bit instant Client、32bit instant Client均出现类似情况,令人苦闷至极!最后,回到很久以前使用的方法,ODAC 64bit Xcopy,然而并没有什么卵用,命令提示符下安装ODAC竟然Access denied。

3)转机,命令提示符下安装64bit Client端

在此时,我已十分沮丧,在网上搜索解决方案,然而也是令人失望。。。网上建议大致为重装系统、盘符空间大小问题、重装32bit SSMS、问答无结果。然而,由于服务器牵涉用户较多且我费了九牛二虎之力方将现有的job在SSMS上部署成功,因此,上述解决方案均不适用。无意中,看见博客园袁晓平关于64bit SSMS通过ODBC链接32bit Oracle的帖子(http://www.cnblogs.com/yuanxiaoping_21cn_com/archive/2013/11/20/3433020.html),让我重新燃起希望。里面提到要同时安装32bit和64bit Client端,然后,修改注册表,构建ODBC DSN,在SSMS中利用ODBC进行链接。其中,两种Client端是同时安装的,而我的情况是已经安装了32bit。

先不管,试试64bit Client端。然后,打开安装包,setup.exe一闪而过。。。我瞬间石化,仿佛又回到了问题的起点,始终无法进入Universal Installation界面。设置兼容模式亦是如此。不过,我还是决定试试通过命令提示符来启动.exe文件。首先,将所有的兼容模式disable掉,然后在命令提示符下cd到安装文件夹,直接安装。UI界面出来了,这一刻我激动万分。

4)修改配置文件改变兼容性

就在高兴的时候,安装检测,系统版本不兼容。我将兼容性设置后,再用命令提示符打开,结果一闪而过。然后,我就拼命搜索有关Oracle安装,兼容性设置问题。有一个博客园帖子提到,在安装database时,可以添加当前系统版本到配置文件xxx.xml,就可以通过系统检测。我想Client端必定也存在此类文件,果不其然,被我找到了。

首先,进入解压后安装包路径,进入\client\stage\prereq目录,找到prerequisite.properties配置文件,打开。有如下信息:

prerequisite_input=client/client_prereq.xml
rulemap=oui/rulemap.xml;common/rulemap.xml
knowledgesource=oui/knowledgesrc.xml
reffiles=client/refhost.xml;client/refhost_instantClient.xml
javalibs=oui/OraPrereqChecks.jar; client/clientprereq.jar

每行等号相当于指向了一个具体配置文件的位置,下来,检查系统版本的配置文件最可能在黑色标记的行。但是最好还是一个个找。根据第一行,猜测文件应在\client目录下,于是找到\client\stage\prereq\client目录下果真有client_prereq.xml,然后,打开检查。发现refhost.xml文件夹中有这么一段

<CERTIFIED_SYSTEMS>
  <OPERATING_SYSTEM>
    <!--Microsoft Windows 2000-->
    <VERSION VALUE="5.0"/>
    <SERVICE_PACK VALUE="1"/>
  </OPERATING_SYSTEM>

</CERTIFIED_SYSTEMS>

于是,我根据自己系统版本,添加记录为

<OPERATING_SYSTEM>
    <!--Windows Server 2012 R2-->
    <VERSION VALUE="6.2"/>
    <SERVICE_PACK VALUE="1"/> 
</OPERATING_SYSTEM>

然后,用命令提示符安装setup.exe文件,结果安装成功。

5)配置ODBC,配置SSMS Linked Server (成功)

最后,在64bit ODBC中可以找到Oracle home1的driver,于是,修改Oracle Client安装目录下的tns文件,ODBC测试连接成功。

在SSMS中,新建Linked Server,直接选择Oracle provider for ole db,输入相应配置,在Security选项输入用户名、密码,测试成功。修改Linked server中Oraoledb.provider的配置,选中Allow in process,利用openquery测试,成功。回过头在测试原来32bit下的SSIS包和已部署的agent job,均不影响。

至此,64bit SSMS连接并获取32bit Oracle数据全部成功结束。

SQL Server 2014 64位版本链接32位Oracle数据库的更多相关文章

  1. Linux 64位编译\链接32位程序

    测试机器:Ubuntu14.04 64位 gcc编译32位程序,添加参数-m32: $ gcc -c -fno-builtin -m32 TinyHelloWorld.c ld链接32位代码,添加参数 ...

  2. win10 64位IIS链接32位ACCESS数据库

    window10中IIS运行.asp文件链接数据库时出现错误,显示“An error occurred on the server when processing the URL. Please co ...

  3. SQL Server 2014 各版本介绍

    SQL Server 2014 各版本介绍 目前,SQL Server 2014 分为主要版本和专业版. 在选择版本的时候可以根据您具体的需要进行抉择,如果你需要一个免费的数据库管理系统,那么就选择 ...

  4. SQL SERVER 2014 安装图解(含 SQL SERVER 2014 安装程序共享)

    开篇介绍 2015年1月1日,新的一年开始之际,本来应该好好做点有意义的事情来跨个年的.结果,老习惯 - 睡觉之前一定要折腾一下电脑,说干就干,给新到的 DELL 电脑装虚机,下载 SQL SERVE ...

  5. Sql Server 2014完全卸载

    经历过好多次Sql server的安装与卸载,有时发现自己卸载的费时费力,单纯地卸载个软件就要吐血了,那么现在我觉得是时候整理一下了. 1.在运行中输入services.msc,然后找到所有跟Sql ...

  6. 转:SQL SERVER 2014 安装图解(含 SQL SERVER 2014 安装程序共享)

    开篇介绍 2015年1月1日,新的一年开始之际,本来应该好好做点有意义的事情来跨个年的.结果,老习惯 - 睡觉之前一定要折腾一下电脑,说干就干,给新到的 DELL 电脑装虚机,下载 SQL SERVE ...

  7. 谈谈我的微软特约稿:《SQL Server 2014 新特性:IO资源调控》

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 撰写经历(Experience) 特约稿正文(Content-body) 第一部分:生活中资源 ...

  8. SQL Server 2014 新特性:IO资源调控

    谈谈我的微软特约稿:<SQL Server 2014 新特性:IO资源调控> 2014-07-01 10:19 by 听风吹雨, 570 阅读, 16 评论, 收藏, 收藏 一.本文所涉及 ...

  9. SQL Server 2014内存优化表的使用场景(转载)

    最近一个朋友找到走起君,咨询走起君内存优化表如何做高可用的问题 大家知道,内存优化表作为In-Memory OLTP功能是从SQL Server 2014开始引入,用来对抗Oracle 12C的In- ...

随机推荐

  1. ubuntu下使用 chkconfig 是一种习惯

    ubuntu下使用 chkconfig 是一种习惯 习惯了chkconfig命令, 闲来写了个脚本模拟下, 步骤很简单. 如下: 第一步, 安装sysv-rc-conf sudo apt instal ...

  2. mysql 5.7 root密码重置(centos 7)

    mysql5.7版本之后,与mariadb不同,在安装之后,在启动之时,会进行自动随机密码的设定,所以在systemctl start mysqld之后,会出现mysql -uroot -p无法登陆的 ...

  3. 从equals和==的区别开始

    今天我要谈的,不是具体的一个小程序的设计,也不是什么高大上的遗传算法群体智能什么什么的理念.今天我想就非常简单的一个问题,深入地解释一些东西,把自己的一些看法传达给大家.我相信,认真看下去,大家会有所 ...

  4. swipe和swiper的区别

    swipe.js--移动WEB页面内容触摸滑动类库 参考http://www.jiawin.com/swipe-mobile-touch-slider 1.swipe只提供简单轮播切换,底部的圆点颜色 ...

  5. POJ 2593 Max Sequence

    Max Sequence Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 17678   Accepted: 7401 Des ...

  6. RabbitMQ教程(一)——安装配置

    RabbitMQ教程(一)——安装配置 一.前言 由于最近在学习RabbitMQ消息队列,但是鉴于网上对于官网介绍的教程比较少或者由于时间长长期未更新,因此决定将对官网的RabbitMQ入门教程进行翻 ...

  7. ESLint入门

    ESLint是一个用于识别和报告ECMAScript/JavaScript中代码格式的工具,目的是使代码风格更加统一和避免错误. 1.安装和使用有两种方式去安装ESLint:全局和本地. 1.1本地安 ...

  8. CentOS7开机提示welcome to emergency mode!after logging in...

    CentOS7.3昨天用的还好好的的,但是今天开机提示如下(如图提示): welcome to emergency mode!after logging in ,type "journalc ...

  9. 【社交系统ThinkSNS+研发日记三】基于 Laravel Route 的 ThinkSNS+ Component

    [社交系统ThinkSNS+研发日记系列] 一.<ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1> 二.<基于 Laravel 开发 Th ...

  10. UNIX 技巧: UNIX 高手的另外 10 个习惯

    让我们面对现实吧:坏习惯很难改变.但是您已经熟悉的习惯可能更难克服.有时,重新审视某些事情可能让您遇到“啊哈,我没想到它能做到这一点!”的时刻.在 Michael Stutz 的优秀文章“UNIX 高 ...