ORACLE中的DBLINK概念及使用DBLINK對遠程數據庫的連接


database link概述

database link是定義一個數據庫到另一個數據庫的路徑的對象,database link允許你查詢遠程表及執行遠程程序。

 

database link分類

1.Private

Owner:創建database link的user擁有該database link

描述:在本地數據庫的特定的schema下建立的database link。只有建立該database link的schema的session能使用這個database link來訪問遠程的數據庫。

同時也只有Owner能刪除它自己的private database link。

2.Public

Owner:PUBLIC

描述:Public的database link是數據庫級的,本地數據庫中所有的擁有數據庫訪問權限的用戶或pl/sql程序都能使用此database link來訪問相應的遠程數據庫

 

3.Global

Owner:PUBLIC

描述:Global的database link是網絡級的,當Oracle網絡使用目錄服務器時,目錄服務器會自動為網絡中的每個Oracle數據庫創建和管理Global database link(作為網絡服務名)。

任何數據庫中的用戶和pl/sql子程序都可以使用全局鏈接訪問相應的遠程數據庫中的對象。

注意:在Oracle數據庫的早期版本中,一個Global database link引用了一個database link,該鏈接是在Oracle名稱服務器上注冊的。

Oracle名稱服務器的使用已經被棄用。在這個文檔中,全局數據庫鏈接指的是來自目錄服務器的網絡服務名的使用。

 

創建dblink所需的權限

CREATEDATABASE LINK 本地數據庫 創建一個私有的DBLink

CREATEPUBLIC DATABASE LINK 本地數據庫 創建一個共有的DBLink

CREATESESSION 遠程數據庫 創建一個任意類型的DBLink

database link創建語法

 

CREATE [SHARED][PUBLIC] database link link_name

[CONNECT TO [user][current_user] IDENTIFIED BY password]

[AUTHENTICATED BY user IDENTIFIED BY password]

[USING 'connect_string']

簡要說明:

connectstring:連接字符串,tnsnames.ora中定義遠程數據庫的連接串,也可以在創建dblink的時候直接指定。

username、password:遠程數據庫的用戶名,口令。如果不指定,則使用當前的用戶名和口令登錄到遠程數據庫

使用實例:

創建私有的DBLink

create database link dblink_name 
connect to username identified by "password" 
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.1.18 )(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = orcl)))';

 

創建公共的DBLink

create public database link dblink_name 
connect to username identified by "password" 
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)
(HOST = 192.168.1.18 )(PORT = 1521)))
(CONNECT_DATA = (SERVICE_NAME = orcl)))';

 

database link的使用

最簡單的用法

SELECT* FROM table_name@dblink_name;

包裝dblink_name名稱

CREATE SYNONYM table_name FOR table_name@dblink_name;

SELECT * FROM table_name;

建立一個視圖來封裝

CREATE VIEW table_name AS SELECT * FROM table_name@dblink_name;

database link刪除

刪除public類型的database link

DROP PUBLIC database link dblink_name;

刪除非public類型的database link

注意:只有owner自己能刪除自己的非public類型database link

DROP database link dblink_name;

查詢database link

select * from dba_db_links;

 

原文鏈接:https://blog.csdn.net/naruto0025/article/details/79075041?utm_source=blogxgwz9

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM