Oracle dblink配置

Oracle dblink配置

一. dBlink 簡述

  dblink(Database Link)數據庫鏈接顧名思義就是數據庫的鏈接,就像電話線一樣,是一個通道,當我們要跨本地數據庫,訪問另外一個數據庫表中的數據時,本地數據庫中就必須要創建遠程數據庫的dblink,通過dblink本地數據庫可以像訪問本地數據庫一樣訪問遠程數據庫表中的數據。

 

二. 創建dblink

  

  創建dblink一般有兩種方式,不過在創建dblink之前用戶必須有創建dblink的權限。想知道有關dblink的權限,以sys用戶登錄到本地數據庫:

1 select * from user_sys_privs t
2 where t.privilege like upper('%link%');

  查詢結果集 :

 

 

 

 

    可以看出在數據庫中dblink有三種權限:

      1.CREATE DATABASE LINK(所創建的dblink只能是創建者能使用,別的用戶使用不了) ,

      2.CREATE PUBLIC DATABASE LINK(public表示所創建的dblink所有用戶都可以使用),

      3.DROP PUBLIC DATABASE LINK。(刪除dblink)
  在sys用戶下,把CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASELINK權限授予給你的用戶:

     1 grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to scott; 

     然後以scott用戶登錄本地數據庫

2.1 已經配置本地服務 

1 create public database link link_name
2 connect to username identified by password
3 using 'connect_string';

:link_name是連接名字,可以自定義;

  username是登陸數據庫的用戶名;

  password是登陸數據庫的用戶密碼;

  connect_string是數據庫連接字符串。

數據庫連接字符串是當前客戶端數據庫中TNSNAMES.ORA文件裏定義的別名名稱.可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA裏定義.  

2.2 直接建立鏈接

 

 1 create database link link_name
 2 connect to username identified by password 
 3 using ' (DESCRIPTION =
 4     (ADDRESS_LIST =
 5       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.13.178)(PORT = 1521))
 6     )
 7     (CONNECT_DATA =   
 8       (SERVICE_NAME = rzzqnew)
 9     )
10   )'; 

:host=數據庫的ip地址;

  service_name=數據庫的ssid。

2.3 兩種方法比較

  其實兩種方法配置dblink是差不多的,第二種方法比較不受本地服務的影響。
   注意: 假如創建全局dblink,則必須使用systm或sys用戶,在database前加public。

 

三. dblink常用命令

 

3.1 dblink查詢

  查看所有的數據庫鏈接,進入系統管理員SQL>操作符下,運行命令:

1 SQL>select owner,object_name from dba_objects 
2 where object_type='DATABASE LINK';
3 或者
4 select * from dba_db_links;

3.2  dblink刪除
  

1 DROP PUBLIC DATABASE LINK link_name;

3.3  dblink使用 

  SELECT……FROM表名@數據庫鏈接名; 

  查詢、刪除和插入數據和操作本地的數據庫是一樣的,只不過表名需要寫成“表名@dblink服務器”而已。

 

四.  配置實例

 

4.1 機器準備

Machine 1:

  Ip   : 10.10.13.178

  ORACLE: rzzqnew

Machine 2:

  Ip   :10.10.13.35

  ORACLE:headdb

4.2 創建db link

  登陸headdb數據庫,賬號kingstar 密碼kingstar

  

 1 create  database  link  dblinktest
 2 connect  to  kingstar  identified  by  kingstar
 3 using  '  (DESCRIPTION = 
 4                (ADDRESS_LIST =
 5                  (ADDRESS = (PROTOCOL = TCP)  (HOST = 10.10.13.178)
 6                  (PORT = 1521))
 7                 )
 8                 (CONNECT_DATA = 
 9                   (SERVICE_NAME = rzzqnew)
10                 )
11              ) ';

 

注意:1. 創建dblink時候,主要看本地的global_name 是否爲true,如果本地的global_name =true,那麼你創建的dblink必須和遠端數據               庫的global_name 一樣,否則創建了dblink也不能查到數據;

   2. 上面這段代碼,如果打錯,使用dblink時會報錯。

 這裏我們創建的dblink  名字是dblinktest,與其不一樣,所以可以做下面修改。

1 alter  system  set  global_names=false;

4.3 使用dblink

  執行:

1  select * from dual@dblinktest

  結果如下:

通過這種方法即可實現在headdb數據庫上使用rzzqnew數據庫下的內容。

 

:其實兩種方法配置dblink是差不多的,第二種方法比較不受本地服務的影響;
   假如創建全局dblink,則必須使用systm或sys用戶,在database前加public。

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2016-09-30 13:56 Ziyuan.Zhu 閱讀(...) 評論(...) 編輯 收藏
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章