Oracle跨庫訪問DBLINK使用以及實際應(yīng)用
1. DBLINK的介紹
Oracle在進行跨庫訪問時,可以創(chuàng)建DBLINK實現(xiàn),比如要將UAT的表數(shù)據(jù)灌入開發(fā)環(huán)境,則可以使用UAT庫為數(shù)據(jù)源,通過DBLINK實現(xiàn)將查出的數(shù)據(jù)灌入開發(fā)庫。簡而言之就是在當(dāng)前數(shù)據(jù)庫中訪問另一個數(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)限,也可以實現(xiàn)DBLINK的創(chuàng)建和刪除(實測)。
SELECT * FROM user_sys_privs WHERE PRIVILEGE LIKE UPPER('%UNLIMITED TABLESPACE%');
如果指定用戶沒有上面的幾個權(quán)限,需要通過sys用戶(這個充當(dāng)管理員角色,有很大權(quán)限)賦予權(quán)限,你需要登陸sys用戶,并在sys用戶下執(zhí)行以下語句:
GRANT CREATE PUBLIC DATABASE LINK , DROP PUBLIC DATABASE LINK TO hxapp;
用來登錄到遠程數(shù)據(jù)庫的帳號必須有CREATE SESSION權(quán)限
2.2 創(chuàng)建DBLINK
創(chuàng)建時加不加PUBLIC關(guān)鍵字,會影響DBLINK的使用范圍,加上PUBLIC關(guān)鍵字則所有用戶都可以使用,否則只有當(dāng)前用戶或者更高權(quán)限的用戶可以使用。
- 通過pl/sql developer圖形化界面創(chuàng)建
等價于CREATE DATABASE LINK DBLINK_TEST_TO230 CONNECT TO hxapp IDENTIFIED BY hxapp USING '3.1.11.230/cbsznckdb';
- 如果網(wǎng)絡(luò)配置文件tnsnames.ora配置了連接信息,則可以使用如下語句實現(xiàn):
CREATE DATABASE LINK &dblink_name CONNECT TO &db_name IDENTIFIED BY &db_passwd USING '&db_sid';
- 如果網(wǎng)絡(luò)配置文件tnsnames.ora未配置連接信息,則可以使用如下語句實現(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)前實例下所有的DBLINK
SELECT * FROM dba_db_links t;
- 查詢當(dāng)前用戶下所有的DBLINK
SELECT * FROM user_db_links t;
2.4 刪除DBLINK
- 如果創(chuàng)建的是一個public的DBLINK,刪除時需要用
DROP PUBLIC DATABASE LINK &dblink_name;
- 如果創(chuàng)建的是一個private的DBLINK,刪除時需要用
DROP DATABASE LINK &dblink_name;
3. DBLINK實際應(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使用以及實際應(yīng)用的文章就介紹到這了,更多相關(guān)Oracle跨庫訪問DBLINK內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle?function函數(shù)返回結(jié)果集的3種方法
工作中常需要經(jīng)過一段復(fù)雜邏輯處理后,得出的一個結(jié)果集,所以這篇文章主要給大家介紹了關(guān)于Oracle?function函數(shù)返回結(jié)果集的3種方法,需要的朋友可以參考下2023-07-07Oracle數(shù)據(jù)庫中查詢時怎么使用日期(時間)作為查詢條件
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫中查詢時怎么使用日期(時間)作為查詢條件的相關(guān)資料,Oracle數(shù)據(jù)庫下基于日期條件的查詢發(fā)揮著重要的作用,它能夠幫助開發(fā)者實現(xiàn)比較復(fù)雜的數(shù)據(jù)管理任務(wù),需要的朋友可以參考下2024-02-02