創建數據庫連接 create database link以及synonym

        --建立 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)起做用的,其餘用戶沒法使用這個鏈接,無權限也不能刪除它。

相關文章
相關標籤/搜索