欢迎大家踊跃参与,以便大家共同进步。
---------------------------------------------------------------
随便说说
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