在oracle下如何建立database link全面總結

來源:互聯網
上載者:User

在oracle下如何建立database link全面總結

物理上存放於網路的多個ORACLE資料庫,邏輯上可以看成一個單一的大型資料庫,使用者可以通過網路對異地資料庫中的資料進行存取,而伺服器之間的協同處理對於工作站使用者及應用程式而言是完全透明的,開發人員無需關心網路的連結細節、資料在網路節點中的具體分布情況和伺服器間的協調工作過程。

資料庫之間的連結建立在DATABASE LINK上。要建立一個DATABASE LINK,必須首先在建立連結的資料庫上設定連結字串,即配置一個遠端資料庫的本網服務名。

連結字串的配置參見《用戶端串連伺服器》一節。

資料庫全域名稱可以用以下命令查出:

SELECT * FROM GLOBAL_NAME;

修改可以用以下語句來修改參數值:

ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

<1>、當資料庫參數global_name=false時,就不要求資料庫連結名稱跟遠端資料庫名稱一樣。

oracle資料庫之間進行串連通訊。
建立資料庫連結的文法如下:
CREATE [PUBLIC] DATABASE LINK link

CONNECT TO username IDENTIFIED BY password

USING ‘connectstring’

其中:
--demona為用net8 easy config建立的連接字串
目的方資料庫的init.ora檔案中的global_names設為false
重新啟動資料庫設定才會生效
或者用sys使用者執行

注意:建立資料庫連結的帳號必須有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系統許可權,用來登入到遠端資料庫的帳號必須有CREATE SESSION許可權。這兩種許可權都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK許可權在DBA中)。

一個公用資料庫連結對於資料庫中的所有使用者都是可用的,而一個私人連結僅對建立它的使用者可用。由一個使用者給另外一個使用者授權私人資料庫連結是不可能的,一個資料庫連結要麼是公用的,要麼是私人的。

建立資料庫連結時,還可以使用預設登入方式,即不指定遠端資料庫的使用者名稱和密碼:

create public database link zrhs_link

using ‘zrhs’;

在不指定使用者名稱和口令的情況下,ORACLE使用當前的使用者名稱和口令登入到遠端資料庫。

USING後面指定的是連結字串,也就是遠端資料庫的網路服務名,這個服務名儲存在TNSNAMES.ORA檔案中,在該檔案中定義了協議、主機名稱、連接埠和資料庫名。

 (如果有兩台資料庫伺服器db_A和db_B,db_A下使用者user_a需要用database link訪問到db_B下user_b的資料時,有如下步驟:1、首先使用者user_b,這個使用者必須要有select 許可權.2、在db_B上的tnsnames.ora中需要建立一個連接字串tnsname_BtoA,可以從db_B串連到db_A。3、在db_A上的tnsnames.ora中需要建立一個連接字串tnsname_AtoB,可以從db_A串連到db_B。4、然後在登陸到db_A上建立db link,格式如下:  create database link link_AtoB_name connect to user_b identified by  user_b的password using 'tnsname_AtoB'; link_AtoB_name必須是遠端資料庫的全域名(SID), tnsname_AtoB就是到遠端連接字串。5、測試是否能夠讀取資料。select * from dual@link_AtoB_name結果為:  DUMMY  X表示設定成功。)

 

刪除資料庫連結的語句是:

DROP [PUBLIC] DATABASE LINK zrhs_link

資料庫連結的引用

一般情況下引用資料庫連結,可以直接將其放到調用的表名或視圖名稱後面,中間使用一個 @ 作為分割符:

SELECT * FROM worker@zrhs_link;

對於經常使用的資料庫連結,可以建立一個本地的同義字,方便使用:

CREATE SYNONYM worker_syn FOR worker@zrhs_link;

還可以建立一個本地的遠程視圖,方便使用:

CREATE VIEW worker AS SELECT * FROM worker@zrhs_link where… ;

現在本視圖可與本機資料庫中的任何其它視圖一樣對待,也可以授權給其它使用者,訪問此視圖,但該使用者必須有訪問資料庫連結的許可權。

對於另外一種情況,所要訪問的表不在資料庫連結中指定的遠程帳戶下,但該帳戶有訪問該表的許可權,那麼我們在表名前要加上該表的使用者名稱:

SELECT * FROM camel.worker@zrhs_link ;

<2>、當資料庫參數global_name=true時,那就要求資料庫連結名稱跟遠端資料庫名稱一樣
資料庫全域名稱可以用以下命令查出

SELECT * FROM GLOBAL_NAME;

atabase link(dblink)--資料庫鏈路
建立dblink的文法:
sql>create database link 資料庫鏈路名
connect to 使用者名稱 identified by 口令
using '主機字串名';
如:
sql>create database link ora9i.us.oracle.com ### 這裡的us.oracle.com為oracle預設網域名稱 ###
connect to scott identified by tiger
using 'sun';

1)dblink名必須與遠端資料庫的全域資料庫名(global_name)相同;
2)使用者名稱,口令為遠端資料庫使用者名稱,口令;
3)主機字串為本機tnsnames.ora中定義的串;
4)兩個同名的資料庫間不得建立dblink;
然後,你就可以通過dblink訪問遠端資料庫了。
如:
sql>select * from 表名@ora9i.us.oracle.com;
還可以建立快照(snapshot)通過dblink實現遠端資料自動傳輸。

查看所有的資料庫連結,進入系統管理員SQL>操作符下,運行命令:

SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';

 

 

引用:http://liumanyun.blog.hexun.com/5963987_d.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.