ORACLE Transparent GateWay相关信息大讨论,跟贴有分!!!

欢迎大家踊跃参与,以便大家共同进步。
---------------------------------------------------------------

随便说说
Oracle Gateways通过中间层应用实现对异种数据源的访问。使用Oracle Transparent Gateway,可以访问多种非Oracle 数据源,例如Sybase、Informix、DB2等。此外,使用Oracle Generic Connectivity,可以访问支持ODBC或OLLE-DB协议的非Oracle 数据源。

但是,oracle 8i支持内嵌的java程序,那么可以用jdbc,一样可以操作异种库。

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

转载

Oracle 普通连接和透明网关

Oracle 提供各种信息集成方案。这些解决方案可以分成两组:同步和异步。关于异步信息集成方案的详细信息,请参阅 Oracle Streams 页。对于同步信息集成,Oracle 提供两种解决方案,即普通连接和透明网关。

Oracle 普通连接
Oracle 8.1.6 中引入普通连接,这一连接解决方案满足了对许多数据存储的数据访问(Oracle 对这一问题没有网关解决方案)需求。该特性允许使用业界标准 ODBC 和 OLEDB 建立透明连接。

Oracle 透明网关
Oracle8i 透明网关为很多 Oracle 环境下透明访问非 Oracle 数据存储提供灵活性、power 和可伸缩性。这些非 Oracle 数据存储包括 Microsoft SQL Server、Informix、Ingres 和Sybase。

“向开发人员咨询”计划

技术信息
1 Oracle9i:Oracle Transparent Gateway for RMS 移植指南
从 RMS v4.1.1的透明网关到 RMS v9.0.1 的透明网关的移植指南。
http://otn.oracle.com/global/cn/products/gateways/htdocs/RMS_Migration_Guide.htm

2 Oracle9i普通连接和透明网关
http://otn.oracle.com/global/cn/products/gateways/gateways_fov.html
3 Oracle9i:普通连接和透明网关
http://otn.oracle.com/global/cn/products/gateways/gateways_fov.html
4 关于普通连接和透明网关的常见问题
http://otn.oracle.com/global/cn/products/gateways/faq.html
5 消息网关
http://otn.oracle.com/products/aq/htdocs/msgwy_ds_html.html

下载
开放系统 Transparent Gateways v9 及更高版本都可从 Oracle 数据库 CD 中获得,并可从 OTN 选择 9i 数据库来下载。

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

ORACLE9i
配置TRANSPARENT GATEWAY FOR SYBASE步骤

1.
安装TRANSPARENT GATEWAY FOR SYBASE选件,要用自定义安装。
正确选择sybase的安装目录

2.
oracle所在服务器上安装sybase client(或者在同一台server上)
确保能够访问sybase数据库

3.
选择一个sid字符串准备赋给sybase数据库。如:tg4sybs
这个SID用来唯一确定一个透明网关实例,其作用就好像是ORACLE的数据库实例SID。
设置SYBASE的dll路径到环境变量PATH,确保ORACLE SERVER可以访问SYBASE数据库的动态连接库。
如果不能访问这些DLL,可以拷贝到WINNT/SYSTEM目录下

4.
修改初始化文件,默认的是:
ORACLE_HOME\tg4sybs\admin\inittg4sybs.ora
设置参数
HS_FDS_CONNECT_INFO
格式:HS_FDS_CONNECT_INFO= server_name. database_name[,INTERFACE= interface_file]
server_name. database_name是大小写敏感的。
INTERFACE可选

例子:如下
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

This is a sample agent init file that contains the HS parameters that are

needed for the Transparent Gateway for Sybase

HS init parameters

HS_FDS_CONNECT_INFO=migration_serv.tax
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER

Environment variables required for Sybase

set SYBASE=d:\sybase
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
上例中
server_name是migration_serv
database_name是tax

5.
配置oracle网络服务的listener,配置文件是:listener.ora
默认路径:ORACLE_HOME\network\admin
加入如下

SID_LIST_LISTENER=
(SID_LIST=
(SID_DESC=
(SID_NAME= gateway_sid)
(ORACLE_HOME= oracle_home_directory)
(PROGRAM=tg4sybs)
)
)

gateway_sid就是3选择的sid字符串
oracle_home_directory是ORACLE_HOME
tg4sybs若是SYBASE是特定的。如果是其他数据库,会不同。
例子如下:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
(SID_DESC=
(SID_NAME=tg4sybs)
(ORACLE_HOME = D:\oracle\ora92)
(PROGRAM=tg4sybs)
)
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

6.
停止监听
重新启动监听程序

7.
配置oracle server的tnsnames.ora使其能够访问sybase
connect_descriptor=
(DESCRIPTION=
(ADDRESS=
(PROTOCOL=TCP)
(HOST= host_name)
(PORT= port_number)
)
(CONNECT_DATA=
(SID= gateway_sid))
(HS=OK))

connect_descriptor是连接串,任取,一般为sybs
host_name:oracle server的name
port_number:oracle监听端口
gateway_sid就是3选择的sid字符串

例子如下:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
sybs=
(DESCRIPTION=
(ADDRESS_LIST =
(ADDRESS=(PROTOCOL=TCP)(HOST= dw-server1)(PORT= 1521))
)
(CONNECT_DATA=
(SID= tg4sybs)
)
(HS=OK)
)

$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

8.建立database link

如:
CREATE DATABASE LINK sybs CONNECT TO SA
IDENTIFIED BY PRIENT
USING 'SYBY' ;

即可访问sybase 数据库
SELECT * FROM MYTAB@SYBS;

请注意大小写问题。如果是小写的,请加"",如:
SELECT * FROM "mytab"@SYBS;

例子如下:
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
SQL> select area_code from tc_public_301@sybs;
select area_code from tc_public_301@sybs
*
ERROR 位于第 1 行:
ORA-00904: "AREA_CODE": 无效的标识符

SQL> select "area_code" from "tc_public_301"@sybs where rownum<10;

area_c
------
020000
020101
020102
020103
020104
020105
020106
020107
020108

已选择9行。
---------------------------------------------------------------

高级数据迁移

很多时间,要在异构数据库之间进行数据迁移或抽取,如果在SQL中提取ORACLE的数据,可以通过ODBC、OLEDB等多种方式,要从ORACLE提取SQL中的数据,大都是通过透明网关来实现的。

在异构数据抽取过程中,最好采用SQL92标准的语法编写SQL代码,同时要注意不同数据库之间数据类型的转换关系,如ORACLE的日期类型用DATE、SQL用Datetime等。

一 关于ORACLE的透明网关配置

ORACLE安装时(9i),将TRANSPARENT GATEWAY FOR MSSQL选中,在ORACLE主目录\BIN中,有个tg4msql.exe程序,它是透明网关程序啦,同时在主目录中还有tgrmsql的一个目录,ORACLE_HOME\tg4msql\admin目录中的inittg4msql.ora就是需要进行配置才能在ORACLE中连接SQL。

图2.1 tg4msql

1 如何配置透明网关呢?打开inittg4msql.ora:

HS init parameters

xzh代表SQL服务名,pubs代表要访问的SQL数据库

HS_FDS_CONNECT_INFO="SERVER=xzh;DATABASE=pubs"

HS_FDS_TRACE_LEVEL=OFF

HS_FDS_RECOVERY_ACCOUNT=RECOVER

HS_FDS_RECOVERY_PWD=RECOVER

2 监听的配置oracle_home\network\admin\Listiner.ora

LISTENER =

(DESCRIPTION_LIST =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = xzh)(PORT = 1521))

)

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = xzh)(PORT = 1527))

)

)

)

SID_LIST_LISTENER =

(SID_LIST =

(SID_DESC =

(GLOBAL_DBNAME = xzh.world)

(ORACLE_HOME = D:\oracle\ora92)

(SID_NAME = xzh)

)

(SID_DESC =

(GLOBAL_DBNAME = tg4msql)

(PROGRAM = tg4msql)

(SID_NAME = tg4msql)

(ORACLE_HOME = D:\oracle\ora92)

)

)

加亮代码是要在监听文件中新加部分,GLOBAL_DBNAME、SID_NAME可以任意,PROGRM必须指向tg4msql如图2.1所示。

3 本地服务文件的配置oracle_home\network\admin\TnsNames.ora

XZH =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = xzh)(PORT = 1521))

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = xzh.world)

)

)

TG4MSQL =

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = xzh)(PORT = 1527))

)

(CONNECT_DATA =

(SID = tg4msql)

)

(HS = OK)

)

使用SQL的本地服务名为TG4MSQL,可以任意写,SID必须是Listiner.ora中指定的那个SID_NAME,PORT也必须是监听中指定的PORT,主机等都要符合一致。 到此为止,我们把透明网关大致已经配置好啦,如果要访问SQL,还要使用数据库链才方便。

4 在SQL中创建登录帐号xzh

Published At
Categories with 数据库类
Tagged with
comments powered by Disqus