Oracle 创建DBLink

背景需求:

A库想查B库的东西可以在A库上建一个DBLINK,单向,不需要在B上建,除非B也想查A的东西

然后只要SELECT * FROM TABLE_NAME@DBLINK_NAME就可以了

 

步骤:

一、鉴权

1、鉴权

首先查询当前用户是否有创建dblink的权限,如果没有,需要赋权:赋权需要在sys下执行:grant create public database link,create database link to 'MyUserName';

select * from user_sys_privs t where t.privilege like upper('%link%');

命令查询,从结果上看到当前用户有创建权限。

 在创建database link之前,我们需要判断,登陆的用户是否具备创建database link 的权限,所以我们执行以下的语句(用wangyong用户登陆orcl):

-- 查看wangyong用户是否具备创建database link 权限
select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='WANGYONG';

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

-- 给wangyong用户授予创建dblink的权限
grant create public database link to wangyong;

 此时,再执行上面查看是否具备权限的sql语句,会发现有返回行,表示,WANGYONG这个用户已经具备创建database link的权限。

 二、创建DBLink

2、创建dblink

CREATE DATABASE LINK                    --所创建的dblink只能是创建者能使用,别的用户使用不了.

CREATE PUBLIC DATABASE LINK      --public表示所创建的dblink所有用户都可以使用.

2.1、建DBLINK语句:

CREATE [SHARED] [PUBLIC] database link link_name
  [CONNECT TO [user] [current_user] IDENTIFIED BY password] 
  [AUTHENTICATED BY user IDENTIFIED BY password] 
  [USING 'connect_string']

3、使用如下sql进行创建: 

demo如下:

create database  link lcDblink connect to phdev_jzk_20191125 identified by crux using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = mydatabase)))';
create database  link 'MyDblinkName' connect to 'UserName' identified by 'PassWord' using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 'RemoteIpORDomainName')(PORT = '1521')))(CONNECT_DATA =(SERVICE_NAME = 'DBSSID')))';

MyDblinkName: 表示自定义dblink名字

UserName:表示 远程数据库的用户

PassWord:表示 远程数据库的密码

RemoteIpORDomainName : 表示远程HOST数据库IP

PORT : 表示远程数据库端口 一般为1521默认端口

DBSSID : 远程数据库的实例名SERVICE_NAME

4、要连接的service_name 读取方式:

远程数据库的SERVICE_NAME可以在远程数据库的sys用户下进行查询

select name,value from v$parameter where name='service_names';

三、使用

使用dblink访问远程的数据库,查询就和本地一样了。

SELECT * from ORG_UNIT@lcDblink WHERE code='149003';

---ORG_UNIT为表名,lcDblink为创建的dblink名称。

 

 下面,利用同样的方式,进行插入,修改,删除操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章