以文本方式查看主题

-  昂捷论坛  (http://enjoyit.com.cn/bbs/index.asp)
--  □-技术研讨会  (http://enjoyit.com.cn/bbs/list.asp?boardid=36)
----  [分享]SQL_Server2008链接Oracle操作手册  (http://enjoyit.com.cn/bbs/dispbbs.asp?boardid=36&id=8156)

--  作者:zlg169
--  发布时间:2011/10/11 10:51:57
--  [分享]SQL_Server2008链接Oracle操作手册
SQL_Server2008链接Oracle操作手册
走了好多弯路,不过终于成功了,现将正确的步骤整理如下,供大家阅览:
一、 目前SQL Server 2008 连接Oracle有两种访问接口,分别是Microsoft ODBC for Oracle(MSDAORA)和Oracle Provider for OLE DB(OraOLEDB.Oracle),这两种访问接口有本质的不同,Microsoft ODBC for Oracle是微软提供的只支持32位的SQL Server数据库,而且只支持到oracle 8i;Oracle Provider for OLE DB是甲骨文提供的支持64位的SQL Server数据库,同时也支持更高版本的Oracle数据库,Oracle Provider for OLE DB(OraOLEDB.Oracle)访问接口在安装完Oracle数据库客户端之后就可以在SQL Server 配置管理器的链接服务器访问接口里面看到。
图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看
因此,在链接SQL Server 2008和Oracle之前先确定SQL Server 2008的版本(32位or 64位)。注:这里以64位SQL Server 2008为例。
二、 安装oracle客户端软件:
1、下载oracle 11 的客户端
需要在安装有SQL_Server2008数据库的服务器上,安装oracle客户端,可以去Oracle 官网下载,下载时需要注册 http://www.oracle.com/us/solutions/midsize/112010-win64soft-094461.html, 比如“win64_11gR2_client”。
2、安装oracle 11 的客户端
下载完成后需要解压进行安装,可以根据需求去安装,一般以管理员方式安装,
图片点击可在新窗口打开查看此主题相关图片如下:2.png
图片点击可在新窗口打开查看
里面会包括用于配置客户端设置的工具、sqlplus等一系列的工具。
图片点击可在新窗口打开查看此主题相关图片如下:3.png
图片点击可在新窗口打开查看
3、配置Oracle11客户端
3.1、手工配置
安装成功后,在Oracle 客户端安装目录下如:
F:\\app\\Administrator\\product\\11.2.0\\client_2\\network\\admin创建一个这样的文件
tnsnames.ora ,在里面配置如下服务器的相关信息,比如
ORA8 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 210.6.1.106)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora8XDB)
)
)
ORA8为服务命名,HOST为服务器的IP地址,PORT为Oracle数据库的端口,SERVICE_NAME为Oracle数据库的监听服务名,监听服务名和Oracle数据库名略有不同,可以通过命令去查看,以下以Oracle数据库安装Linux服务器为例进行查看:
首先,在开始运行中键入cmd进入命令行,敲入telnet 后面跟Linux服务器地址(例如telnet 210.6.1.106)如下图(注意:Win7和Win2008默认是关闭telnet功能的,可以通过控制面板——程序和功能——打开或关闭Windows功能来开启telnet功能,如下图
图片点击可在新窗口打开查看此主题相关图片如下:4.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:5.png
图片点击可在新窗口打开查看
然后敲回车,键入Lunix服务器的用户名和密码,如下图
图片点击可在新窗口打开查看此主题相关图片如下:6.png
图片点击可在新窗口打开查看
键入用户名和密码,后敲回车便进入了Lunix服务器的命令行管理界面,如下图
图片点击可在新窗口打开查看此主题相关图片如下:7.png
图片点击可在新窗口打开查看
然后敲入Lunix服务器下命令行查看Oracle数据库监听服务的命令lsnrctl [start/stop/status],顾名思义start是开始监听服务的,stop是停止监听服务的,而这里我们只需要查看监听服务的状态,因此键入lsnrctl status就可以查看到Oracle数据库监听服务名,如下图红色标记
图片点击可在新窗口打开查看此主题相关图片如下:8.png
图片点击可在新窗口打开查看
3.2通过net manager进行配置 打开net manager工具如下图,里面有概要文件、服务命名和监听程序,概要文件里方法选取TNSNAMES即可,监听程序是在Oracle服务器端配置的,客户端不需要配置;
图片点击可在新窗口打开查看此主题相关图片如下:9.png
图片点击可在新窗口打开查看
由于论坛限制图片太多,因此转二楼(抱歉哈)
[此贴子已经被作者于2011-10-14 9:53:17编辑过]

--  作者:zlg169
--  发布时间:2011/10/11 10:59:33
--  
着重需要对服务命名进行配置,点击服务命名后,点击左边的加号,进入配置界面,如下图
图片点击可在新窗口打开查看此主题相关图片如下:10.png
图片点击可在新窗口打开查看
输入网络服务名,比如上面的ORA8或者TEST均可,只是一个名称,然后下一步,如下图
图片点击可在新窗口打开查看此主题相关图片如下:11.png
图片点击可在新窗口打开查看
选择TCP/IP协议,下一步,如下图
图片点击可在新窗口打开查看此主题相关图片如下:12.png
图片点击可在新窗口打开查看
主机名为Oracle数据库的服务器IP地址,端口号是Oracle数据库的端口号,然后下一步如下图
图片点击可在新窗口打开查看此主题相关图片如下:13.png
图片点击可在新窗口打开查看
服务名即为我们上述通过Linux命令行查看的Oracle监听服务名,这里为ora8XDB,输入之后,点击下一步,如下图进行测试
图片点击可在新窗口打开查看此主题相关图片如下:14.png
图片点击可在新窗口打开查看
点击测试,输入Oracle数据库用户名和密码进行测试,如下图
图片点击可在新窗口打开查看此主题相关图片如下:15.png
图片点击可在新窗口打开查看
点击关闭后,完成即可,便可在目录如 F:\\app\\Administrator\\product\\11.2.0\\client_2\\network\\admin中查看tnsnames.ora文件。
三、 创建链接服务器
SQL_Server2008链接Oracle必须要在Oracle客户端配置tnsnames.ora文件,下来创建一个名称为jf的链接服务器,数据访问接口选择Oracle Provider for OLE DB,产品名称为Oracle,数据源要访问的oracle服务器上的要访问的那个数据库,然后输入访问oracle的用户名和密码,根据个人情况更改,更改执行后便可测试
exec sp_addlinkedserver @server=\'jf\', --链接服务器名称
@srvproduct=\'Oracle\', --数据库产品名称
@provider=\'OraOLEDB.Oracle\', --数据访问接口
@datasrc=\'ORA8\' --要访问的数据库名称
go
exec sp_addlinkedsrvlogin @rmtsrvname = \'jf\', --链接服务器名称
@useself = \'false\',
@locallogin = \'sa\', --本地数据库用户名
@rmtuser = \'jrmd_join\', --Oracle数据库用户名
@rmtpassword = \'jrmd_join\' --Oracle数据库密码
四、 通过链接服务器访问Oracle数据库
SQL的写法有两种
1、 使用T-SQL语法:
SELECT * FROM JF..JRMD_JOIN.WFG001
注意:在这种方式下取数,如果在oracle中声明表的时候表明用了引号,此处的表明必须和oracle中一致,否则全部使用大写,不然会提示找不到表。
2、使用PLSQL语法:
select *from openquery(jf,\'select *from jrmd_join.WFG001\')
注意:第二种访问方式比第一种约快50%;第二种访问方式跟直连ORACLE的速度相当。
因此,使用那种语法显而易见了。
--  作者:wangxiaoxiao
--  发布时间:2011/10/11 14:43:38
--  

不错


--  作者:wangxiaoxiao
--  发布时间:2011/10/14 15:21:41
--  

补充:和版本有关

“允许进程序内”打上勾

才可以用。