最近兩天項目上線,跟著前輩學了不少東西,現在整理一下 。
DBLINK使用背景
因為項目是推廣項目,是在一期項目上進行增加的功能,對數據的升級比較麻煩。我們的升級策略是先統計出項目中使用的配置表,使用Navicat Premium 12中的數據同步功能先將正式的數據和測試中的數據進行對比,提取出sql腳,其中有一些表是存有blob字段的,提取出來的腳本不能直接執行,所以用到下面的技術——databaseLink(即跨數據庫操作數據)。
oracle在進行跨庫訪問時,可以通過創建dblink實現,可以通過dblink完成插入、修改、刪除等操作。
測試環境
首先了解下環境:在tnsnames.ora中配置兩個數據庫別名:
orcl(用戶名:wangyong 密碼:1988)
orcl2(用戶名:wangyong 密碼:123456)
實現在orcl中創建database link來訪問orcl2。
第一步:賦予權限
在創建database link之前,我們需要判斷,登陸的用戶是否具備創建database link 的權限,所以我們執行以下的語句(用wangyong用戶登陸orcl):
-- 查看wangyong用戶是否具備創建database link 權限
select * from user_sys_privs where privilege like upper('%DATABASE LINK%') AND USERNAME='WANGYONG';
如果查詢有返回行,則表示具備創建database link權限,否則,則需要使用sys登陸orcl為WANGYONG用戶賦予創建權限
-- 給wangyong用戶授予創建dblink的權限
grant create public database link to wangyong;
此時,再執行上面查看是否具備權限的sql語句,會發現有返回行,表示,WANGYONG這個用戶已經具備創建database link的權限
第二步;創建database link
創建方式有兩種:1)通過pl/sql developer圖形化創建、2)通過sqlplus中的sql語句創建,依次來看
1)pl/sql developer 圖形化創建
填寫完成后點擊“Apply”按鈕即可創建成功。
2)sql語句創建
-- 注意一點,如果密碼是數字開頭,用“”括起來
create public database link TESTLINK2 connect to WANGYONG identified by "123456" USING 'ORCL2'
這樣,就完成了簡單database簡單的創建。
第三步:操作
首先,我們需要在ORCL2庫中新建一張表,并插入部分數據,如下圖:
現在,我們通過database link 在orcl中訪問這張屬于orcl2庫中WANGYONG的表COMPANY
select * from company@TESTLINK1 order by id
從截圖中可以看到,在ORCL中可以成功訪問到ORCL2中用戶WANGYONG的表
下面,利用同樣的方式,進行插入,修改,刪除操作,依次看截圖,每一次操作后均執行查詢語句,可對比執行效果:
1)插入 bffdsf
2)修改
3)刪除
至此,簡單的dblink操作就可以了。
課外小知識:
對于上面的鏈接字符串,還可以創建同義詞代替,會稍微省點事。
-- 創建同義詞
create synonym TESTSYNONYM FOR company@TESTLINK1;
那么上面的查詢、插入、修改、刪除中可直接用WYSYNONYM代替company@TESTLINK1即可,例如查詢語句可改成如下方式(插入,修改,刪除類似):
-- 查詢ORCL2中WANGYONG用戶的表COMPANY
SELECT * FROM TESTSYNONYM order by id