当用户要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中必须创建了远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。
下面讲介绍如何在本地数据库中创建dblink.
第一步:赋予权限
在创建database link之前,我们需要判断,登陆的用户是否具备创建database link 的权限,所以我们执行以下的语句:
-- 查看用户是否具备创建database link 权限
select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='用户名';
如果查询有返回行,则表示具备创建database link权限,否则,则需要使用sys登陆orcl为用户赋予创建权限:
-- 给用户授予创建dblink的权限
grant create public database link to 用户名;
此时,再执行上面查看是否具备权限的sql语句,会发现有返回行,表示,用户已经具备创建database link的权限
第二步;创建database link
我所了解到的创建方式有两种:1)通过pl/sql developer图形化创建、2)通过sqlplus中的sql语句创建。下面介绍使用sql语句创建database link
create database link TestDblink
connect to dbName identified by dbPassword
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.2.158)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))'; TestDblink:表示dblink名字
dbName:表示远程数据库的用户
dbPassword:表示远程数据库的密码
HOST:表示远程数据库IP
PORT:表示远程数据库端口
SERVICE_NAME:远程数据库的实例名
-- 查询、删除和插入数据和操作本地的数据库是一样的,只不过表名需要写成“表名@dblink服务器”而已。
例如:如果想在本地数据库中通过dblink访问远程数据库'orcl'中dbName.tb_test表,sql语句如下所示
select * from dbName.tb_test@TestDblink;
DBLINK其他相关的知识:
1、查看所有的数据库链接,登录管理员查看
select owner,object_name from dba_objects where object_type='DATABASE LINK';
2.删除数据库连接
drop database link TestDblink;
参考:https://www.cnblogs.com/wangyong/p/6354528.html、https://www.cnblogs.com/Animation-programmer/p/7991809.html