又一次在项目中用到了在SQLServer添加Oracle链接服务器,发现之前文章写的也不太好使,那就再总结一次吧。
1、安装OracleClient
安装64位,多数SQLServer是64位,所以OracleClient也安装64位的;
再一个一般安装的Oracle11g
2、修改tnsnames.oRA
添加需要链接Oracle数据的连接串,如:
test =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST =Oracle数据库服务器ip或机器名)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = Oracle服务ID)
)
)
3、尝试通过SQLDeveloper连接
这个需要安装java,运行SQLDeveloper需要选择java.exe路径,而且这里需要是32位的java SDK
这个时候可能会提示“ORA-12638: 身份证明检索失败”,需要修改sqlnet.ora
这是由于Oracle的认证方式导致的,使用了本地操作系统认证(NTS),修改为口令文件认证(NONE)即可
这个时候SQLDeveloper可以正常登录了
4、SQLServer创建链接服务器
其中:提供程序选择Oracle那一项,产品名称填写Oracle,数据源填写tnsnames.oRA配置的连接名,访问接口字符串空着。
左侧点击“安全性”,右边选择使用此安全上下文建立连接,输入连接Oracle数据的账户、密码。
确定,但是连接可能提示“无法从链接服务器"TEST"的 OLE DB 访问接口OraOLEDB.Oracle"获取所需的接口
访问接口--Oracle Provider for OLE DB,勾选允许进程内,问题解决。
5、一个问题的说明
一开始我在本地测试可以了,但是到了正式环境发现个问题,我用SQLDeveloper可以连上Oracle数据库,但是通过命令行sqlplus 用户名/密码@ora文件的连接名,一直不行,提示“OLEDB 访河接口 oraoLEDB.Orade"返回了消息ORA-12514: TNS: 监听程常当箭无法识别连接描述符中请求的服务”。(Microsoft soL server,错误:7303)”
整好那边有个高手,让改了下ora文件的SERVICE_NAME,再去SqlServer看链接服务器,瞬间测试连接成功。
其实我们多数时候通过SQLDeveloper连接Oracle数据库,是用的SID
借助上面思路,试了下,改为服务名,还是用SID的值,发现连不上;服务名改为ora文件人家让改的值,可以通。
看来确实还是有不一样的。
get,但还未知其所以然。
查了下,大概意思:这俩默认可以一样也可以不一样,SID实例ID,服务名称就是服务名称了。
可以实例ID不一样,但是服务名称一样,即多个服务器节点一个数据库。
先这样,以后理解多了,再完善。