透明网关

透明网关

用途:  可以在Oracle数据库中通过dblink访问非Oracle数据库的数据信息。

概念:  透明网关是一种代理机制,通过它可以实现Oracle数据库对非Oracle数据的透                                                                           明访问。

环境:  Oracle11gMySQL ODBC驱动 ,(同一服务器上可以有MySQL也可以没有, 但一定得有要连接的非Oracle数据库的ODBC 驱动)。

https://dev.mysql.com/downloads/connector/odbc/

 

配置:

1.  开始——管理工具——数据源(ODBC)——系统DSN——(无显示驱动,要自己添加),添加你想为其添加数据源的驱动程序(即下载的ODBC驱动)——点击完成之后,会出现MySQL...connector/odbc进行配置。

具体内容:

2. DataSourceName:  是自定义的,不区分大小写;后续配置init*.ora时会用到。

3. TCP/IP Server:  要连接的非Oracle数据库所在服务器的IP地址;

4. 默认端口号:3306,要是端口号被占用,TEST测试时,会报错:

Connect failed [mysql][ODBC 5.3(a)] cant connect to mysql server on ip地址(10060)

(错误也可能是防火墙导致)

5. user: Oracle数据库的用户名:eg:MySQL的用户名是root;要大写,否则会报错:

Connect failed [MySql][ODBC 5.3(a) Driver] Access denied for user root@WIN-FPJK73HCG35 (using password:YES)

(要是MySQLOracle在一台服务器上应该不需要大写,不太确定......?!......)

6. password

7. Database:  数据库名,一般得大写,统一服务器不确定;

8. Character Set: 若乱码可配置改为别的格式;在detail中修改。

9. Test:测试是否连接成功,连接成功会弹出  connection successful...

----------------------------------------------------------------------------------------------

 

完成之后进行透明网关的配置:

init*.ora     listener.ora     tnsnames.ora

1.  init*.oraOracle的安装路径下;app\Administrator\product\11.2.0\dbhome_1\hs\admin

2.  Listerner.oratnsnames.ora

app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN

3.  init*.ora命名规则* 需要注意   * ,SIDSID_NAME必须一致

HS_FDS_CONNECT_INFO = <odbc data_source_name>

HS_FDS_TRACE_LEVEL = <trace_level>

 

   参数说明:

   HS_FDS_CONNECT_INFO=ODBC数据源管理中的DSN名称(在2中的自定义DataSourceName

   HS_FDS_TRACE_LEVEL=OFF

  (追踪级别参数,出于性能考虑一般不配置或者配置为OFF,若网关需要跟踪日志,则配置为Debug,跟踪文件存放在hs\trace目录)

4.  配置网关监听:

 

 

SID_LIST_LISTENER=

  (SID_LIST=

      (SID_DESC=

         (SID_NAME=dg4odbc)

         (ORACLE_HOME=f:\app\Administrator\product\11.2.0\dbhome_1)

         (PROGRAM=dg4odbc)

      )

  )

SID_NAME:  3个值必须保持一致,是网关的SID

ORACLE_HOME: 是Oracle的安装目录

PROGRAM: 指定监听服务响应  ODBC连接请求的可执行程序

5.  需要重启监听服务,才能成功:

Lsnrctl stop

Lsnrctl start

6. 配置TNS

   dg4odbc  =

  (DESCRIPTION=

    (ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))

(CONNECT_DATA=

   (SID=dg4odbc)

)

    (HS=OK)

  )

   1)这儿最上边的dg4odbc是默认的,需要咱自己定义TNS连接名称(创建dblink时会用到)

   2)必须是SIDSERVICE_NAME不可以,不知道为啥......?!......

   3PROTOCOL  有两种TCPIPC,资料显示dg4odbc时就用TCP,未知......

   4HS:指定连接的是非Oracle数据库,必须有。

----------------------------------------------------------------------------------------------

 

配置dblink

   可以在sqlplus中创建dblink,也可以在Oracle数据库进行创建:

创建语句:

  Create database link 自定义名 connect to 用户名(ROOT idntified by 密码 using TNS连接名;

(一般用户名和密码都用双引号括起来,避免Oracle在大小写上做自动转换,TNS连接名用单引号)

   测试可以在Oracle数据库中查非Oracle数据的信息:

Eg: select * from user@orcltomysql

 User表是MySQL的,orcltomysqldblink自定义的值;

增删查改都一样,只需要在表的后面@dblinkname

 

----------------------------------------------------------------------------------------------

 

补充:

1. ODBC数据源管理器:

   应用程序要访问一个数据库,首先必须用ODBC注册一个数据源,管理器根据数据源提供的数据库位置,数据库类型及ODBC 驱动程序等信息,建立起ODBC与具体数据库的联系。(只要应用程序将数据源名提供给ODBCODBC就能建立起与相应数据库的连接)

2. DNS:

 Data Source Name: 数据源名称

DNSODBC定义了一个确定的数据库和必须用到的ODBC驱动程序。每个ODBC程序定义为该驱动程序支持的一个数据库创建DNS需要的信息.。  (安装一个ODBC驱动程序以及创建一个数据库之后,必须创建一个DNS

     DNS分三种:

1)用户数据源:

   这个数据源对于创建它的电脑来说是局部的,并且只能被创建它的用户使用。

2)系统数据源:

   这个数据源属于创建它的计算机并且属于这台计算机而不是创建它的用户。(任何用户只要拥有适当的权限就可以访问这个数据源)

3)文件数据源:

   这个数据源对底层的数据文件来说是确定的,即,这个数据源可以被任何安装了合适驱动程序的用户使用。

 

 

遇见的错误:

ORA-12154TNS:无法解析指定的连接标识符

“TNS”:could not resolve the connect identifier specified

错误原因:(HS=OK)写成了HS=OK

-------------------------------------------------------------------------------------

ORA-12560:TNS:协议适配器错误

(未解决)

--------------------------------------------------------------------------------------

ORA-12541TNS:无监听程序

1)服务开启

2)Sqlplus检验(tnsping 实例名)

3)Tnsnames.ora文件,中修改localhost值胃本机的IP地址

4)重新配置监听名称:

Dos命令——netca,在弹出的窗口中进行监听程序配置;

重新配置

Tnsping 实例名 进行验证

--------------------------------------------------------------------------------------

TNS-01155:在listener.ora中指定SID_LIST_LISTENER参数不正确

NL-00303NV 字符串中存在语法问题,监听程序未启动。

错误原因:配置SID_LIST_LISTENER时少了一个“)”。

--------------------------------------------------------------------------------------

ORA-00987:用户名缺失或者无效。(创建dblink时的错误)

错误原因:创建dblink时,用户名和密码都用了单引号,需要用双引号。

--------------------------------------------------------------------------------------

 

ORA-00911:无效字符......

错误原因:cmddos 命令创建时多了一个“;”

--------------------------------------------------------------------------------------

ORA-01017invalid username/password;logon denied

错误原因:登录时大小写或者错误

--------------------------------------------------------------------------------------

ORA-02063preceding line from

(不记得怎么解决得了)

--------------------------------------------------------------------------------------

ORA-28500:连接ORACLE到非Oracle系统时返回此信息:

[Microsoft][ODBC驱动管理器]未发现数据源名称并且未指定默认驱动程序<IM002>

错误原因:init*.ora配置文件中的HS_FDS_CONNECT_INFO=......名称与DSN不一致

--------------------------------------------------------------------------------------

ORA-28500:连接ORACLE到非Oracle系统时返回此信息:

[Microsoft][ODBC驱动管理器]未发现数据源名称并且未指定默认驱动程序<IM002>

错误原因:将ODBC创建连接时,创建在用户DNS下,而不是系统DNS下。

--------------------------------------------------------------------------------------

ORA-28500:连接ORACLE到非Oracle系统时返回此信息:

[MySql][ODBC 5.3 <a> Driver Access denied for user ‘...’@’CN-20170414RWMN’<using password :YES><HY000,NativeErr=1045>......]

错误原因:创建dblink是用户名小写了

--------------------------------------------------------------------------------------

 

ORA-02047:无法联接运行中的分布式事务

(重启之后就好了,未知)

--------------------------------------------------------------------------------------

安装MySQL ODBC 驱动时报错:

ERROR 1918.Error installing ODBC driver MySql ODBC 5.3 ANSI Driver,ODBC error 13:无法加载MySQLODBC 5.3......驱动程序的安装例程,因为存在系统错误代码126:找不到指定的模块。......

错误原因:系统缺少文件

下载VC 地址:

http://www.pc6.com/softview/SoftView_94058.html

--------------------------------------------------------------------------------------

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Oracle透明网关是Oracle数据库提供的一种技术,它允许用户在Oracle数据库中透明地访问其他非Oracle数据库,如SQL Server、DB2、Sybase等。透明网关的安装和配置需要在Oracle数据库服务器上进行,并在Oracle数据库中创建相应的透明网关链接。透明网关的作用类似于一个桥梁,使得用户可以使用SQL或PL/SQL语言访问其他数据库中的数据,而不必关心其他数据库的技术细节。需要注意的是,透明网关是一个单向网关,只能从Oracle数据库访问其他非Oracle数据库,而不能反过来访问Oracle数据库。透明网关在Oracle数据仓库和数据迁移中扮演着重要的角色。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *3* [oracle透明网关](https://blog.csdn.net/m0_47254108/article/details/129630663)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Oracle Database Gateways透明网关的安装和配置](https://blog.csdn.net/qfjewq/article/details/130237207)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值