Oracle读写SQLServer数据表
2024-04-09 本文已影响0人
xiaojieLu
最近有一个业务需求,需要在Oracle和SQLServer之间进行一些数据交互。之前一般是通过单独的同步工具来进行的,这次由于操作逻辑比较简单,就准备通过Oracle网关来实现,顺便记录操作步骤。
-
下载 Oracle Database 11g Database Gateway 11.2.0.1.0 ( Oracle Database Gateway for SQL Server )
如果无法从官网下载,可以从百度网盘下载
https://pan.baidu.com/s/1x-CDiAVNg0YrgZ2X0JFZNg?pwd=yiky
-
为了方便,我们直接在服务器上安装Gateway,安装时注意选择安装目录。
-
进行配置
Oracle服务器基本信息 version 11g ip 192.168.1.10 port 1521 SQLServer服务器基本信息 version 2008R2 ip 192.168.1.20 port 1433 DatabaseName erp
进入Oracle安装目录下的
dg4msql/admin
目录下,拷贝initdg4msql.ora
文件为新的initMSERP.ora
。并编辑内容为:
HS_FDS_CONNECT_INFO="192.168.1.20:1433//erp" --这里设置SQLServer数据库的地址,端口,和访问的数据库。 注意端口后是双斜线。 HS_FDS_TRACE_LEVEL=OFF HS_FDS_RECOVERY_ACCOUNT=RECOVER HS_FDS_RECOVERY_PWD=RECOVER
进入Oracle安装目录下的
NETWORK/admin
目录修改
listener.ora
,增加监听SID_LIST_LISTENER = (SID_LIST = (SID_DESC = (SID_NAME = PLSExtProc) (ORACLE_HOME = D:/oracle/product/11.2.0/db_1) (PROGRAM = extproc) ) (SID_DESC= (SID_NAME=MSERP) --对应dg4msql\admin目录下的init文件 (ORACLE_HOME=D:/oracle/product/11.2.0/db_1) (PROGRAM=dg4msql) )
检查
sqlnet.ora
文件SQLNET.AUTHENTICATION_SERVICES= (NTS,NONE) NAMES.DIRECTORY_PATH = (TNSNAMES, HOSTNAME)
修改
tnsnames.ora
文件SQLSERVER = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.10)(PORT = 1521)) ) (CONNECT_DATA = (SID = MSERP) ) (HS = OK) )
重启监听
lnsrctl stop lsnrctl start
打开SQLPlus ,创建DBLINK
create public database link ms_link connect to "sa" identified by "sa" using 'SQLSERVER'; --这里替换为自己的访问SQLServer的用户名和密码。 select * from test@ms_link; 就可以查询到SQLServer中的ERP数据库的test表数据内容。同样更新删除也是可以的,只要dblink的访问用户有权限即可。
至此完工。