博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Database links
阅读量:4553 次
发布时间:2019-06-08

本文共 3727 字,大约阅读时间需要 12 分钟。

--=======================================================--Title: DATABSE LINKS --AUTHOR:SNIPER--DESCRIPTION:@DATABSE LINKS --LOG:MODIFIED 2012/11/21--=======================================================

     有些时候我们在A数据库中需要使用数据库B中的一些信息,表/函数/视图等,这时oracle为我们提供了使用database link的方式去构建这个桥梁,我们只需要在数据库A中建立一个database link就可以实现我们所要的需求

一、DATABSE LINK的流程示意图 

上面的图展示了用户scott用全局名访问在远程数据库中的emp表的流程

二 、Database links 的类型

类型

描述

Private

在本地数据库特定的schema下,只有此database link的owner或者是此schema下的pl/sdl 的subprograns能使用这个link去访问对应的远程的数据库对象

Public

数据库中所有的用户和PL/SQL subprograms可以使用这个link去访问对应的远程数据库中的对象

Global

面向网络开放的link,当oracle网络使用一个目录服务器的时候,这个目录服务器会自动的创建和管理在这个网络中的每个数据库的global database links,所有的用户和PL/SQL subprograms 都可以使用这这个link去访问对应的远程数据库中的对象

Database links的用户,当你创建link的时候,你需要确定哪个用户可以连接远程数据库去访问数据。下面的表格解释了不同用户参与database links

用户类型

描述

Link例子创建语法

Connected user

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

CREATE PUBLIC DATABASE LINK hq USING 'hq';

Current user

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

CREATE PUBLIC DATABASE LINK hq CONNECT TO CURRENT_USER using 'hq';

Fixed user

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

CREATE PUBLIC DATABASE LINK hq CONNECT TO jane IDENTIFIED BY doe USING 'hq';

三、创建database links

Sql语句

连接数据库

访问方式

连接类型

CREATE DATABASE LINK sales.us.americas.acme_auto.com USING 'sales_us';

sales using net service namesales_us

Connected user

Private connected user

CREATE DATABASE LINK foo CONNECT TO CURRENT_USER USING 'am_sls';

sales using service name am_sls

Current global user

Private current user

CREATE DATABASE LINK sales.us.americas.acme_auto.com CONNECT TO scott IDENTIFIED BY tiger USING 'sales_us';

sales using net service namesales_us

scott using password tiger

Private fixed user

CREATE PUBLIC DATABASE LINK sales CONNECT TO scott IDENTIFIED BY tiger USING 'rev';

sales using net service name rev

scott using password tiger

Public fixed user

CREATE SHARED PUBLIC DATABASE LINK sales.us.americas.acme_auto.com CONNECT TO scott IDENTIFIED BY tiger AUTHENTICATED BY anupam IDENTIFIED BY bhide USING 'sales';

sales using net service name sales

scott using password tiger, authenticated as anupam using password bhide

Shared public fixed user

    这里有必要说一下net service name ,一般我们在oracle的安装下找到此文件,它也就是我们常说的配置监听的文件,下面是此配置文件的片段内容:

C:\app\ultraom1\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora
# tnsnames.ora Network Configuration File: C:\app\ultraom1\product\11.2.0\dbhome_1\NETWORK\ADMIN\tnsnames.ora# Generated by Oracle configuration tools.WLAN =  (DESCRIPTION =    (ADDRESS_LIST =      (ADDRESS = (PROTOCOL = TCP)(HOST = 10.204.28.11)(PORT = 1521))    )    (CONNECT_DATA =      (SERVER = DEDICATED)      (SERVICE_NAME = ora10gsjwg)    )  )

所以上边表格的内容也可以这样去写:

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.

四、使用DATABSE LINKS

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

Select * from remoteTableName@dblinkName;

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

五、使用同义词

CREATE [PUBLIC] synonym_nameFOR [schema.]object_name[@database_link_name];

Synonym支持以下的对象:

•Tables•Types•Views•Materialized views•Sequences•Procedures•Functions•Packages

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

-- Create the synonym create or replace synonym tableName   for remoteTableName@dblinkName;

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

Select * from tableName;

上述语句等价于

Select * from remoteTableName@dblinkName;

 

参考:

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/rafx/archive/2012/11/12/databaseLinks.html

你可能感兴趣的文章
C# Enum Name String Description之间的相互转换
查看>>
Android 实现ripple动画
查看>>
PHP wamp server问题
查看>>
Spring Data Redis学习
查看>>
js闭包理解案例-解决for循环为元素注册事件的问题
查看>>
2015.04.23,外语,读书笔记-《Word Power Made Easy》 12 “如何奉承朋友” SESSION 33
查看>>
Spring+SpringMVC+JDBC实现登录
查看>>
生与死之间
查看>>
NEFU 109
查看>>
HDU 5435
查看>>
git从已有分支拉新分支开发
查看>>
滚动条隐藏兼容写法
查看>>
SQL2005查询所有表的大小
查看>>
Shell 正则表达式
查看>>
Docker run命令参数整理
查看>>
qt-opencv配置mingw编译器
查看>>
CSS之Medial Queries的另一用法:实现IE hack的方法
查看>>
oo第三单元总结
查看>>
linux-CentOS6.4下安装oracle11g详解
查看>>
实力为王 八年DBA经验谈
查看>>