网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Oracle教程
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.快速建立数据字典我如此设计小型.
.Squid应用简介.
.业务处理执行语言BPEL简介.
.浅析如何掌握了解SQL Server的锁.
.Oracle自定义函数:f_henry_GetS.
.在ORalce 中,怎么判断两个时间段.
.关于连接池.
.oracle数据库性能监控的SQL的几种.
.如何保持Oracle数据库优良性能.
.ORACLE 10.1.0.2 FOR LINUX86 .
.Oracle SQL性能优化系列讲座之三.
.在Oracle中找出重复的纪录的方法.
.集合和成员函数.
.ORACLE的存储过程的异步调用--.
.初学Oracle最经常碰到的错误及解.
.MICROSOFT & ORACLE方方面面的碰.
.Oracle与SQL Server在企业应用中.
.Oracle9i初始化参数中文说明(4).
.Oracle9i Database 自调整:Oracl.
.Oracle failsafe与rac两者之间的.

SQL Server与Oracle链接服务器应用

发表日期:2008-2-9


    最近要把.net开发的CMS系统跟Java开发的系统数据打通。由于N个系统用的数据库有SQL-Server和Oracle两种,之间的数据读取成了最大的难题。     我预备了两种实行方案,进行了技术验证。方案一:改写底层数据层和逻辑层。方案二:把Oracle数据做定时导向,无需让Cms做太大的改变。     我做的CMS是基于模板的系统架构,底层规则已经写得比较死,要改换底层数据库链接或者存在多个数据库链接简直根重写系统没有太大的区别,从开发成本上分析,决定使用第二方案,做数据采集工程。     但是Oracle那边的系统存在N个库(即用户),其中的读取规则各不相同,要如何开发统一导表程序也是个大问题。其中逻辑非常复杂。风险难以控制。在想了几天之后,发现了MSSQL和Oracle互通的功能,大喜。接着就开始着手开发。于是有了这文章。     在MSSQL中有个叫做链接服务器的功能(这个在Oracle里称为透明网关)。能把不同的异类数据库附加链接到MSSQL中,做为一个“虚库”(我给的名称)使用。比如Oracle,DB2,Sybase,Access等等,基本上MS能提供驱动程序的都能做。   架好服务器,开通个Job,就实现了定时导数据的功能。   具体实现:     首先,在Oracle上创建View,给MsSql提供必要的数据源。     在MsSql的服务器上安装Oracle10g的客户端。在ODBC创建好数据源。之后在MsSql上架设链接服务器。     test一下。'SELECT id,title,thedate,summary,lid,city,ptype FROM {0}..{1}.{2}'  --0,为数据源名称;1,为用户名;2为表名。格式要依照PL/SQL语法。 ok~     但是发现,这样读取View出错。所以换了一种写法:     select * from openquery(***,'SELECT id,title,thedate,summary,lid,city,ptype FROM ***.***')   这样是利用MsSql的分布式方法去读取Oracle。   接着,创建采集的存储过程。   SET QUOTED_IDENTIFIER ON   GO   SET ANSI_NULLS ON   GO   CREATE PROCEDURE [dbo].[usp_tranDigital] AS   select * from openquery(***,'SELECT id,title,thedate,summary,lid,city,ptype FROM ***.***')   用游标获取结果集的行。这个方法在Oracle比较常用   OPEN authors_cursor   FETCH NEXT FROM authors_cursor into @ID,@TITLE,@THEDATE,@SUMMARY,@LID,@CITY,@PTYPE   WHILE @@FETCH_STATUS = 0   BEGIN   execute Digital_Insert   调用存储过程插入。   FETCH NEXT FROM authors_cursor into   @ID,@TITLE,@THEDATE,@SUMMARY,@LID,@CITY,@PTYPE   END   CLOSE authors_cursor   DEALLOCATE authors_cursor   GO   SET QUOTED_IDENTIFIER OFF   GO   SET ANSI_NULLS ON   GO   在Job里调用该存储过程。任务完结。   这样,我在不要任何程序修改的情况下,把不同数据库上的数据都挪到同一个地方。

上一篇:[Oracle]浅谈保证安全性的策略和方法 人气:856
下一篇:Oracle DBA数据库结构试题精选 人气:883
浏览全部Oracle教程的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐