前言

Oracle中DB link是定义一个数据库到另一个数据库的路径的对象, DBlink允许你查询远程表和执行远程程序。在任何分布式环境里,DBlink都是必要的,注意DB link是单向的连接。在创建DBlink时,Oracle在数据字典中存储了相关的DB link的信息,在使用DBlink的时候,Oracle会通过Oracle Net用户预先定义好的连接信息访问相应的远程数据库来完成相应的工作。

Oracle DBlink可分为三类

1.private:创建的是用户级别的DBlink,只有创建该DBlink的用户才可以使用这个DBlink来访问远程的数据库,同时也只有该用户可以删除这个DBlink。

2.public:创建的是数据库级别的DBlink,本地数据库中所有的用户数据库访问权限的用户或者pl/sql程序都能使用这个DBlink。

3.global:创建的是网络级别的DBlink,这是对于Oracle Network而言的。

检查创建DBlink需要的权限

查看cc用户是否具备创建DBlink权限。

select * from user_sys_privs where privilege like upper(’%DATABASE LINK%’) AND USERNAME='cc';

如果查询有返回行,则表示具备创建database link权限,否则,则需要使用sys登陆orcl为cc用户赋予创建权限。

如,给cc用户授予创建DBlink的权限。

grant create public database link to cc;

再执行上面查看是否具备权限的sql语句,如有返回行,则表示cc用户已具备创建DBlink的权限。

创建DBlink

1.图形化创建

1.[Database Links]右键新建

2.[数据库链接]填写名称,该名称为DBlink的名称

2.[连接到]填写用户名和密码

3.[连接到]填写数据库信息

cc_db是数据库中的别名,请查看[Oracle][史上最全] 详解别名 tnsnames.ora 文件_oracle配置文件tnsnames-CSDN博客https://blog.csdn.net/qq_39194322/article/details/127189004

注:勾选[公共],创建的是数据库级别的DBlink,勾选[共享],则为共享的DBlink,不勾选默认当前数据库

如创建全局dblink,则必须使用systm或sys用户,在database前加public

2.sql语句创建

连接字符串
create public database link database_link connect to cc identified by "1111111" using 'con_string';

database_link是连接名字,可以自定义;cc是登陆数据库的用户名;”1111111″是登陆数据库的用户密码,如果密码是数字开头,用双引号括起来;con_string是数据库连接字符串,也可设置[直接链接]。

直接链接
create database link link_nameconnect to username identified by passwordusing ' (DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = cc)))';

host=数据库的ip地址,service_name数据库的ssid。

一些理解

字符串和直接链接,配置的效果差不多,后者不受本地服务的影响。数据库连接字符串也可以设置当前客户端数据库中TNSNAMES.ORA文件里定义的别名名称,可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定义。 

操作DBlink

SELECT * FROM table_name@database_link;

隐藏DBlink

隐藏DBlink名字,可用同义词包装

CREATE SYNONYM table_name for table_name@database_link; SELECT * FROM table_name;

建立视图来封装

 CREATE VIEW table_name_v AS SELECT * FROM table_name@database_link;

删除DBlink

删除public类型的DBlink

DROP PUBLIC DATABASE LINK DBlink_name;

删除private类型的DBlink,只有创建者能操作

DROP DATABASE LINK DBlink_name;

技术支持

dblink的创建和使用总结_dblink创建-CSDN博客

Oracle dblink配置 – Ziyuan.Zhu – 博客园 (cnblogs.com)