OracleDatabaseLinks的实现方法

http://www.webjx.com/  2009-06-12 14:38:37  来源:网页教学网 

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

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

  如下图所示:

  OracleDatabaseLinks的实现方法-网页教学网

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

  这个远程的数据库可以是任何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;

更多

推荐文章