Oracle Database Links解析
什么是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解析的更多相关文章
- oracle中database links的使用
1.在pl/sql developer中创建database links 2.使用database links select * from table1@xtbg 注意:@xtbg是database ...
- Oracle Database 11g Express Editon介绍及安装
一.Oracle Database 11g Express版本介绍 公司项目开发中,使用的数据库是Oracle 10g和MySQL 5.5,最新因为开发需要,需要从后台读取一些数据.使用的客户端是PL ...
- P6 EPPM Manual Installation Guide (Oracle Database)
P6 EPPM Manual Installation Guide (Oracle Database) P6 EPPM Manual Installation Guide (Oracle Databa ...
- Ways to access Oracle Database in PostgreSQL
Today, organizations stores information(data) in different database systems. Each database system ha ...
- Oracle Database 11g express edition
commands : show sys connect sys as sysdba or connect system as sysdba logout or disc clear screen or ...
- Oracle Database Gateway 安装
在[Oracle HS (Heterogeneous Services)深入解析 及协同Gateway工作流程]一文中主要主要介绍了HS的工作原理,及其如何协同Gateway一起工作.那么了解Gate ...
- 《Oracle Database 12c DBA指南》第一章 - 基本技能简介
当前关于12c的中文资料比较少,本人将关于DBA的一部分官方文档翻译为中文,很多地方为了帮助中国网友看懂文章,没有按照原文句式翻译,翻译不足之处难免,望多多指正. 1 基本技能简介 作为一个数据库管理 ...
- oracle database resident connection pooling(驻留连接池)
oracle在11g中引入了database resident connection pooling(DRCP).在此之前,我们可以使用dedicated 或者share 方式来链接数据库,dedic ...
- 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 ...
随机推荐
- php中若干模块的安装
1.php的mysql扩展pdo_mysql(在php源码所在目录) 1.1 进入 PHP 的软件包 pdo 扩展目录中 cd /usr/local/services/php-5.6.5/ext/ ...
- USACO Section 3.2 01串 Stringsobits
题目背景 考虑排好序的N(N<=31)位二进制数. 题目描述 他们是排列好的,而且包含所有长度为N且这个二进制数中1的位数的个数小于等于L(L<=N)的数. 你的任务是输出第i(1< ...
- ASPxCallback控件
ASPxCallback控件简单来的来说是一个数据回调控件,即不刷新事个页面来展现数据,主要是通过注册客户端事件与服务器端的事件来相互通信完成任务. 如何使用ASPXCallback: 向页面添加Ca ...
- Redis 1:简介
导读:在今日开讲的项目中,用到了redis数据库.老听大家在说,我都不知道是个啥玩意儿.然后这两天在准备知识分享的事儿,我先大概了解了解,然后讲的时候,能有点共鸣.所以,本篇博客,是在自己跟读完MVA ...
- Oracle:使用过程中的问题集锦
导读:在使用Oracle的过程中,又频繁的出问题.突然间就连接不上,各种报错了.在此,将问题给记录下来,方便以后查看. 一.ora 12514监听程序当前无法识别 之前一直链接使用的好好的,突然就连接 ...
- PAT1069. The Black Hole of Numbers
//这是到水题,之前因为四位数的原因一直不能A,看了别人的程序,才明白,不够四位的时候没考虑到,坑啊.....脸打肿 #include<cstdio>#include<algorit ...
- [zt]Which are the 10 algorithms every computer science student must implement at least once in life?
More important than algorithms(just problems #$!%), the techniques/concepts residing at the base of ...
- 【Linux】基于Linux的buffer和cache学习
缓存(cached)是把读取过的数据保存起来,重新读取时若命中(找到需要的数据)就不要去读硬盘了,若没有命中就读硬盘.其中的数据会根据读取频率进行组织,把最频繁读取的内容放在最容易找到的位置,把不再读 ...
- thinkphp数据库添加表单提交的数据
$data['catename'] = I('catename'); 获取表单的数据 $cate=D('cate'); 实例化cat ...
- mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法
mysql在生产环境下有大量锁表,又不允许重启的情况下的处理办法 满头大汗的宅鸟该怎么办呢? mysql -u root -e "show processlist"|grep -i ...