当前位置: 首页 > 图文教程 > 数据库 > Oracle > OracleDatabaseLinks的实现方法

Oracle
常见的一些Oracle初学者的问题
ORACLE认证系统概述
数据库考试简介:Oracle认证
Oracle认证基础知识介绍
ADO连接Oracle Access示例及记录集处理源码
SQL Server和MySQL的安全性分析
用Oracle和SQL Server数据库组合利弊分析
Oracle 11g分区功能新革命
Flashback Query 恢复误删除的数据
基于Oracle高性能动态SQL程序开发
怎样在Oracle 9i中正确的转换时区
Oracle 10g导出的数据库能否导入Oracle 9i?
增加Distinct后查询效率反而提高
Oracle限制返回结果集的大小
Java语言数据库操作的基本流程
美国甲骨文(ORACLE)公司入驻渝中区大都会商厦
RHEL AS4上安装oracle 10R2 的方法
DB中如何查询Table占用空间的大小
编写高质量高性能的MySQL语法
Oracle数据库自动备份的具体实现步骤

OracleDatabaseLinks的实现方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 78 ::
收藏到网摘: n/a

  什么是Database Links呢? 首先我们阐述下它的作用:使用户可以通过一个数据库访问到另外一个远程数据库。 那么Database Link是存储着远程数据库的连接信息。

  如下图所示:

  OracleDatabaseLinks的实现方法-软晨学习网

  用户Scott可以在本地数据库上查询远程数据库的emp表,我们可以在我们的本地数据库上建立一个别名(Synonym) emp,然后我们就可以直接通过select * from emp来查询远程数据库上的emp表,而无需通过select * from [email protected]的方式来查询。

  这个远程的数据库可以是任何Oracle支持的远程数据库:Oracle ,DB2, SQL Server, Taradata, MySQL…等等。 后面我还会介绍相关如何连接到非Oracle产品的数据库。

  好了,知道了Database Link是什么,干什么用,Database Link的本质等,接下来我们介绍Database Link有哪几种连接方式的Link:

   OracleDatabaseLinks的实现方法-软晨学习网

  上面是用来告诉Database Link,我们用用什么身份连接。

  Database Link有以下类型:

   OracleDatabaseLinks的实现方法-软晨学习网

  好了,让我们看看应该如何创建一个Database Link:

  语法:create [type] database link

  OracleDatabaseLinks的实现方法-软晨学习网

  上面的地NSName的创建方式是需要在Oracle_home/Network/admin/tnsnames.ora里面配置。超出了本文的范围,我暂不做介绍。

  如果不清楚如何配置NSName,那么我们可以按照以下方式写:

  OracleDatabaseLinks的实现方法-软晨学习网

  其中protocol 是使用得访问协议;RemoteServerName是远程数据库的服务器名称或者IP, port是远程服务器里Oracle监视的端口(可以使另一个Oracle 数据库或者 Oracle Gateway,关于Oracle Gateway会在后续讲解)。 Services_Name是远程服务器提供的服务名称。例如:远程服务器RemoteA,安装了Oracle Database ,它的监听端口是1521, 并且数据库服务的名称是orcl 则以上的语句改写如下:

  OracleDatabaseLinks的实现方法-软晨学习网

  好了,以上简单的介绍了如何Oracle Database Link的类型和访问方式类型,及如何创建database link.

  那么创建完,使用如下: (在访问权限满足的条件下)

  Select * from remoteTableName@dblinkName;

  其中remoteTableName是要访问的远程数据库里的表的名称,dblinkName既是先前我们创建的数据库连接。这样每次访问表,写起来都有点麻烦;而且对于普通用户,这样的接口可能我们并不提供,换句话说,我们可能只让用户知道这里有什么表或者视图就可以了。这个时候我们可以使用别名(synonym)来简化/隐藏接口,语法如下

  CREATE [PUBLIC] synonym_name

  FOR [schema.]object_name[@database_link_name];

  Synonym支持一下的对象:

  ◆Tables

  ◆Types

  ◆Views

  ◆Materialized views

  ◆Sequences

  ◆Procedures

  ◆Functions

  ◆Packages

  这里不做过多的讲解,我们为先前我们创造的database link来创建一个synonym,代码如下:

  Create public tableName for remoteTableName@dblinkName;

  创建完成后,我们就可以这样访问远程数据库里的表:

  Select * from tableName;

  上述语句等价于

  Select * from remoteTableName@dblinkName;