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

Oracle
oracle sys_connect_by_path 函数 结果集连接
oracle join on 数据过滤问题
Oracle 当前用户下所有表的记录总数
oracle 树查询 语句
oracle 触发器 实现出入库
Oracle 函数大全
oracle 删除重复数据
ORACLE 最大连接数的问题
oracle 层次化查询(行政区划三级级联)
oracle 查询表名以及表的列名
Oracle 数据显示 横表转纵表
oracle 服务启动,关闭脚本(windows系统下)
ORCLE 表中列的修改
oracle 数据库连接分析
Oracle 实现类似SQL Server中自增字段的一个办法
Oracle 常用的SQL语句
Oracle 数组的学习 小知识也要积累,养成好的学习态度
Oracle 日期的一些简单使用
Oracle 数据库连接查询SQL语句
Oracle DBA常用语句

OracleDatabaseLinks的实现方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-30   浏览: 87 ::
收藏到网摘: 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;