DBLINK詳解
1.創(chuàng)建dblink語(yǔ)法:
CREATE [PUBLIC] DATABASE LINK link
CONNECT TO username IDENTIFIED BY password
USING ‘connectstring’
說(shuō)明:
1) 權(quán)限:創(chuàng)建數(shù)據(jù)庫(kù)鏈
接的賬號(hào)必須有CREATE DATABASE LINK或CREATE PUBLIC DATABASE
LINK的系統(tǒng)權(quán)限,用來(lái)登錄到遠(yuǎn)程數(shù)據(jù)庫(kù)的賬號(hào)必須有CREATE SESSION權(quán)限。這兩種權(quán)限都包含在CONNECT角色中(CREATE
PUBLIC DATABASE
LINK權(quán)限在DBA中)。一個(gè)公用數(shù)據(jù)庫(kù)鏈接對(duì)于數(shù)據(jù)庫(kù)中的所有用戶都是可用的,而一個(gè)私有鏈接僅對(duì)創(chuàng)建它的用戶可用。由一個(gè)用戶給另外一個(gè)用戶授權(quán)私
有數(shù)據(jù)庫(kù)鏈接是不可能的,一個(gè)數(shù)據(jù)庫(kù)鏈接要么是公用的,要么是私有的。
2)link : 當(dāng)GLOBAL_NAME=TRUE時(shí),link名必須與遠(yuǎn)程數(shù)據(jù)庫(kù)的全局?jǐn)?shù)據(jù)庫(kù)名global_name)相同;否則,可以任意命名。
3)connectstring:連接字符串,tnsnames.ora中定義遠(yuǎn)程數(shù)據(jù)庫(kù)的連接串。
4)username、password:遠(yuǎn)程數(shù)據(jù)庫(kù)的用戶名,口令。如果不指定,則使用當(dāng)前的用戶名和口令登錄到遠(yuǎn)程數(shù)據(jù)庫(kù)。
2.刪除數(shù)據(jù)庫(kù)鏈接的語(yǔ)句:
DROP [PUBLIC] DATABASE LINK zrhs_link
3.查看已創(chuàng)建的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.創(chuàng)建同義詞:
對(duì)于經(jīng)常使用的數(shù)據(jù)庫(kù)鏈接,可以建立一個(gè)本地的同義詞,方便使用:
CREATE SYNONYM worker_syn FOR worker@zrhs_link;
6.創(chuàng)建遠(yuǎn)程視圖:
CREATE VIEW worker AS SELECT * FROM worker@zrhs_link where…;
現(xiàn)在本視圖可與本地?cái)?shù)據(jù)庫(kù)中的任何其它視圖一樣對(duì)待,也可以授權(quán)給其它用戶訪問(wèn)此視圖,但該用戶必須有訪問(wèn)數(shù)據(jù)庫(kù)鏈接的權(quán)限。
其他:
修改GLOBAL_NAME的方法:
1.在遠(yuǎn)程數(shù)據(jù)庫(kù)的init.ora文件中將global_names設(shè)為false。
或者
2.用sys用戶執(zhí)行如下語(yǔ)句:ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;
修改后重新啟動(dòng)數(shù)據(jù)庫(kù)設(shè)置才能生效。
數(shù)據(jù)庫(kù)全局名稱可以用以下命令查出:SELECT * FROM GLOBAL_NAME;
===== dblink 實(shí)戰(zhàn) ====== 1.dblink分為公有和私有兩類。
公有dblink使用public修飾關(guān)鍵字。在create和drop的時(shí)候都需要使用public關(guān)鍵字。
公有dblink對(duì)所有人開放,在該dblink之上創(chuàng)建的同義詞也會(huì)隨之對(duì)所有人開放。(測(cè)試并確認(rèn),不過(guò)測(cè)試是在一個(gè)實(shí)例多個(gè)用戶之間進(jìn)行)
私有dblink只有創(chuàng)建者可以訪問(wèn),其上的同義詞不能被其他用戶訪問(wèn)。需為用戶創(chuàng)建視圖,并將視圖授權(quán)給所需用戶后,用戶才可訪問(wèn)該視圖。
另外,不能將帶有dblink的同義詞直接授權(quán)給用戶。否則報(bào)錯(cuò),其等價(jià)于:
grant select on table1@user1 to user2 *
ERROR at line 1:
ORA-02021: DDL operations are not allowed on a remote database
2.創(chuàng)建dblink時(shí),可以使用連接字符串(與tnsname.ora中的),效率較高。
|
|
來(lái)自: 麒麒父 > 《技術(shù)性文章收集》