Oracle跨庫訪問DBLINK使用以及實(shí)際應(yīng)用
1. DBLINK的介紹
Oracle在進(jìn)行跨庫訪問時(shí),可以創(chuàng)建DBLINK實(shí)現(xiàn),比如要將UAT的表數(shù)據(jù)灌入開發(fā)環(huán)境,則可以使用UAT庫為數(shù)據(jù)源,通過DBLINK實(shí)現(xiàn)將查出的數(shù)據(jù)灌入開發(fā)庫。簡而言之就是在當(dāng)前數(shù)據(jù)庫中訪問另一個(gè)數(shù)據(jù)庫中的表中的數(shù)據(jù)
2. DBLINK的使用簡介
2.1 權(quán)限問題
要想創(chuàng)建DBLINK,首先要檢查當(dāng)前用戶是否具備權(quán)限。
SELECT * FROM user_sys_privs WHERE PRIVILEGE LIKE UPPER('%DATABASE LINK%');

CREATE PUBLIC DATABASE LINK:表示所創(chuàng)建的dblink所有用戶都可以使用
CREATE DATABASE LINK:表示所創(chuàng)建的dblink只能是創(chuàng)建者能使用,別的用戶不可以使用
DROP PUBLIC DATABASE LINK : 表示所創(chuàng)建的dblink所用用戶都可以刪除
如果沒有以上權(quán)限,但是有UNLIMITED TABLESPACE權(quán)限,也可以實(shí)現(xiàn)DBLINK的創(chuàng)建和刪除(實(shí)測)。
SELECT * FROM user_sys_privs WHERE PRIVILEGE LIKE UPPER('%UNLIMITED TABLESPACE%');
如果指定用戶沒有上面的幾個(gè)權(quán)限,需要通過sys用戶(這個(gè)充當(dāng)管理員角色,有很大權(quán)限)賦予權(quán)限,你需要登陸sys用戶,并在sys用戶下執(zhí)行以下語句:
GRANT CREATE PUBLIC DATABASE LINK , DROP PUBLIC DATABASE LINK TO hxapp;
用來登錄到遠(yuǎn)程數(shù)據(jù)庫的帳號(hào)必須有CREATE SESSION權(quán)限
2.2 創(chuàng)建DBLINK
創(chuàng)建時(shí)加不加PUBLIC關(guān)鍵字,會(huì)影響DBLINK的使用范圍,加上PUBLIC關(guān)鍵字則所有用戶都可以使用,否則只有當(dāng)前用戶或者更高權(quán)限的用戶可以使用。
- 通過pl/sql developer圖形化界面創(chuàng)建

等價(jià)于
CREATE DATABASE LINK DBLINK_TEST_TO230 CONNECT TO hxapp IDENTIFIED BY hxapp USING '3.1.11.230/cbsznckdb';
- 如果網(wǎng)絡(luò)配置文件tnsnames.ora配置了連接信息,則可以使用如下語句實(shí)現(xiàn):
CREATE DATABASE LINK &dblink_name CONNECT TO &db_name IDENTIFIED BY &db_passwd USING '&db_sid';

- 如果網(wǎng)絡(luò)配置文件tnsnames.ora未配置連接信息,則可以使用如下語句實(shí)現(xiàn):
CREATE DATABASE LINK &dblink_name
CONNECT TO &db_name IDENTIFIED BY &db_passwd
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = &ip)
(PORT = 1521)
)
)
(CONNECT_DATA = (SERVICE_NAME = &sid)
)
)';
--例:
CREATE DATABASE LINK &dblink_name
CONNECT TO &db_name IDENTIFIED BY &db_password
USING '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS =
(PROTOCOL = TCP)
(HOST = 3.1.11.230)
(PORT = 1521)
)
)
(CONNECT_DATA = (SERVICE_NAME = cbsznckdb)
)
)';
--簡寫
CREATE DATABASE LINK DBLINK_TEST_01
CONNECT TO hxapp IDENTIFIED BY hxapp
USING '3.1.11.230/cbsznckdb';
創(chuàng)建以后查詢結(jié)果:

2.3 查詢DBLINK
- 查詢當(dāng)前實(shí)例下所有的DBLINK
SELECT * FROM dba_db_links t;

- 查詢當(dāng)前用戶下所有的DBLINK
SELECT * FROM user_db_links t;

2.4 刪除DBLINK
- 如果創(chuàng)建的是一個(gè)public的DBLINK,刪除時(shí)需要用
DROP PUBLIC DATABASE LINK &dblink_name;
- 如果創(chuàng)建的是一個(gè)private的DBLINK,刪除時(shí)需要用
DROP DATABASE LINK &dblink_name;
3. DBLINK實(shí)際應(yīng)用語句舉例
--插入語句 INSERT INTO test_01@DBLINK_TEST_01 t SELECT 'UntifA' FROM dual; --查詢語句 SELECT * FROM test_01@DBLINK_TEST_01 t WHERE t.name = 'UntifA'; --刪除語句 DELETE FROM test_01@DBLINK_TEST_01 t WHERE t.name = 'UntifA'; --更新語句 UPDATE test_01@DBLINK_TEST_01 t SET t.name = 'mengkiD~lufy' WHERE t.name = 'UntifA';
總結(jié)
到此這篇關(guān)于Oracle跨庫訪問DBLINK使用以及實(shí)際應(yīng)用的文章就介紹到這了,更多相關(guān)Oracle跨庫訪問DBLINK內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle安裝遇到INS-30131錯(cuò)誤的解決方法
這篇文章主要介紹了Oracle安裝遇到錯(cuò)誤INS-30131的解決方法,感興趣的小伙伴們可以參考一下2016-07-07
Oracle?function函數(shù)返回結(jié)果集的3種方法
工作中常需要經(jīng)過一段復(fù)雜邏輯處理后,得出的一個(gè)結(jié)果集,所以這篇文章主要給大家介紹了關(guān)于Oracle?function函數(shù)返回結(jié)果集的3種方法,需要的朋友可以參考下2023-07-07
Oracle數(shù)據(jù)庫中查詢時(shí)怎么使用日期(時(shí)間)作為查詢條件
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中查詢時(shí)怎么使用日期(時(shí)間)作為查詢條件的相關(guān)資料,Oracle數(shù)據(jù)庫下基于日期條件的查詢發(fā)揮著重要的作用,它能夠幫助開發(fā)者實(shí)現(xiàn)比較復(fù)雜的數(shù)據(jù)管理任務(wù),需要的朋友可以參考下2024-02-02
Oracle中TIMESTAMP的幾種類型介紹與實(shí)例
我們都知道date和timestamp都是對(duì)日期和時(shí)間的表示,只是兩種類型的精確度不同,前者精確到秒,后者精確到小數(shù)秒(fractional_seconds_precision),可以是 0 to 9,缺省是6。這篇文章主要介紹了Oralce中TIMESTAMP的幾種類型。有需要的朋友們可以參考借鑒。2016-12-12

