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名稱。

 

 下面,利用同樣的方式,進行插入,修改,刪除操作。

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