引言
和第三方公司进行接口对接时,发现某一个模块第三方只提供一个视图,还让我们直接调用他们数据库;下面我就开始了Sql Server服务器远程链接Oracle服务器的旅程。
目录
- 引言
- 安装Oracle数据访问组件ODAC
- 1. ODAC包下载地址
- 2. ODAC包解压缩
- 3. ODAC包安装
- 4. 设置环境变量
- 5. 配置tnsnames.ora文件
- 6. 注意事项
- 7. 遇到的问题
- Sql Server 远程连接Oracle
- 1. 图形界面创建Oracle链接服务器
- 2. 命令创建Oracle的链接服务器
- 3. 遇到的问题:
- 总结
安装Oracle数据访问组件ODAC
Oracle数据访问组件ODAC(Oracle Data Access Components)顾名思义就是用来访问Oracle数据库的小程序
1. ODAC包下载地址
- ODAC官方下载地址
- 必须选择Oracle对应的版本号,我这边是64-bit ODAC 12.2c Release 1 (12.2.0.1.0) Xcopy for Windows x64
- 下载的安装包名:ODAC122010Xcopy_x64.zip
2. ODAC包解压缩
- 在Sql Server服务器上创建一个目录,将工具压缩包解压到该目录下;然后打开目录;
- 目录下一共有8个文件夹,分别是:
1. instantclient_11_2:这是Oracle客户端,所有组件的运行都依赖于这个客户端;基础包
2. oledb:这是OLE DB组件
3. asp.net:这是ASP.NET2组件
4. asp.net4:这是ASP.NET4组件
5. odp.net4:这是.NET4组件
6. odp.net20:这是.NET2组件
7. oramts:这是Oracle的MTS服务
8. network:这个文件夹不用管,它是用来存放tnsnames.ora文件的,要安装后才能用。
3. ODAC包安装
- 使用”管理员”打开CMD,并进入到ODAC包的解压目录下,执行命令:
install.bat all D:\ERP_Oracle Oracle true
- 下面是对执行命令的参数介绍:
1. 第一个参数:all。all代表安装解压目录下文件夹下所有的组件和客户端。如果你不需要这么多组件,只用到其中一个,比如只用到了OLE DB组件,就可以像下面这样只安装客户端和这一个OLE DB组件:install.bat oledb D:\ERP_Oracle Oracle
;
2. 第二个参数:D:\ERP_Oracle。这是安装路径,根据自己的实际情况指定,路径中尽量不要有空格、圆括号、汉字;
3. 第三个参数:Oracle。这个叫ORACLE HOME NAME,这个参数可以自定义一个字符串,不一定非得是”Oracle”。这个参数是用来写入注册表的。比如,上面这条语句执行后,会在注册表的以下位置写入(HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\KEY_Oracle),这”KEY_“后面的Oracle就是你在参数中传入的那个”Oracle”;
4. 第四个参数: true。一般只用前三个参数就够了,在安装组件的时候会自动把它依赖的组件都安装上,但如果你只想安装指定的组件,不想装它所依赖的组件,这时才会用到第四个参数。比如:当你安装asp.net时,如果只用前三个参数,会自动把它所依赖的odp.net20和instantclient_11_2也安装上,但如果你再传入第四个参数”false”,如下:install.bat asp.net D:\ERP_Oracle Oracle false
这时就只会安装asp.net,而不会把odp.net20和instantclient_11_2也装上。
4. 设置环境变量
- 添加环境变量:ORACLE_HOME=D:\OracleClient
- 将环境变量添加到Path中PATH=%ORACLE_HOME%;%ORACLE_HOME%\bin
5. 配置tnsnames.ora文件
- 如果要用组件访问Oracle数据库,那么就要根据需要配置tnsnames.ora文件,并存放于D:\ERP_Oracle\network\admin目录下
- 在D:\ERP_Oracle\network\admin\sample目录下复制tnsnames.ora文件到D:\ERP_Oracle\network\admin
- 打开tnsnames.ora文件并修改,请参考下面:
6. 注意事项
- 用cmd进入到ODAC的安装路径下,然后运行该路径下的uninstall.bat批处理文件:
uninstall.bat all D:\ERP_Oracle
- install.bat和uninstall.bat两个批处理文件会在安装目录下分别产生install.log和uninstall.log两个日志文件
7. 遇到的问题
- 第一个问题
- 产生原因:按照1-6步完成,重启服务器后,服务(OracleOracleMTSRecoveryService)没有启动成功,原因是执行D:\ERP_Oracle\bin\omtsreco.exe报错:
- 解决方法:查询安装程序中是否安装了Microsoft Visual C++ 2015 Redistributable(x64);不限于2015版本
- 第二个问题
- 产生原因:多次打开Sql Server的链接服务器不会出现“Oracle Provider for OLE DB”
- 解决办法:重新安装ODAC工具包
Sql Server 远程连接Oracle
Sql Server 版本:2019(15.0.2000.5)
Oracle 版本:12c(12.2.0.1.0)
Windows Server版本:2016
1. 图形界面创建Oracle链接服务器
1.1 打开SSMS以sa身份登录,在左侧的“对象资源管理器”窗口中展开“服务器对象”节点,在其下的“链接服务器”节点上右键选择“新建链接服务器…”,如图:
1.2 在弹出的“新建链接服务器”对话框中,按照图示填写,具体说明如下:
- 链接服务器:链接服务器的别名
- 其他数据源(服务器类型):选择“其他数据源”
- 提供程序:(64位系统)选择Oracle Provider for OLE DB
- 产品名称:一定是“Oracle”,这是固定写法,只要是链接Oracle数据库都得这么写
- 数据源:需要链接的Oracle数据库名称
- 访问接口字符串:可以不填写,也可以填写:MSDASQL
1.3 在弹出的“新建链接服务器”对话框中,按照图示填写,具体说明如下:在“安全性”栏的右边选择最下面的“使用此安全上下文建立连接”,然后在下面输入连接到ora(根据自己的实际情况来更改)数据库的用户名和密码。
1.4 将服务器选项中的RPC、RPC Out 置为True
1.5 待上述步骤全部完成后,点击确定按钮,如果正常的话,就可以成功链接服务器到Oracle数据库了。
2. 命令创建Oracle的链接服务器
下面两条命令语句补全,然后在SQL Server中执行即可创建成功:
-- 创建链接服务器EXEC master.dbo.sp_addlinkedserver @server = N'别名', @srvproduct=N'库名',@provider=N'MSDAORA', @datasrc=N'TNS名'-- 链接数据库及登录EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'别名', @locallogin = NULL ,@useself = N'False', @rmtuser = N'模式名', @rmtpassword = N'密码'
3. 遇到的问题:
- 第一个问题
- 产生原因:在创建链接服务器,填写完最后确定时,报“无法创建链接服务器 “ORA” 的 OLE DB 访问接口 “OraOLEDB.Oracle” 的实例”错误
- 解决方法:在SSMS->链接服务器->访问接口->OraOLEDB.Oracle的地方右击“属性”出现下面的框,选中“允许进程内”
- 产生原因:在创建链接服务器,填写完最后确定时,报“无法创建链接服务器 “ORA” 的 OLE DB 访问接口 “OraOLEDB.Oracle” 的实例”错误
- 第二个问题
产生原因:在创建链接服务器,填写完最后确定时,报“ORA-12154: TNS:could not resolve the connect identifier specified”错误
解决方法:重新检查tnsnames.ora文件中的配置是否正确。
总结
- 世上无难事,只怕有心人