ORACLE 创建DBlink访问SQL SERVER数据库
oracle连接ODBCsqlserver数据源的详细步骤
oracle连接ODBCsqlserver数据源的详细步骤⼀. 添加数据源ODBC1.打开数据源或者2.添加数据源3.选择SQL Server4.名称:输⼊ODBC数据源名称描述:随意服务器:输⼊sqlserver服务器名5.SQLSERVER登陆⽤户:登录ID⼀般是:sa ;密码:只有你知道6.选择你连接的数据库7.完成8.测试⼀下⼆.检查DG4ODBC驱动是否已经安装⽅法如下:在Oracle服务器上,cmd窗⼝中执⾏命令(dg4odbc或hsodbc)上图代表安装了DG4ODBC驱动(如果没有安装,需⾃⾏下载安装,此处不介绍具三.配置hsodbc此⽬录下默认存在initdg4odbc.ora,复制这个⽂件,粘贴到上图⽬录中,并将后复制的⽂件改名为initdddb.ora,⽤记事本打开就该配置并保存如下图四.配置监听listener(服务端透明⽹关监听)五.重启监听在命令提⽰符窗⼝依次输⼊如下命令停⽌监听:lsnrctl stop启动监听:lsnrctl start六. 配置TNS(客户端服务命名)DDDB:本地oracle服务命名HOST:oracle服务器IPPORT:监听端⼝SID:刚才命名的SID配置七.创建oracle的DBLINK或者不创建第六步,直接创建DBLINKcreate public database link test_sql connect to “sqlserver⽤户名” identified by “sqlserver密码” using ‘(description=(address= (protocol=tcp)(host=xxx.xxx.xxx.xxx)(port=1521))(connect_data=(SID=SID名称))(HS=OK))';⼋.查询select * from 表名@Test_Sqlgetaway到此这篇关于oracle连接sqlserver数据源ODBC的详细步骤的⽂章就介绍到这了,更多相关oracle sqlserver数据源ODBC内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
Oracle使用dblink连接SqlServer
Oracle使⽤dblink连接SqlServerOracle使⽤dblink连接SqlServer使⽤场景:当你需要从ORACLE数据库上访问另⼀台SqlServer数据库的数据时,Oracle提供了⼀个⼯具:gateways。
通过这个⼯具,你可以创建dblink来连接sqlserver或其他不同公司的数据库----取决于你安装时的选项。
安装GATEWAYS后,使⽤下列2种⽅式可创建DBLINK⽅式A:create database link bslinkconnect to "username" identified by "password"using '( DESCRIPTION =( ADDRESS = ( PROTOCOL = TCP )( HOST = remoteIP )( PORT = 1433 ))( CONNECT_DATA = (SID = SQLSERVER数据库名 ) ) ( HS=OK ) ) '这种⽅式是不需要配置initdg4msql.ora和tnsnames.⽅式B:1. 在$ORACLE_HOME/dg4msql/admin/initdg4msql ----这步可省略使⽤⽅式A替代配置initdg4msql.ora,以我的例⼦,如下: ******************************复制代码This is a customized agent init file that contains the HS parametersthat are needed for the Database Gateway for Microsoft SQL ServerHS init parametersHS_FDS_CONNECT_INFO=[192.168.101.4]//bsdata ----只需要修改这个IP//数据库名HS_FDS_TRACE_LEVEL=OFFHS_FDS_RECOVERY_ACCOUNT=RECOVERHS_FDS_RECOVERY_PWD=RECOVER复制代码2. 配置Oracle主⽬录下network\admin⽬录下的listener.ora。
oracle透明网关-dblink直接访问异构数据库
透明网关是oracle的一个中间件工具,作用是实现oracle下通过dblink直接访问非oracle数据库的作用,这也意味着可以实现数据同步。
透明网关版本号须和oracle版本一致最好,目前免费,支持的异构数据库有sqlserver informix sysbase,详细的可参考对应版本的说明。
需到官网单独下载,单独安装,有win版本也有linux版本,可以安装在oracle所在主机,也可以安装在单独的主机,配置上可以参考官网使用指南。
配置上:透明网关里1配好到异构数据库的连接信息(connect info),2配好对连接信息的监听(sid);oracle里1配置好"指向网关主机sid的tns",2监听无需变动;配置完毕,首先检查下open_links,##########open_links beginopen_links是oracle的一个参数,你可以通过sql select * from v$parameter / 命令行show parameter open_links 查看open_links和open_links_per_instance的值即可。
在v$parameter中也有open_links的英文定义:max # open links per session就是每个回话最多更开的连接,如果你需要10个dblink,那么这个值就需要修改,修改语句如下:alter system set open_links = 255 scope =spfile;alter system set open_links_per_instance = 255 scope =spfile;然后重启下数据库生效。
##########open_links endopen_links没问题后,注意设置杀软和防火墙规则允许网关和oracle通讯,随后需要建立到"指向网关主机sid的tns"的dblink,在建立dblink前先看下已有的透明网关,防止重名:select * from dba_objects where object_type = 'DATABASE LINK';想删除用:drop public database link xxx;然后就是建立到"指向网关主机sid的tns"的dblink,建立的语句范例如下:create public database link nm1500car3gdb connect to "ccpqry" identified by "ccpqry" using 'nm1500car3gdb'; 注意tns是单引号,ccpqry是异构库的验证,注意用户名和密码用双引号。
通过ORACLE通用连接访问SQLServer数据库的方法
通过ORACLE通用连接访问SQLServer数据库的方法要通过Oracle通用连接访问SQL Server数据库,需要使用Oracle 的适配器来连接到SQL Server数据库。
以下是通过Oracle通用连接访问SQL Server数据库的方法:1. 安装并配置Oracle通用连接适配器:- 在Oracle数据库服务器上找到适配器的安装目录。
HS_FDS_CONNECT_INFO = server_nameHS_FDS_TRACE_LEVEL = offHS_FDS_SHAREABLE_NAME = /usr/local/bin/libodbc.so其中server_name是SQL Server数据库的主机名。
SID_LIST_LISTENER=(SID_LIST=(SID_DESC=(SID_NAME = odbc)(ORACLE_HOME = /path/to/oracle_home)(PROGRAM = dg4odbc)其中/oracle_home是Oracle数据库的安装目录。
2.配置ODBC数据源:- 在Oracle数据库服务器上安装必要的ODBC驱动程序以连接到SQL Server数据库。
- 在ODBC数据源管理器中配置一个ODBC数据源,以便Oracle数据库可以通过该数据源连接到SQL Server数据库。
- 确保ODBC数据源名称与initodbc.ora文件中的server_name匹配。
3.创建数据库链接对象:- 在Oracle数据库服务器上创建一个数据库链接对象,该对象将用于连接到SQL Server数据库。
-使用CREATEDATABASELINK语句创建数据库链接对象,语法如下:CREATE DATABASE LINK link_nameCONNECT TO username IDENTIFIED BY passwordUSING 'data_source_name';其中link_name是链接名,username是在SQL Server数据库中的用户名,password是对应的密码,data_source_name是ODBC数据源的名称。
oracle访问sqlserver数据库
Oracle访问sql server实战全过程1、创建将要从oracle数据库访问sql server的用户testuser/testuser,并授予可访问turbocms的权限(这里我直接用了sa账号,从安全角度看还是创建一个专用账号比较好)。
二、Gateway的配置(%oracle_home%=e:/oracle/ora92)1、安装oracle9i standard edition 或者oracle9i enterprise edition(ip:10.1.9.159),产品要选择透明网关(oracle transparent gateway)里要访问microsoft sql server 数据库(这一步很重要)。
安装时要选择sql server 主机和数据库,我这里是正确配置的server:10.1.9.220,db:turbocms。
2、安装sql server2000(我这里是完全安装,有人说只要安装sql server2000(安装类型选择“仅连接”)就可以,我没有验证。
)3、Ping sqldb看是否同,若不通则在\winnt\system32\drivers\etc\hosts文件中增加一行,用来解析sqldb的ip地址,很简单不多说了。
4、由于在第一步中我选择的是仅安装软件,所以我在这里需要创建一个监听器。
5、拷贝%oracle_home%\tg2msql\inittg4msql.ora改名为init turbocms.ora这是网关进程启动时需要的初始化文件。
如果是访问多个sql server就需要再新建这个文件并修改HS_FDS_CONNECT_INFO=”SERVER=YOURDBSERVER;DATABASE=YOURDB”其他内容不变。
6、修改$oracle_home\network\admin下listener.ora内容如下:Listener=(description_list=(description=(address_list=(address=(protocol=tcp)(host=10.1.9.159)(port=1521)))))Sid_list_listener=(sid_list=(sid_desc=# (global_dbname=test)# (sid_name=test)没有设置全局名,设置后比较麻烦,(sid_name=plsextproc)(oracle_home=e:\oracle\ora92)(program=extproc))(sid_desc=(sid_name=turbocms)(oracle_home=e:\oracle\ora92)(program=tg4msql))#(sid_desc=#(sid_name=turbocms)访问多个数据库是继续添加本段代码#(oracle_home=e:\oracle\ora92)#(program=tg4msql)))7、重启动这台做gateway的windows机器上(ip:10.1.9.159)tnslistener服务。
Oracle_DB_LINK(连接其他数据库)
DB_LINK:dblink 需要创建以下3个权限(DB_LINK不能通过database link提交commit事务与这些DDL)SQL> select distinct privilege as"database link privileges" from role_sys_privs where privilege in('CREATE SESSION','CREATE DATABASE LINK','CREATE PUBLIC DATABASE LINK');【第一种】创建公有DB_LINK:只要是数据库里的用户都可以使用公有dblinkSQL> create public database link test_dblink connect to user_name identified by "user_passwd" using'test_dblink';【第二种】私有dblink:只能在该数据库中由创建该dblink的用户才能使用和删除,其他用户都不可以使用和删除。
create database link test_dblink connect to itpux identified by "itpux" using'test_dblink';用法:select * from test@itpux编辑TNS:vi tnsnames.ora:ora11g =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = db01)))【第三种】全局的dblink: 和共有私有不同的是global dblink创建不用直接在tnsnames.ora中定义,而是直接把服务写在dblink的定义中create public database link test_dblink connect to user_name identified by "password" using'(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.106.142)(PORT = 1521))) (CONNECT_DATA =(SERVICE_NAME = oracletest)))';(其中,test_dblink是自定义的)本机:select instance_name from v$instance@test_dblink; --服务器的oracle实例是lff-----------------------------------------------------------------------------查看 dblinkselect owner,object_name from dba_objects where object_type='DATABASE LINK';--或者select * from dba_db_links;关闭:alter session close database link test_dblink;删除: drop public database link test_dblink;。
oracle数据库链接服务器查询sqlserver的写法
oracle数据库链接服务器查询sqlserver的写法要在Oracle数据库中链接SQL Server并执行查询,可以使用以下步骤:1. 从Oracle的SQL Developer或其他工具中,使用Oracle提供的JDBC驱动程序链接到SQL Server数据库。
2. 编写一个包含连接字符串的SQL语句。
连接字符串包括SQL Server的IP地址、端口号、数据库名称、用户名和密码。
例如,连接字符串可以是这样的:jdbc:sqlserver://10.10.10.10:1433;databaseName=TestDB;user=sa; password=1234563. 在Oracle数据库中创建一个数据库连接,其中包括连接字符串。
例如,可以使用以下PL/SQL代码创建一个数据库连接:CREATE DATABASE LINK sqlserver_link CONNECT TO "sa" IDENTIFIED BY "123456" USING 'jdbc:sqlserver://10.10.10.10:1433;databaseName=TestDB;user=sa; password=123456';4. 在该连接上执行 SELECT 语句以查询SQL Server数据库中的数据。
例如,可以使用以下SQL代码执行查询:SELECT * FROM mytable@sqlserver_link;这将返回来自SQL Server数据库中名为 'mytable'的表中的所有行。
注意,使用Oracle与SQL Server之间的联接需要一些配置和测试,以确认是否可以正确地连接到SQL Server数据库。
具体取决于您的环境和要求。
Oracle10g 连接 sqlserver hsodbc dblink 方式 非透明网关
Oracle10g 连接sqlserver hsodbc dblink 方式非透明网关
因为要用到一个接口用Oracle到sqlserver中取数所以就研究了下(此为window系统下)
如果用透明网关的话还要下载几百兆的安装文件麻烦所以用hsodbc方式来连接
192.168.5.155 为本机(oracle服务器)的ip
192.168.5.161 为本机(sqlserver2008r2服务器)的ip
1、odbc的建立
2、配置oracle
3、重启监听
用管理员身份登陆
alter system set global_names = false;
---->设置false不要求建立的数据库链接和目的数据库的全局名称一致
创建djys dblink
create database link djys connect to "用户名" identified by "密码" using 'djy';
select * from sqlserver表名@djys t where t.F1='2430100465';
查出数据ok了
4、注意问题如果监听不能启动请检查配置
我遇到的问题lsnrct.Exe 文件都不见了,可能被杀毒的干掉了(如果cmd 执行lsnrctl status 不能执行就是这个问题了。
困扰了我很久啊!)。
通过ORACLE通用连接访问SQLServer数据库的方法
通过ORACLE通用连接访问SQLServer数据库的方法以下的例子,要通过ORACLE通用连接,建立三个ORACLE的DATABASELINK,分别用于访问SQL2000服务器的ET2000,OFSS2000和BK2000数据库.1.在ORACLE服务器上,新建三个ODBC系统数据源,名称分别为ET2000,OFSS2000,BK2000;三个数据源都访问目标的SQLSERVER实例,不同之处仅在与默认连接的数据不同.2.在ORACLE服务器上,ORACLE安装目录(本例中是D:\oracle\product\10.2.0\db_1\)的hs\admin目录下,参照inithsodbc.ora创建initET2000.ora参数配置如下:其中ET2000是默认连接ET2000数据库的ODBC 系统数据源名称HS_FDS_CONNECT_INFO = ET2000HS_FDS_TRACE_LEVEL = 0类似地,创建initOFSS2000.ora和initBK20003.在ORACLE服务器上,ORACLE安装目录(本例中是D:\oracle\product\10.2.0\db_1\)的NETWORK\ADMIN目录下,修改tnsname.ora增加ET2000 =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.2.180)(PORT = 1521)))(CONNECT_DATA =(SID = ET2000))(HS=OK))类似的,增加OFSS2000和BK2000的配置段4.在ORACLE服务器上,ORACLE安装目录(本例中是D:\oracle\product\10.2.0\db_1\)的NETWORK\ADMIN目录下,修改listener.ora在这个段中,增加SID_DESC的配置SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(PROGRAM = extproc))(SID_DESC =(SID_NAME = ET2000)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(PROGRAM = hsodbc))(SID_DESC =(SID_NAME = OFSS2000)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(PROGRAM = hsodbc))(SID_DESC =(SID_NAME = BK2000)(ORACLE_HOME = D:\oracle\product\10.2.0\db_1)(PROGRAM = hsodbc)))5.重启ORACLE服务器TNS服务6.创建ORACLE的DATABASELINK对象ET2000.CREATE PUBLIC DATABASE LINK ET2000CONNECT TO "sa" (user)IDENTIFIED BY "000000" (password)USING 'ET2000' (tns || DBNAME)/类似的建立DATABASELINK OFSS2000和BK2000. 这里用sa用户连接,一般倒数据时用一个有SELECT所有表权限的用户就可以了7.现在就可以使用DATABASELINK通过ORACLE客户端访问SQL 数据库了,例如:SELECT * FROM "tKHXX"@ET2000 访问ET2000库的tKHXX表SELECT * FROM "tOF_JJZH"@OFSS2000 访问OFSS2000库的tOF_JJZH表要注意,表名和字段名最好加双引号,否则会被按大写解析,可能导致报对象不存在的错误.。
oracle透明网关-dblink直接访问异构数据库
oracle透明网关-dblink直接访问异构数据库透明网关是oracle的一个中间件工具,作用是实现oracle下通过dblink直接访问非oracle数据库的作用,这也意味着可以实现数据同步。
透明网关版本号须和oracle版本一致最好,目前免费,支持的异构数据库有sqlserver informix sysbase,详细的可参考对应版本的说明。
需到官网单独下载,单独安装,有win版本也有linux版本,可以安装在oracle所在主机,也可以安装在单独的主机,配置上可以参考官网使用指南。
配置上:透明网关里1配好到异构数据库的连接信息(connect info),2配好对连接信息的监听(sid);oracle里1配置好"指向网关主机sid的tns",2监听无需变动;配置完毕,首先检查下open_links,##########open_links beginopen_links是oracle的一个参数,你可以通过sql select * from v$parameter / 命令行show parameter open_links 查看open_links和open_links_per_instance 的值即可。
在v$parameter中也有open_links的英文定义:max # open links per session就是每个回话最多更开的连接,如果你需要10个dblink,那么这个值就需要修改,修改语句如下:alter system set open_links = 255 scope =spfile;alter system set open_links_per_instance = 255 scope =spfile;然后重启下数据库生效。
##########open_links endopen_links没问题后,注意设置杀软和防火墙规则允许网关和oracle通讯,随后需要建立到"指向网关主机sid的tns"的dblink,在建立dblink前先看下已有的透明网关,防止重名:select * from dba_objects where object_type = 'DATABASE LINK';想删除用:drop public database link xxx;然后就是建立到"指向网关主机sid的tns"的dblink,建立的语句范例如下:create public database link nm1500car3gdb connect to "ccpqry" identified by "ccpqry" using 'nm1500car3gdb'; 注意tns 是单引号,ccpqry是异构库的验证,注意用户名和密码用双引号。
Oracle和Sql Server数据库互访
在我们目前的工作中,经常要用到两种数据库,SQL Server 和Oracle,那么怎么实现两种数据库之间的数据互访呢,以下是我搜集整理的有关这部分的内容,并测试通过。
希望能给各位同事提供一个参考,欢迎拍砖Oracle10g透明网关访问sqlserveroracle的透明网关是oracle直接访问异构数据库的利器。
在9i中,透明网关是包含在数据库安装程序中的,在安装数据库软件过程中可以选择;10g中,oracle把透明网关独立出来,需要单独下载安装。
本文主要讨论在oracle下如何配置透明网关去访问sqlserver数据库。
在11g 之前,for sqlserver的透明网关只能安装在windows操作系统上,从11g开始,for sqlserver的透明网关也可以安装在linux/unix系统中。
本文讨论的是10g下的透明网关,所以,首先要准备一个安装有windows 操作系统的服务器。
在本例中,涉及到三个服务器:ORACLE DB服务器:OS: LINUX AS 4 + ORACLE 10203IP: 10.10.10.1透明网关服务器:OS: WINDOWS XP SP2IP: 10.10.10.2SQLSERVER服务器1:OS: WINDOWS XP + SQLSERVER 2000IP: 10.10.10.3 PORT: 1433SQLSERVER服务器2:OS: WINDOWS XP + SQLSERVER 2000IP: 10.10.10.4 PORT: 1422如果ORACLE DB服务器操作系统是WINDOWS的话,可以把透明网关安装在ORACLE数据服务器上。
下面是详细步骤:一、透明网关连接到一个sqlserver上1、下载透明网关10g下,透明网管是一个单独的组件,需要单独下载安装。
/technology/software/products/database/oracle10g/ htdocs/10201winsoft.html这个安装包有200多m。
Oracle与SQLServer建立DBlink连接
Oracl e 与SQL Server建立DBlink连接设置步骤一、主旨:本操作说明主要用于指导实现Oracle 与SQL Server建立DBlink连接二、要求:(1)Oracle版本需在9i以上(2)SQL Server需在2000 SP3以上三、配置方法与步骤:1、通过ODBC建立连接(1)在Oracle服务器上打开“ODBC数据源管理器”。
路径:开始—>控制面板->管理工具-〉数据源(ODBC)。
(2)选中“系统DSN”选项卡,点击“添加"按钮,在弹出的对话框中选中SQL Server 驱动程序,点击“完成"。
(3)在弹出的对话框中输入数据源名称、描述以及需连接到的SQL Server所在服务器IP或服务器名称,点击“下一步”。
(4)选择SQL Server登陆认证模式,根据SQL Server端认证设置,若集成Window认证则选择“使用网络登陆ID的Windows NT验证”,若未SQL Server认证则选择“使用用户输入登陆ID和密码的SQL Server验证”,此处我们选择第二选项,然后输入登陆ID与密码,点击“下一步”.(5)选择需建立连接的SQL Server数据库,点击“下一步"。
(6)根据需求勾选相关选项,点击“完成”(7)点击测试数据源,若出现“连接失败”,根据《远程连接SQL Server失败错误原因排查说明文档》进行检查,若出现“测试成功",则连续点击两次“确定"完成配置。
(8)打开Oracle安装目录,进入hs文件目录%Oracle_Home%/hs/admin,复制inithsodbc。
ora文件,新命名为inithstest。
ora.命名规则init<SID>。
ora(9)编辑inithstest.ora文件内容如下(10)进入hs文件目录%Oracle_Home%/Network/Admin,修改Oracle listener。
oracle创建dlink方法
当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。
下面讲介绍如何在本地数据库中创建dblink.创建dblink一般有两种方式,不过在创建dblink之前用户必须有创建dblink的权限。
想知道有关dblink的权限,以sys用户登录到本地数据库:select * from user_sys_privs twhere t.privilege like upper('%link%');1 SYS CREATE DATABASE LINK NO2 SYS DROP PUBLIC DATABASE LINK NO3 SYS CREATE PUBLIC DATABASE LINK NO可以看出在数据库中dblink有三种权限CREATE DATABASE LINK(所创建的dblink只能是创建者能使用,别的用户使用不了),CREATE PUBLIC DATABASE LINK(public表示所创建的dblink 所有用户都可以使用),DROP PUBLIC DATABASE LINK。
在sys用户下,把CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK权限授予给你的用户grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott;然后以scott用户登录本地数据库1.创建dblink的第一种方式,是在本地数据库tnsnames.ora文件中配置了要远程访问的数据库。
create public database linkto_bylw connect to scott identified by tiger using 'bylw';其中to_bylw是你创建的dblink名字,bylw是远程数据库的实例名,scott/tiger是登录到远程数据库的用户/密码。
通过数据链接(DatabaseLink),从Oracle9i连接SQLServe...
通过数据链接(DatabaseLink),从Oracle9i连接SQLServe...从Oracle 9i连接SQL Server2000,需要用透明网关(Transparent Gateway),通过它,我们可以 sqlplus 操纵其他数据库,如 ms sqlserver 、 sybase 、 infomix 等,实现数据库的异构服务。
在Oracle 8i中没有透明网关,9i自带,但是默认不安装。
(一)安装Transparent Gateway for Windows SQL Server:*如果在Oracle主目录下有tg4msql文件夹,那么不需要重新安装。
1. 启动Oracle安装盘disk 5里面的setup.exe。
2. 按Next两次,选择Oracle 9i Database 9.2.0.1.0,按Next。
3. 选择Custom,按Next。
4. 按Oracle Transparent Gateway 9.2.0.1.0旁边的"+",选择Oracle Transparent Gateway for Microsoft SQL Server 9.2.0.1.0,按Next。
5. 接着安装。
6. 安装完毕之后,在Oracle主目录下,会有tg4msql文件夹。
(二)配置:我的环境:Oracle 服务器:OS: Windows XP (SP2)IP: 192.168.1.180PORT: 1521SQL 服务器:OS: Windows 2000IP: 192.168.1.213Database Server Name: BIO549Database Name: salesdata1(a)通过tg4msql连接:1. 在Oracle主目录下tg4msql\admin目录下,拷贝inittg4msql.ora并改名为init<SID>.ora。
例如,我用的SID是MSSQL,那么我的文件名是initMSSQL.ora。
oracle 与SQL Server 数据库之间的交互
Oracle 与SQL Server 数据库之间的交互一.使用Oracle 透明网关从oracle 端连Sql Server 数据库Step1 安装oracle 透明网关Condition: 连Sql server 的网关的操作系统必须是window ,因为在网关上还必须得装一个sql sever 的客户端,用于监听sql server 服务器发来的消息。
安装透明网关组件的软件在oracle 安装盘里面,不需要另行下载。
安装方法与步骤:1.启动安装程序以后,选择安装类型为定制2.选择oracle transparent gateways for Miscrosoft Sql Server ,然后点击下一步,装完即可。
Step 2 安装sql server 客户端(这一步不再演示)Step 3 配置透明网关与Oracle 服务器1. 修改ORACLE_HOME/tg4msql/admin下的inittg4msql.ora 文件,配置好参数其中HS_FDS_CONNECT_INFO=jysc.msdb的jisc代表sql server 的服务名,msdb是需要连接的数据库。
2 配置oracle 服务器的listener修改listener.ora 文件,添加以下参数,作用是使监听器能够监听网关发过来的信息(SID_DESC =(PROGRAM = tg4msql)(ORACLE_HOME = D:/OraHome_1)(SID_NAME = tg4msql))其中SID_NAME 可以自己取名。
3 配置网络服务名tnsnameLKSQL =(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = xuchunyang)(PORT = 1521)))(CONNECT_DA TA =(SID = tg4msql))(HS = OK))这里的HOST=xuchunyang ,xuchunyang 是透明网关服务器的服务器名,也可以是主机IP 地址,(SID = tg4msql) 的tg4msql不是固定名,需跟上面listener SID_NAME 一致。
Oracle与SQLserver数据库互建跨库链接
Oracle与SQLserver数据库互建跨库链接日常经常会碰到数据库与数据库之间相互做连接来互相查询或者增删改数据的问题,同类型的数据库之间是比较方便的,比如oracle 就带有DBLINK的功能,可以很方便与同是oracle的数据库做连接,但是不同类型数据库之间的连接就比较麻烦一些,需要做很多设置才能生效,这里就简单的介绍一下oracle与sqlserver之间的连接方式,供参考。
1.建立oracle到sqlserver的跨库链接(采用通用链接方式)建立数据源(odbc)SQL Server 数据源:IP:192.168.3.101DB:DB_CustomSMSUser: userPwd: ********ODBC数据源管理器——系统DSN配置名称、描述(可不填)、服务器IP配置访问的用户和密码配置默认的数据库点下一步继续,完成后可以测试,看看是否通常。
可以在CMD窗口中用 telnet IP 1433(端口)看看是否网络通畅。
ODBC 配置完成。
Oracle配置开始:1) HS配置F:\oracle\product\10.2.0\db_1\hs\admin创建initDB_CustomSMS.ora# This is a sample agent init file that contains the HS parameters that are# needed for an ODBC Agent.## HS init parameters#HS_FDS_CONNECT_INFO = DB_CustomSMSHS_FDS_TRACE_LEVEL = 0#HS_AUTOREGISTER = TRUE## Environment variables required for the non-Oracle system ##set <envvar>=<value>2) 配置listener.ora:路径:F:\oracle\product\10.2.0\db_1\network\admin\listener.ora #listener.ora Network Configuration File:# Generated by Oracle configuration tools.SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc)(ORACLE_HOME = F:\oracle\product\10.2.0\db_1)(PROGRAM = extproc))(SID_DESC =(SID_NAME = DB_CustomSMS) /*注意这里要写sql数据库的sid*/(ORACLE_HOME = F:\oracle\product\10.2.0\db_1)(PROGRAM=hsodbc)))LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1))(ADDRESS = (PROTOCOL = TCP)(HOST = crm)(PORT = 1521)) ))3) tnsnames.ora增加:DB_CustomSMS =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.168.4.8)(PORT = 1521))/*ORACLE 机器的IP*/(CONNECT_DATA =(SID = DB_CustomSMS) /*注意这里要写sql数据库的sid*/)(HS = OK))4) 创建Database links (database 用第3步中的DB_CustomSMS)重启tns5) 测试异构语句的写法select “SM_ID”,”Reserve1″,”RecvTime”,substr(to_char(“RecvTime”,’yyyymmdd hh24mmss’),1,8), substr(to_char(“RecvTime”,’yyyymmddhh24mmss’),10,6)from tbl_SMReceived@sms awhere “DestAddr” =’1065755502938888′and nvl(“Reserve1″,’0′) != 1update tbl_SMReceived@smsset “Reserve1″ = ‘ ‘where “SM_ID”= 81SQL SERVER 2005 通过链接服务器(Linked Server)访问ORACLE 9i 的方法1)在SQL_SERVER 2005服务器上安装Oracle 9i的客户端。
通过Oracle 的 dblink 直接取sqlserver 表中的数据
通过Oracle 的 dblink 直接取sqlserver 表中的数据一、 透明网关1.1 运行图解1.2 原理说明根据上图所示,当ORACLE 服务器接收到客户端请求如业务系统、调度、PLSQL 等请求时,为与导构数据库(如sqlserver 、sysbase 等)进行连接时,会首先连接透明网关,透明网关则作为桥接的方式与其他异构数据库进行连接,并返回数据。
二、 测试环境2.1 硬件清单三、安装步骤准备软件:win64_11gR2_gateways.zip3.1安装步骤如下:解压缩win64_11gR2_gateways.zip,双击setup.exe,进入到透明网关安装界面,如下图所示:点击“下一步”,进入下图指定透明网关安装目录,这里默认即可,点击“下一步”下图是本次透明网关组件列表,这里我们选择Microsoft SQL SERVER,并点击“下一步”接下来进入到配置SQLSERVER地址界面,输入SQLServer主机地址、实例、数据库名称,并点击“下一步”完成上述步骤,点击“安装”,进行本次透明网关安装界面。
在安装完成后,会跳出Oracle Net Configuration Assistant配置,即给透明网关配置listener 和tnsnames。
这里我们选择“执行典型配置”,点击下一步。
程序会默认给透明网关分配一个1522端口的监听和一个空tnsnames.ora文档。
3.2修改配置文件3.2.1init bpmpridb.ora打开D:\app\OraGtw11g_home1\product\11.2.0\tg_1\dg4msql\admin\initdg4msql.ora是我们在输入SQL Server主机地址、实例、数据库后所生成文件。
这里我们根据本次SQL Server实例名pms复制出initpms.ora。
3.2.2listener.ora配置透明网关监听D:\app\OraGtw11g_home1\product\11.2.0\tg_1\NETWORK\ADMIN\listener.ora,添加红色部分内容。
SQL_Server使用DBLink访问Oracle数据库
SQL_Server使用DBLink访问Oracle数据库SQL Server使用DBLink访问Oracle数据库1、准备工作A、在SQLServer数据库所在服务器须安装Oracle客户端,客户端版本不低于Oracle数据库版本;B、在SQL Server数据库所在服务器安装Oracle Client,配置Oracle Net Manager (与Oracle所在服务器配置相同),如下图:C、测试配置是否成功,使用SQLPLUS命令行窗口登录,如果能够登录成功说明配置正确;命令说明:Username/Password@Connect_identifier2、建数据库和相应的表格(例:新建表TXF000HGB01):A、获取Oracle栏位信息B、新建表(注:Oracle相应的栏位的数据类型需要转化为SQL对应的数据类型,如oracle 的varchar2类型对应SQL的varchar类型,number 类型对于numeric类型)新建表TXF000HGB01命令USE [LHERP]GOSET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ONGOCREATE TABLE [dbo].[TXF000HGB01](CO VARCHAR(6) NOT NULL,DTID VARCHAR(4) NOT NULL,VHNO VARCHAR(15) NOT NULL,ITM VARCHAR(7) NOT NULL,DTDAT VARCHAR(12) NOT NULL,NL VARCHAR(1) NOT NULL,PZID VARCHAR(3),TX VARCHAR(4) NOT NULL,STK VARCHAR(12) NOT NULL,DLMK VARCHAR(1),TRDLMK VARCHAR(1),ECMK VARCHAR(1),PI_STATUS char(1) NULL,DT datetime NULL,UPDT datetime NULL) ON [PRIMARY]GOSET ANSI_PADDING OFFGOC、执行新建表命令,表创建成功。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle中使用透明网关链接到Sqlserver
在最近项目中需要从Oracle中访问SQL Server数据库, 自然想到了透明网关. 因为Oracle数据库是Linux上的, 而Linux上的Oracle9i不包括连接到SQL Server的透明网关.就在一台单独的Windows 服务器上安装了透明网关用做Oracle访问SQL Server的桥梁.
环境如下:
Oracle Database Server:Linux + oracle 9.2.0.4 IP:10.194.129.197
Transparent Gateway:Windows 2003 server IP: 10.194.129.225
MS SQL Server:Windows 2003 server + SQL Server 2005 IP: 10.194.129.225
1、Transparent Gateway for SQL Server安装
从Oracle 9i数据库安装光盘setup.exe安装,选择安装客户端
安装类型选择:管理员
安装完客户端后,重新运行setup.exe,安装产品选择Oracle 9i Database 9.2.0.1.0, 安装类型选择"自定义",安装组件选择Oracle Net Services和Oracle Transparent Gateways, 并在此项下选择Oracle Transparent Gateway for Microsoft SQL Server, 安装过程中可以不设置连接到SQL Server 的信息.如下图所示:
以下的IP地址及数据库以实际环境为准
2、编辑%ORACLE_HOME%\tg4msql\admin\init%ORACLE_SID%.ora, 该文件包含了TG for SQL Server的配置信息, 其中%ORACLE_SID%是给TG的"SID", 默认为tg4msql. 修改文件中的行
HS_FDS_CONNECT_INFO="SERVER=10.194.129.225;DATABASE=185life"
其中SERVER后为SQL Server所在的服务器名称或ip地址,Database为连接到的数据库名称.
当然,如果在SQL Server服务器上,有两个sql server实例,则使用‘服务器名"实例名’的方式设置上面的SERVER值,如:
HS_FDS_CONNECT_INFO="SERVER=ZZL\MSSQLSERVER;DATABASE=MSDB"
3、编辑%ORACLE_HOME%"network"admin"listener.ora, 编辑对应listener的SID_LIST
SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME=%ORACLE_SID%)
(ORACLE_HOME=oracle_home_directory) (PROGRAM=tg4msql)
)
)
例如:
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(SID_NAME = tg4msql)
(ORACLE_HOME = d:\oracle\ora92) #oracle的主目录
(PROGRAM = tg4msql)
)
)
其中%ORACLE_SID%必须为第二布中设置的SID, 默认值为tg4msql. 修改listener.ora文件后需重启listener使修改生效.如果没有listener.ora文件,请用Net Configuration Assistant或Net Manager 新建一个LISTENER.
以上操作都是在Transparent Gateway所在机器上。
4、在Oracle服务器上:编辑需要连接到透明网关的Oracle Server的
$ORACLE_HOME\network\admin\tnsnames.ora, 例如:
TG4MSQL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.194.129.225)(PORT = 1521)) )
(CONNECT_DATA =
(SERVICE_NAME = tg4msql)
)
(HS = OK)
)
HOST指向Transparent Gateway所在的机器的IP,Service_name为第3步中的SID_NAME
使用tnsping测试服务名是否连通,命令:tnsping tg4msql。
如果不通,请检查防火墙及网络配置。
5、在Oracle数据库中建立连接, 指向TG for SQL Server.
CREATE DATABASE LINK tg4msql CONNECT TO "user" IDENTIFIED BY "password" USING 'tg4msq
其中tg4msql是tnsnames中建立的连接字符串.
ms sql server的用户名和密码必须小写,而且要加双引号
否则会报如下错误:
错误信息:
ORA-28500: connection from ORACLE to a non-Oracle system returned this messsage:
[Transparent gateway from MSSQL][Microsoft][ODBC SQL Server
Driver][SQL Server]??
'sa'????? (SQL State:28000; SQL Code: 18456)
ORA-02063: preceding 2 lines from LINK_ZZL
错误原因:
在CREATE DATABASE LINK LINK_ZZL的连接字符串中,ms sql server的用户名和密码必须小写,而且要加双引号
6、确保CATHS.sql已被运行。
以SYS用户连接上去,查看有没有SYS.HS_FDS_CLASS,如果没有,运行
$ORACLE_HOME/RDBMS"ADMIN"CATHS.SQL
6、测试, 如运行select * from emp@tg4msql等.
访问dblink时说明:
这是基于网关的方式,因此不能在断开网络的情况下本地的oracle连接本地的ms sql server
否则会报如下错误:
ORA-28545: error diagnosed by Net8 when connecting to an agent
NCRO: Failed to make RSLV connection
ORA-02063: preceding 2 lines from LINK_ZZL
7、BUG解决。
如果在第6步出现以下错误提示,则以SYS运行
ERROR at line 1:
ORA-28522: error initializing heterogeneous capabilities ORA-28522: error initializing heterogeneous capabilities
ORA-28559: FDS_CLASS_NAME is <GTW>9.2.0.5.0_128,
FDS_INST_NAME is <link>
ORA-02063: preceding 3 lines from %s
ORA-00604: error occurred at recursive SQL level 1
ORA-24274: no row exists in the HS$_BASE_CAPS table for these parameters
ORA-06512: at "SYS.DBMS_SYS_ERROR", line 86
ORA-06512: at "SYS.DBMS_HS_UTL", line 431
ORA-06512: at "SYS.DBMS_HS_CHK", line 51
ORA-06512: at "SYS.DBMS_HS_UTL", line 48
ORA-06512: at "SYS.DBMS_HS", line 38
ORA-06512: at line 1。