共計 2063 個字符,預計需要花費 6 分鐘才能閱讀完成。
這篇文章主要介紹“DBLINK 應用分析”,在日常操作中,相信很多人在 DBLINK 應用分析問題上存在疑惑,丸趣 TV 小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”DBLINK 應用分析”的疑惑有所幫助!接下來,請跟著丸趣 TV 小編一起來學習吧!
一、項目描述
目的: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 應用分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注丸趣 TV 網站,丸趣 TV 小編會繼續努力為大家帶來更多實用的文章!