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

如下图所示:

用户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:

Link类型

说明

Connected user link

看这个类型的名称就可以判断出,用的是当前连接的用户的帐户及其密码来访问远程数据库的。所以这个类型就要求需要在远程数据库上有一个和本地帐户一样的username和password.

Fixed user link

这个类型是说使用指定的帐户和密码来访问远程数据库。所以只需指定的帐户能够有权限访问远程数据库就可以。

Current user link

需要用户连接到本地数据库的时候是全局用户的身份连接的。这样这个全局用户就可以使用指定帐户的上下文,而无需存储密码信息到link中。

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

Database Link有以下类型:

类型

说明

Private

来类型的Database Lin只能由这个Database Link的Owner才能使用它。

Public

在这个数据库里的所有用户均可使用该Database Link

Global

网络中的数据库中的用户均可使用该database link. 因为当Oracle 使用目录服务器的时候,它会在该目录下的所有数据库里都创建这个 global database link,并且统一控制。因此所有在目录下的数据库里的用户均可使用。

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

语法:create [type] database link

语句

说明

访问方式类型

连接类型

Create database link dblinkName using ‘NSName’;

创建一个database link ,通过使用网络服务名称创建。其中Database Link的名称为dbLinkName. 网络服务的名称为NSName.

Connected user link

Private

Create public database link dblinkName connect to CURRENT_USER using ‘NSName’;

创建一个database link ,通过使用网络服务名称创建。其中Database Link的名称为dbLinkName. 网络服务的名称为NSName.

Current user link

public

Create database link dblinkName dblinkName connect to username identified by password using ‘NSName’;

创建一个database link ,通过使用网络服务名称创建。其中Database Link的名称为dbLinkName. 网络服务的名称为NSName. 通过用户帐户username及其密码password来访问远程数据库。

Fixed user link

private

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

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

Create database link dblinkName dblinkName connect to username identified by password using ‘NSNName=

(

Address_List=

(

(Adress=(protocol=TCP)(host=RemoteServerName)(port=1521))

)

(Connect_Data=(services_Name))

)’

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

Create database link dblinkName dblinkName connect to username identified by password using ‘NSNName=

(

Address_List=

(

(Adress=(protocol=TCP)(host=RemoteA)(port=1521))

)

(Connect_Data=(orcl))

)’

好了,以上简单的介绍了如何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;

Thanks,

Oracle Database Links解析的更多相关文章

  1. oracle中database links的使用

    1.在pl/sql developer中创建database links 2.使用database links select * from table1@xtbg 注意:@xtbg是database ...

  2. Oracle Database 11g Express Editon介绍及安装

    一.Oracle Database 11g Express版本介绍 公司项目开发中,使用的数据库是Oracle 10g和MySQL 5.5,最新因为开发需要,需要从后台读取一些数据.使用的客户端是PL ...

  3. P6 EPPM Manual Installation Guide (Oracle Database)

    P6 EPPM Manual Installation Guide (Oracle Database) P6 EPPM Manual Installation Guide (Oracle Databa ...

  4. Ways to access Oracle Database in PostgreSQL

    Today, organizations stores information(data) in different database systems. Each database system ha ...

  5. Oracle Database 11g express edition

    commands : show sys connect sys as sysdba or connect system as sysdba logout or disc clear screen or ...

  6. Oracle Database Gateway 安装

    在[Oracle HS (Heterogeneous Services)深入解析 及协同Gateway工作流程]一文中主要主要介绍了HS的工作原理,及其如何协同Gateway一起工作.那么了解Gate ...

  7. 《Oracle Database 12c DBA指南》第一章 - 基本技能简介

    当前关于12c的中文资料比较少,本人将关于DBA的一部分官方文档翻译为中文,很多地方为了帮助中国网友看懂文章,没有按照原文句式翻译,翻译不足之处难免,望多多指正. 1 基本技能简介 作为一个数据库管理 ...

  8. oracle database resident connection pooling(驻留连接池)

    oracle在11g中引入了database resident connection pooling(DRCP).在此之前,我们可以使用dedicated 或者share 方式来链接数据库,dedic ...

  9. Installing Oracle Database 12c Release 2(12.2) RAC on RHEL7.3 in Silent Mode

    概要 在RHEL7静默方式安装oracle database 12.2 RAC. 一.环境配置 1. 配置hosts文件 cp /etc/hosts /etc/hosts_$(date +%Y%d%m ...

随机推荐

  1. 慕课网-安卓工程师初养成-2-9 Java中的自动类型转换

    来源:http://www.imooc.com/code/1236 在 Java 程序中,不同的基本数据类型的数据之间经常需要进行相互转换.例如: , 代码中 int 型变量 score1 可以直接为 ...

  2. LA3027 合作网络-并查集压缩路径

    有N个结点 一次 I u v 操作表示把结点u的父结点设为v,距离为|u-v|%1000.输入保证执行指令前u没有父结点 一次E u 操作表示询问u到根结点的距离 O操作表示结束 #include&l ...

  3. 华为OJ平台——百钱买百鸡问题

    题目描述: 元前五世纪,我国古代数学家张丘建在<算经>一书中提出了“百鸡问题”:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一. 百钱买百鸡,问鸡翁.鸡母.鸡雏各几何? 思路: 这道题很简单,假 ...

  4. ASP.NET的SEO:使用.ashx文件——排除重复内容

    本系列目录 不同的链接指向的页面如果具有大量相同的内容,这种现象就会被称为"重复内容",如果一个网站的重复内容很多,搜索引擎就会认为这个网站的价值不高.所以我们应尽量避免各种重复内 ...

  5. 022 ARM寄存器详解

    R13:堆栈指针寄存器 SP R14:链接寄存器 LR R15:程序计数器 PC指针 CPSR:当前程序状态寄存器 SPSR:备份程序状态寄存器

  6. c++ 创建 socket server

    下面一段代码是创建socket server的代码片段: 需要引用的库包括: #include <sys/types.h> #include <sys/socket.h> #i ...

  7. Count and Say [LeetCode 38]

    1- 问题描述 The count-and-say sequence is the sequence of integers beginning as follows: 1, 11, 21, 1211 ...

  8. ASP.NET MVC5 高级编程 第3章 视图

    参考资料<ASP.NET MVC5 高级编程>第5版 第3章 视图 3.1 视图的作用 视图的职责是向用户提供界面. 不像基于文件的框架,ASP.NET Web Forms 和PHP ,视 ...

  9. PHP入门基础(一)——标记风格、注释、表单获取、字符串类型、变量解析

    PHP标记风格: //XML风格//推荐的标记风格,可以在XML文档中使用 <?php echo '<p>XML Style</p>'; ?> //简短风格——需启 ...

  10. LotusPhp入口文件解析

    LotusPhp也是单入口的框架,可以根据需要开启多个应用实例 例如前台页面可以用index.php作为入口文件,后台可以用admin.php作为入口文件,多个应用实例可以共享应用配置和类库或者根本每 ...