ORACLE使用DBLINK连接远程数据库

database link概述

database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及执行远程程序。

database link分类

1.Private

Owner:创建database link的user拥有该database link

描述:在本地数据库的特定的schema下建立的database link。只有建立该database link的schema的session能使用这个database link来访问远程的数据库。

同时也只有Owner能删除它自己的private database link。

2.Public

Owner:PUBLIC

描述:Public的database link是数据库级的,本地数据库中所有的拥有数据库访问权限的用户或pl/sql程序都能使用此database link来访问相应的远程数据库。

3.Global

Owner:PUBLIC

描述:Global的database link是网络级的,当Oracle网络使用目录服务器时,目录服务器会自动为网络中的每个Oracle数据库创建和管理Global database link(作为网络服务名)。

任何数据库中的用户和pl/sql子程序都可以使用全局链接访问相应的远程数据库中的对象。

注意:在Oracle数据库的早期版本中,一个Global database link引用了一个database link,该链接是在Oracle名称服务器上注册的。

Oracle名称服务器的使用已经被弃用。在这个文档中,全局数据库链接指的是来自目录服务器的网络服务名的使用。

创建dblink所需的权限

CREATEDATABASE LINK 本地数据库 创建一个私有的DBLink

CREATEPUBLIC DATABASE LINK 本地数据库 创建一个共有的DBLink

CREATESESSION 远程数据库 创建一个任意类型的DBLink

database link创建语法

CREATE [SHARED][PUBLIC] database link link_name

[CONNECT TO [user][current_user] IDENTIFIED BY password]

[AUTHENTICATED BY user IDENTIFIED BY password]

[USING 'connect_string']

简要说明:

connectstring连接字符串,tnsnames.ora中定义远程数据库的连接串,也可以在创建dblink的时候直接指定。

usernamepassword:远程数据库的用户名,口令。如果不指定,则使用当前的用户名和口令登录到远程数据库

使用实例:

创建私有的DBLink

create database link dblink_name 
connect to username identified by "password" 
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.1.18 )(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = orcl)))';
创建公共的DBLink

create public database link dblink_name 
connect to username identified by "password" 
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.1.18 )(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = orcl)))';
database link的使用

最简单的用法

SELECT* FROM table_name@dblink_name;

包装dblink_name名称

CREATE SYNONYM table_name FOR table_name@dblink_name;

SELECT * FROM table_name;

建立一个视图来封装

CREATE VIEW table_name AS SELECT * FROM table_name@dblink_name;

database link删除

删除public类型的database link

DROP PUBLIC database link dblink_name;

删除非public类型的database link

注意:只有owner自己能删除自己的非public类型database link

DROP database link dblink_name;

查询database link

select * from dba_db_links;


你可能感兴趣的:(DB)