Oracle11g数据库创建dblink介绍
什么是Dblink
dblink(Database Link)数据库链接顾名思义就是数据库的链接 ,是一个通道,当我们要跨本地数据库,访问另外一个数据库表中的数据时,本地数据库中就必须要创建远程数据库的dblink,通过dblink本地数据库可以像访问本地数据库一样访问远程数据库表中的数据。
可以实现1.两个数据库中的多表关联查询,相当于一个事物。2.可以通过本地数据库dblink访问其他数据库,对于应用程序不必关心远程数据库的来凝结。
本人演示:本地数据库 dblink 链接到运程数据库。
本地数据库用户Dblink权限
查看 dblink 列表
select * from dba_db_links;
查看用户是否有 DBlink 权限
select * from user_sys_privs t where t.privilege like upper('%link%');
权限介绍
DROP PUBLIC DATABASE LINK 删除公共的dblink权限
CREATE DATABASE LINK 创建只有自己用的dblink权限
CREATE PUBLIC DATABASE LINK 创建公共的dblink权限
sysdba授权用户 DBlink 权限
可以根据需要grant三个权限
grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK,CREATE DATABASE LINK to jssale;
远程数据库用户权限
用户:scott 密码:tiger 用户权限:CONNECT
系统权限分类:
DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。
RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。
CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。
对于普通用户:授予connect, resource权限。
对于DBA管理用户:授予connect,resource, dba权限。
远程数据库用户必须拥有connect权限
grant connect to JSSALE with admin option;
查询Dblink
select owner,object_name from dba_objects where object_type='DATABASE LINK';
或者
select * from dba_db_links;
创建Dblink
语法:
create database link link_name
connect to username identified by password
using ‘(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = X.X.X.X )(PORT = 1521))
) (CONNECT_DATA =
(SERVICE_NAME = SSID)
)
)’;
host=数据库的ip地址,service_name=数据库的ssid。
-- Create database link
create public database link link_emp
connect to SCOTT
using '(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.153)(PORT = 1521))
(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl))
)';
使用Dblink
语法:select * from [user.]table@link_name
select * from scott.emp@link_emp;
删除dblink
语法:DROP PUBLIC DATABASE LINK link_name;
DROP PUBLIC DATABASE LINK link_emp;