医院病案系统部署的是ORACLE 11G,his系统部署的是SQL SERVER2008,现在病案上报的时候省平台接口中新增了医生身份证字段。但是医院员工信息是维护在his中的。病案查询时调用的是ORACLE中的视图,也没有找到之前两个数据库的链接方式,就尝试了下ODBC访问。查找资料的过程中,发现网上博文经常把透明网关(gateway)的配置和ODBC混淆以及相关参数说明不清楚,这里记录下:
环境说明:
病案服务器OS:windows server 2016
病案数据库: ORACLE 11G
HIS服务器OS:windows server 2016
HIS数据库:SQL SERVER2008
第一步:配置ODBC
1)win+r 搜索ODBC 因为是64位系统,所以选择ODBC数据管理程序(64位)
2)系统DSN-----》添加
我这里因为之前配置好了,就直接选择这个点击配置给大家看个过程就好了,大家选择添加
第二步:检查并配置dg4odbc
进入dos窗口运行 dg4odbc看是否出现如下情况:
如果是则表示dg4odbc驱动安装成功,如果提示系统无该命令,则可以到E:\app\Administrator\product\11.2.0\dbhome_1\BIN oracle安装目录下查看是否有该工具,如果有则是安装了没有配置windows系统环境变量,那么只需要将该路径添加到PAT环境变量中即可
第三步:配置initodbc.ora
到该路径下:E:\app\Administrator\product\11.2.0\dbhome_1\hs\admin 找到 initdg4odbc.ora文件,进行备份,然后更改一个名字(可自己指定,但后续要用到该名字),我自己更名位initodbc_sql,然后进去进行配置:
第四步:配置linstener.ora
到该路径下配置监听信息:E:\app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN
可以将源linstener.ora文件备份更名,方便错误时还原。其配置内容如下:
第五步:重启监听服务
进入到dos然后执行:
lsnrctl stop
lsnrctl start
注意看命令是否执行成功,如果步成功,请检查以上两个配置文件
第六步:配置DBLINK
到oracle的SQL窗口执行如下语句:
创建DBLINK:
create public database link 自己指定的链接名 connect to 所连数据库的用户名 identified by 所连数据库的密码 using '(description=
(address= (protocol=tcp)(host=127.0.0.1)(port=1521))
(connect_data=(SID=odbc_sql)) ----自己的配置文件为initodbc_sql.ora,所以这里为odbc_sql
(HS=OK)
)';
备注:有的博客host填写的是oracle的服务器ip地址,也行,我这里填的oracle服务器的回环地址也是一样的。port端口如果被占用的话就填1522,当然我这里没有被占用,就用的默认的1521
查询DBLINK创建是否成功执行:
select * from dba_objects where object_type='DATABASE LINK';
如果查询的到信息就表示创建成功。
如果不需要该DBLINK也可以执行下面的语句删除:
drop public database link 自己指定的链接名
第七步:验证访问情况
select 字段 from SQL SERVER数据库表单名/视图@自己指定的链接名
eg:
SELECT USER_ID,UESR_NAME,IDCARD from comm.users@POWER