您好,登錄后才能下訂單哦!
這篇文章主要介紹“DBLINK應用分析”,在日常操作中,相信很多人在DBLINK應用分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”DBLINK應用分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
一、項目描述
目的:oracle中跨數據庫查詢
兩臺數據庫服務器db_A(本地)和db_B(遠程192.168.1.100),db_A下用戶user_a 需要訪問到db_B下user_b的數據
解決:查詢得知使用dblink(即database link 數據庫鏈)
二、實現過程
1、確定用戶user_a有沒有創建 dblink 的權限
以sys用戶登錄到本地數據庫:
select * from user_sys_privs t where t.privilege like upper('%link%');
SYS CREATE DATABASE LINK NO
SYS DROP PUBLIC DATABASE LINK NO
SYS CREATE PUBLIC DATABASE LINK NO
可以看出在數據庫中dblink有三種權限
CREATE DATABASE LINK(所創建的dblink只能是創建者能使用,別的用戶使用不了)
CREATE PUBLIC DATABASE LINK(public表示所創建的dblink所有用戶都可以使用)
DROP PUBLIC DATABASE LINK。
2、如果沒有,以sys用戶登錄到本地數據庫 給用戶user_a賦權
注: dblink有三種權限:
CREATE DATABASE LINK(所創建的dblink只能是創建者能使用,別的用戶使用不了)
CREATE PUBLIC DATABASE LINK(public表示所創建的dblink所有用戶都可以使用)
DROP PUBLIC DATABASE LINK
3、以用戶user_a登錄本地數據庫,創建dblink
create public database link dblink1 connect to user_b identified by user_bpass using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';
注: 當數據庫參數global_name=false時,就不要求數據庫鏈接名稱跟遠端數據庫名稱一樣。 數據庫全局名稱可以用以下命令查出:
SELECT * FROM GLOBAL_NAME;
修改可以用以下句來修改參數值:
ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;
4、創建完成,引用
-- 查詢、刪除和插入數據和操作本地的數據庫是一樣的,只不過表名需要寫成“表名@dblink服務器”而已。 例:
select * from user_bTablename@dblink1 ;
一般情況下引用數據庫鏈接,可以直接將其放到調用的表名或視圖名稱后面,中間使用一個 @ 作為分割符:
5、刪除 DBLink
drop public database link dblink1;
6、創建和刪除同義詞
對于經常使用的數據庫鏈接,可以建立一個本地的同義詞,方便使用
create or replace synonym 同義詞名 for 表名;
create or replace synonym 同義詞名 for 用戶.表名;
create or replace synonym 同義詞名 for 表名@數據庫鏈接名;
drop synonym 同義詞名;
7、創建和刪除視圖
create or replace view 視圖名 as (select 字段 from 用戶.表名@dblink1);
drop view 視圖名;
其他: 創建方式二:要求數據庫服務器db_A上 tnsnames.ora 中有 數據庫db_B的映射 (省略)
sql>create database link 數據庫鏈路名 connect to 用戶名 identified by 口令 using 'tnsnames.ora配置的主機字符串名';
創建方式三: PL/SQL圖形配置界面
問題: 已經給了用戶 dblink 的權限,但創建時報權限不足的錯 解決:我給用戶的是 CREATE PUBLIC DATABASE LINK權限,所以創建時需要create public database link.... 而不能是create database link.... 待深入:
每次使用dblink查詢的時候,均會與遠程數據庫創建一個連接,dblink 應該不會自動釋放這個連接,如果是大量使用 dblink 查詢,會造成 web 項目的連接數不夠,導致系統無法正常運行,導致系統無正常運行。
到此,關于“DBLINK應用分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。