--建立 CREATE public database link test_link CONNECT TO scott IDENTIFIED BY tiger using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = LEE) ) )'; --使用 select ename from emp@test_link; --刪除 drop public database link TEST_LINK; sql
一:dblink建立: 數據庫
一、已經配置本地服務服務器
create public database oracle
link toBeJing connect to scott identified by tiger using 'BEJING' dom
數據庫鏈接字符串'BEJING'是當前客戶端數據庫中TNSNAMES.ORA文件裏定義的別名名稱.能夠用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA裏定義. 分佈式
二、直接創建連接ide
create database link toBeJing spa
connect to scott identified by tiger using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = X.X.X.X )(PORT = 1521)) ) (CONNECT_DATA = (SERVICE_NAME = BJORCL) ) )'; ip
host=數據庫的ip地址,service_name=數據庫的ssid。 字符串
其實兩種方法配置dblink是差很少的,我我的感受仍是第二種方法比較好,這樣不受本地服務的影響。
注意: 假如建立全局dblink,則必須使用systm或sys用戶,在database前加public。
1.先建立PUBLIC DATABASE LINK,不用指定用戶和密碼
scott@TEST>conn system/test Connected. system@TEST>CREATE PUBLIC DATABASE LINK orcl USING 'BEJING'; Database link created.
2.再在各個用戶下建立私有DATABASE LINK(同PUBLIC DATABASE LINK名稱相同),指定用戶和密碼 system@TEST>conn scott/tiger Connected. scott@TEST>CREATE DATABASE LINK orcl CONNECT TO scott IDENTIFIED BY tiger; Database link created.
實際上至關於:
CREATE DATABASE LINK orcl USING 'BEJING' CONNECT TO scott IDENTIFIED BY tiger;
db link 有3種類型,我這裏只討論其中兩種,connected user和fixed user。 connected user,簡單來講,鏈接方數據庫以connected的用戶來鏈接遠程數據庫。 fixed user,簡單來講,鏈接方數據庫以fixed(指定的)用戶來鏈接遠程數據庫。
看看建立db link語法,你對這兩種類型就比較清楚了。
建立connected user的db link語法: create databas link foo connect to scott identified by tiger using 'BEJING' ;
建立fixed user的db link語法: create databas link foo using 'BEJING' ;
db link 的命名和global_names有關,global_name是數據庫全局名稱,global_name在你所管理的數據庫中要保證惟一。數據庫名稱是db_name。數據庫名稱通常都取得比較短,個人習慣通常取長度4個字符,重名機率高。因此,oracle模仿域名搞出一個global_name,global_name=db_name+db_domain。 有了global_name,就能夠實現數據庫命名的全局惟一。例:ORCL.REGRESS.RDBMS.DEV.US.ORACLE.COM
數據庫全局名稱能夠用如下命令查出 SELECT * FROM GLOBAL_NAME;
若是global_names=true,那麼db link的命名要和遠程數據庫的global_name相同; 若是global_names=false,那麼你能夠隨便命名db link。
查詢global_names是true仍是false,在pl/sql中的命令窗口(不是sql窗口)執行:show parameter global_names
2、dblink查詢:
查看全部的數據庫連接,進入系統管理員SQL>操做符下,運行命令: SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';
3、dblink刪除:
DROP PUBLIC DATABASE LINK toBeJing
4、dblink使用:
SELECT……FROM表名@數據庫連接名;
查詢、刪除和插入數據和操做本地的數據庫是同樣的,只不過表名須要寫成「表名@dblink服務器」而已。
例:查詢北京數據庫中emp表數據 select * from emp@toBeJing;
5、同義詞配合:
第四點中from emp@toBeJing能夠建立同義詞來替代: CREATE SYNONYM同義詞名FOR 表名;
CREATE SYNONYM同義詞名FOR 表名@數據庫連接名;
如:create synonym bj_scott_emp for emp@toBeJing;因而就能夠用bj_scott_emp來替代帶@符號的分佈式連接操做emp@toBeJing
DB LINK是獨立於建立用戶(USER_DB_LINKS的USERNAME)起做用的,其餘用戶沒法使用這個鏈接,無權限也不能刪除它。