利用透明网关,实现Oracle 10g与SQL 2000数据的定时交换

来源:互联网 发布:网络接入服务代理协议 编辑:程序博客网 时间:2024/06/04 18:19

利用Oracle 的透明网关,实现Oracle数据库与SQL2000的数据的交换。因我的Oracle 安装在集群上,为了方便所以透明网关安装在SQL服务器端。整个环境如下:

一、实现的环境
1、windows 域环境,为Test.com
2、Oracle 服务器  ,操作系统 Windows 2003,计算机名  Dbserver  ,IP 192.168.9.117 ,  Oracle 10G ,实例为 OraDB
3、SQL2000服务器,操作系统Windows 2003 ,计算机名 sqlDbServer,IP 192.168.9.140,SQL数据库 为 WebDb

二、安装透明网关
在SQL2000服务器端 安装 Oracle 的透明网关

三、透明网关的设置
1、在TG下替换监听文件listener.ora如下,注意修改监听文件中的路径和HOST.
即  D:/oracle/product/10.2.0/tg_1/NETWORK/ADMIN/listener.ora

# listener.ora Network Configuration File: D:/oracle/product/10.2.0/tg_1/network/admin/listener.ora
# Generated by Oracle configuration tools.

SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = tg4msql)
      (ORACLE_HOME = D:/oracle/product/10.2.0/tg_1)
      (PROGRAM = tg4msql)
    )
  )

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = SQLDBserver.test.com)(PORT = 1521))
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
    )
  )

2、在TG下替换inittg4msql.ora,注意按需要修改SQLSERVER的数据库服务器和数据库名称.
即  D:/oracle/product/10.2.0/tg_1/tg4msql/admin/inittg4msql.ora

# This is a sample agent init file that contains the HS parameters that are
# needed for the Transparent Gateway for SQL Server

#
# HS init parameters
#
HS_FDS_CONNECT_INFO="SERVER=192.168.9.140;DATABASE=webDb"
HS_FDS_TRACE_LEVEL=OFF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER


3、重新启动 在SQL2000服务器端的oracle透明网关的监听服务

四、在Oracle上建立 与SQL的连接
1、用Toad 或其他工具 登陆 Oracle SQL ,运行以下脚本,注意HOST

create public database link "hudb"
connect to sa
identified by "123456"
using '(DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST =SQLDBserver.test.com)(PORT = 1521))
    (CONNECT_DATA = (SID = tg4msql))
    (HS=OK)
  ) ';


2、测试连接
select * from cadmark@hudb

注:cadmark 为SQL数据库 WebDb上的一个表名,该表不要有大字段。

五、建立数据交换
1、在SQL上建 数据交换表(如果需要的话)
2、在Oracle上见数据交换表或视图(如果需要的话)
3、在Oracle上建 数据交换过程
 CREATE OR REPLACE PROCEDURE ProcAutoPutIntoDate AS
begin
。。。
end ProcAutoPutIntoDate;

六、建立定时交换的job
用Toad 或其他工具 在Oracle 上建立一个Job
1、查看Oracle系统是否允许Job
show parameter job_queue_processes; (查询job_queue_processes的值)
如果为0,修改如下:
alter system set job_queue_processes=10; (更新job_queue_processes的值)

2、创建job
DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
  ( job       => X
   ,what      => 'STDOC.PROCAUTOPUTINTODATE;'
   ,next_date => to_date('26-05-2009 06:00:00','dd/mm/yyyy hh24:mi:ss')
   ,interval  => 'TRUNC(SYSDATE+1)+6/24'
   ,no_parse  => FALSE
  );
  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;


3、检查job 是否确实已建立

select job,next_date,next_sec,failures,broken from user_jobs;

select *  from user_jobs;

4、如果发现建错了,删除
BEGIN
  SYS.DBMS_JOB.REMOVE(job号);
COMMIT;
END;
/

原创粉丝点击