2024年3月15日发(作者:)
Oracle dblink详解(转)
database link概述
database link是定义一个数据库到另一个数据库的路径的对象,database link允许你查询远程表及
执行远程程序。在任何分布式环境里,database都是必要的。另外要注意的是database link是单
向的连接。
在创建database link的时候,Oracle再数据字典中保存相关的database link的信息,在使用database
link的时候,Oracle通过Oracle Net用用户预先定义好的连接信息访问相应的远程数据库以完成
相应的工作。
建立database link之前需要确认的事项:
确认从local database到remote database的网络连接是正常的,tnsping要能成功。
确认在remote database上面有相应的访问权限。
database link分类
类型
Owner
描述
创建database 在本地数据库的特定的schema下建立的database link。只有建立该
link的user拥database link的schema的session能使用这个database link来访
Private
有该database 问远程的数据库。同时也只有Owner能删除它自己的private database
link
Public
Owner是
PUBLIC.
link。
Public的database link是数据库级的,本地数据库中所有的拥有数
据库访问权限的用户或pl/sql程序都能使用此database link来访问
相应的远程数据库。
Global的database link是网络级的,When an Oracle network uses
a directory server, the directory server automatically create and
manages global database links (as net service names) for every
Oracle Database in the network. Users and PL/SQL subprograms in
Global
Owner是
PUBLIC.
any database can use a global link to access objects in the
corresponding remote database.
Note: In earlier releases of Oracle Database, a global database
link referred to a database link that was registered with an
Oracle Names server. The use of an Oracle Names server has been
deprecated. In this document, global database links refer to the
use of net service names from the directory server.
创建dblink所需的权限
Privilege
Database
Required For
Local
Creation of a private database link.
CREATE DATABASE LINK
CREATE PUBLIC DATABASE LINK
Local
Creation of a public database link.
Remote
Creation of any type of database link.
CREATE SESSION
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']
说明:
1) 权限:创建数据库链接的帐号必须有CREATE DATABASE LINK或CREATE PUBLIC
DATABASE LINK的系统权限,用来登录到远程数据库的帐号必须有CREATE SESSION权限。
这两种权限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK权限在DBA中)。
一个公用数据库链接对于数据库中的所有用户都是可用的,而一个私有链接仅对创建它的用户可
用。由一个用户给另外一个用户授权私有数据库链接是不可能的,一个数据库链接要么是公用的,
要么是私有的。
2)link : 当source端的数据库GLOBAL_NAME=TRUE时,link名必须与远程数据库的全局数据
库名global_name)相同;否则,可以任意命名。
3)current_user使用该选项是为了创建global类型的dblink。在分布式体系中存在多个数据库的话。
如果想要在每一个数据库中都可以使用同样的名字来访问数据库a,那在每个数据库中都要创建
一个到数据库a的db_link,太麻烦了。所以现在有这个选项。你只要创建一次。所有的数据库
都可以使用这个db_link来访问了。要使用这个特性,必须有oracle nameserver或者ORACLE目
录服务器。并且数据库a的参数global_names=true.具体我也没有创建过,没有这个环境。
4)connectstring:连接字符串,中定义远程数据库的连接串,也可以在创建dblink的
时候直接指定。
5)username、password:远程数据库的用户名,口令。如果不指定,则使用当前的用户名和口令
登录到远程数据库,当创建connected user类型的dblink时,需要如果采用数据字典验证,则需


发布评论