Oracle創建database link(dblink)和同義詞(synonym)
同一個數據庫不同用戶之間建立dblink和synonym
1.建立dblink
實現在A用戶下通過dblink訪問B用戶下的數據庫表,需要在A用戶下創建訪問B庫的dblink連接
--創建遠程連接dblink語句示例: create database link dblink名 connect to B庫用戶名 identified by B庫密碼 using '172.66.50.241:1521/AAA'; 備注:需修改對應訪問連接用戶和密碼、IP、端口和數據庫示例名
相關連接:
https://zyqwst.iteye.com/blog/2285560
https://blog.csdn.net/bxl049/article/details/70879655
2.創建表名同義詞 SYNONYM
create SYNONYM table_new for table_b@dblink名;
直接訪問: select * form table_new 相當於:select * from table_b@dblink名;
3. 創建表空間、用戶、dblink、讓用戶持有dblink、創建視圖、建立同義詞、導出數據
----------------------------------------------------------------------------------------------------------------------
同一個數據庫不同用戶之間建立dblink和synonym
數據庫中現有數據庫A(用戶名/密碼 A/a),數據庫庫B(用戶名/密碼 B/b)。A用戶需要B庫中的表table_b;A用戶如果想直接對表table_b進行操作,例如 select * from table_b;update XXX table_b set XXX等。需要兩步:1對B用戶建立dblink;2對b.table_b建立同義詞。具體兩步如下
IDENTIFIED by "b" --B數據庫的密碼
using 'orcl'; --所在庫實例名
create SYNONYM table_b for table_b@test_link;
--現在執行查詢select * from table_b;就好像table_b表是A數據庫的表一樣,有沒有很爽
create database link test_link connect to B
IDENTIFIED by "b"
using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))'
--------------------------------------------------------------------------------同庫同實例
1.dba用戶 賦權創建同義詞的權限
sqlplus /as sysdba
grant create synonym to dcm
--finchina 用戶 賦權 dcm查看的權限
grant select on table1 to dcm;
--dcm 用戶創建同義詞
create or replace synonym table1 for finchina.table1;
----------------------------------------------------------------------------------
oracle database link 查詢時候 select * from 表A@link 執行后為什么會起事務
oracle的db_link數據bai要數據庫自身du和遠程數據庫建立zhi鏈接進行查詢dao的zhuan,而且會對遠程數據shu庫中查詢的表加鎖。相當於本地的 select * from table for update;產生事物就是因為這個原因。通過dblink查詢完之后,最好進行commit或rollback結束事物。