DBLINK詳解(轉載)

kuqlan發表於2011-07-16

1.建立dblink語法:

CREATE [PUBLIC] DATABASE LINK link

CONNECT TO username IDENTIFIED BY password

USING connectstring

說明:

1) 許可權:建立資料庫連結的帳號必須有CREATE DATABASE LINKCREATE PUBLIC DATABASE LINK的系統許可權,用來登入到遠端資料庫的帳號必須有CREATE SESSION許可權。這兩種許可權都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK許可權在DBA中)。一個公用資料庫連結對於資料庫中的所有使用者都是可用的,而一個私有連結僅對建立它的使用者可用。由一個使用者給另外一個使用者授權私 有資料庫連結是不可能的,一個資料庫連結要麼是公用的,要麼是私有的。

2)link : GLOBAL_NAME=TRUE時,link名必須與遠端資料庫的全域性資料庫名global_name)相同;否則,可以任意命名。

3)connectstring:連線字串,tnsnames.ora中定義遠端資料庫的連線串。

4)usernamepassword:遠端資料庫的使用者名稱,口令。如果不指定,則使用當前的使用者名稱和口令登入到遠端資料庫。

[@more@]

2.刪除資料庫連結的語句:

DROP [PUBLIC] DATABASE LINK zrhs_link

3.檢視已建立的dblink

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

4.dblink的引用:

[user.]table|view@dblink

如:

SELECT * FROM worker@zrhs_link;

SELECT * FROM camel.worker@zrhs_link ;

5.建立同義詞:

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

CREATE SYNONYM worker_syn FOR worker@zrhs_link;

6.建立遠端檢視:

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

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

其他:

修改GLOBAL_NAME的方法:

1.在遠端資料庫的init.ora檔案中將global_names設為false

或者

2.sys使用者執行如下語句:ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

修改後重新啟動資料庫設定才能生效。

資料庫全域性名稱可以用以下命令查出:SELECT * FROM GLOBAL_NAME;

===== dblink 實戰 ======

1.dblink分為公有和私有兩類。

公有dblink使用public修飾關鍵字。在createdrop的時候都需要使用public關鍵字。

公有dblink對所有人開放,在該dblink之上建立的同義詞也會隨之對所有人開放。(測試並確認,不過測試是在一個例項多個使用者之間進行)

私有dblink只有建立者可以訪問,其上的同義詞不能被其他使用者訪問。需為使用者建立檢視,並將檢視授權給所需使用者後,使用者才可訪問該檢視。

另外,不能將帶有dblink的同義詞直接授權給使用者。否則報錯,其等價於:

grant select on table1@user1 to user2 *

ERROR at line 1:

ORA-02021: DDL operations are not allowed on a remote database

2.建立dblink時,可以使用連線字串(與tnsname.ora中的),效率較高。

源文件 <http://space.itpub.net/16860121/viewspace-630043>

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-1052534/,如需轉載,請註明出處,否則將追究法律責任。

相關文章