如果在oracle 中显示sqlserver的数据库?就如同在sqlserver中建与oracle的链接一样的功能 如果在oracle 中显示sqlserver的数据库?就如同在sqlserver中建与oracle的链接一样的功能这样我直接在oracle中查询删除等操作sqlserver中的数据库. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没有,只能Oracle之间db link 我这几天正在测试9i的透明网关,整理出一些东西。一、在网关所在机器上 1、安装oracle透明网关(ORACLE TRANSPARENT GATEWAY)for mssql server。该网关必须运行在WINDOWS平台上,且机器上还必须安装SQL SERVER客户端。 2、在%oracle_home%\tg4msql\admin目录下,创建名为init<SID_NAME>.ora的连接参数文件文件。SID_NAME就是下一步需要配置listener时的SID_NAME。网关安装后会有一个名为initTG4MSQL.ora的参数文件。关键是要设置正确的HS_FDS_CONNECT_INFO参数,HS_FDS_CONNECT_INFO参数的格式是HS_FDS_CONNECT_INFO="SERVER=服务器别名或IP地址;DATABASE=数据库名",选用服务器别名,应该先在SQL SERVER客户端中配置别名。 如果需要配置多个网关连接不同的sql server服务器或数据库,为每个服务器或数据库配一个SID_NAME。如果是需要用不同的SQL SERVER用户连接同一个数据库,也最好为每个用户名配一个SID_NAME。 3、在%oracle_home%\network\admin目录下,修改listener.ora,为上一步的每个SID_NAME创建监听项。假设oracle_home是d:\oracle\ora92,为tg4msqlHZ增加的监听项如下:SID_LIST_LISTENER = (SID_LIST = (SID_DESC = ... ) ... (SID_DESC= (SID_NAME=tg4msqlHZ) (ORACLE_HOME=d:\oracle\ora92) (PROGRAM=tg4msql) ) )二、在oracle数据库服务器上1、为需要连接的SQL SERVER数据库(也就是一.3中的新加的监听)在tnsnames.ora中创建本地服务名。注意,CONNECT_DATA项是用SID=XXX,且一定要设置HS=OK。如为连接192.168.112.112上的tg4msqlHZ创建一个名为msqlHZ的本地服务名如下:msqlhz = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.112.112)(PORT = 1521)) ) (CONNECT_DATA = (SID = tg4msqlHZ) ) (HS=OK) )三、oracle数据库中 1、为需要连接的SQL SERVER数据库(也就是在二.1中配置了本地服务名)创建DBLINK。如为本地服务名是msqlhz创建一个名为HZ的DBLINK,使用sql server的sa用户,口令是aaaaaacreate public database link HZ connect to SA identified by aaaaaa using 'msqlhz';四、其他事项 1、即使SQL SERVER是设置为大小写不敏感的,但oracle通过TG4MSQL访问SQL SERVER时,还是会按SQL SERVER系统表中登记的对象名来判断对象是否存在,因此,如果在SQL SERVER中按create table t_test(c1 int, ...)来创建的表,那么在oracle中想查找c1为10的记录就必须写为select * from t_test@DBLINKNAME where "c1"=10; 2、按oracle配置手册上说可以在oracle中直接执行SQL SERVER的存储过程,但如果存储过程的拥有者不是DBLINK所设置的用户,那么直接执行存储过程会报“表或视图不存在”。解决的办法是通过dbms_hs_passthrough.execute_immediate来执行存储过程。 3、在oracle中通过网关访问SQL SERVER后,一定要提交事务。包括执行select。 4、如果是通过网关同步数据,最好是先将要同步的数据全插入SQL SERVER的中间表,然后在SQL SERVER中执行存储过程来判断哪些是要修改哪些是要新插入。这样做效率很高。否则通过网关来比较两边的数据会很慢。而且要控制不要频繁提交。 我发现一个问题,好像不能在一个事务中同时对多个网关的数据做更新。正在找答案。 在toad建了表看不见 execute immediate vsql0 into vsum sql语句 oracle 行锁 对多线程同时insert 有影响吗? 有什么好的第三方ORACLE的SQL编辑工具能像MS SQLSERVER的查询分析器那样多命令自由编辑? 一条SQL语句.... oracle中伪列的问题?? oracle如何在客户端导出导入数据库!?!?!?! 请教,大家用什么语言和工具制作网站查询oracle数据库?? 一个关于UPDATE的问题,请教各位??? 如何在存储过程中使用spool?? 为什么单纯的select语句会报回滚段不足?
一、在网关所在机器上
1、安装oracle透明网关(ORACLE TRANSPARENT GATEWAY)for mssql server。该网关必须运行在WINDOWS平台上,且机器上还必须安装SQL SERVER客户端。
2、在%oracle_home%\tg4msql\admin目录下,创建名为init<SID_NAME>.ora的连接参数文件文件。SID_NAME就是下一步需要配置listener时的SID_NAME。网关安装后会有一个名为initTG4MSQL.ora的参数文件。关键是要设置正确的HS_FDS_CONNECT_INFO参数,HS_FDS_CONNECT_INFO参数的格式是HS_FDS_CONNECT_INFO="SERVER=服务器别名或IP地址;DATABASE=数据库名",选用服务器别名,应该先在SQL SERVER客户端中配置别名。
如果需要配置多个网关连接不同的sql server服务器或数据库,为每个服务器或数据库配一个SID_NAME。如果是需要用不同的SQL SERVER用户连接同一个数据库,也最好为每个用户名配一个SID_NAME。
3、在%oracle_home%\network\admin目录下,修改listener.ora,为上一步的每个SID_NAME创建监听项。假设oracle_home是d:\oracle\ora92,为tg4msqlHZ增加的监听项如下:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
...
)
...
(SID_DESC=
(SID_NAME=tg4msqlHZ)
(ORACLE_HOME=d:\oracle\ora92)
(PROGRAM=tg4msql)
)
)二、在oracle数据库服务器上
1、为需要连接的SQL SERVER数据库(也就是一.3中的新加的监听)在tnsnames.ora中创建本地服务名。注意,CONNECT_DATA项是用SID=XXX,且一定要设置HS=OK。如为连接192.168.112.112上的tg4msqlHZ创建一个名为msqlHZ的本地服务名如下:
msqlhz =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.112.112)(PORT = 1521))
)
(CONNECT_DATA =
(SID = tg4msqlHZ)
)
(HS=OK)
)三、oracle数据库中
1、为需要连接的SQL SERVER数据库(也就是在二.1中配置了本地服务名)创建DBLINK。如为本地服务名是msqlhz创建一个名为HZ的DBLINK,使用sql server的sa用户,口令是aaaaaa
create public database link HZ
connect to SA identified by aaaaaa
using 'msqlhz';四、其他事项
1、即使SQL SERVER是设置为大小写不敏感的,但oracle通过TG4MSQL访问SQL SERVER时,还是会按SQL SERVER系统表中登记的对象名来判断对象是否存在,因此,如果在SQL SERVER中按create table t_test(c1 int, ...)来创建的表,那么在oracle中想查找c1为10的记录就必须写为
select * from t_test@DBLINKNAME where "c1"=10;
2、按oracle配置手册上说可以在oracle中直接执行SQL SERVER的存储过程,但如果存储过程的拥有者不是DBLINK所设置的用户,那么直接执行存储过程会报“表或视图不存在”。解决的办法是通过dbms_hs_passthrough.execute_immediate来执行存储过程。
3、在oracle中通过网关访问SQL SERVER后,一定要提交事务。包括执行select。
4、如果是通过网关同步数据,最好是先将要同步的数据全插入SQL SERVER的中间表,然后在SQL SERVER中执行存储过程来判断哪些是要修改哪些是要新插入。这样做效率很高。否则通过网关来比较两边的数据会很慢。而且要控制不要频繁提交。 我发现一个问题,好像不能在一个事务中同时对多个网关的数据做更新。正在找答案。