1。基本概念:
資料庫連接串主要用於建立對遠端資料庫的存取方法,可以直接讀取遠程Oracle的資料,或者直接修改。資料庫連接串可以是公用串連PUBLIC或者私人串連PRIVATE。這一點和同義字很相像。
1。建立文法:
CREATE DATABASE LINK TEST CONNECT TO USERNAME IDENTIFIED BY PASSWORD
USING 'CONNECT_STRING';
解釋:TEST是資料庫連接串的名字。以後就通過這個名字來進行調用遠端資料庫的內容。
USERNAME是用來串連到遠端資料庫的合法Oracle使用者名稱。PASSWORD為該使用者串連到Oracle時候的合法密碼。
CONNECT_STRING為該Oracle資料庫所在的主機上的tnsnames.ora檔案裡邊定義的資料庫連接串。
2。使用方法:
SELECT COUNT(*) FROM TABLE_NAME@DB_LINK WHERE WHERE_CLAUSE;//查閱遠端資料庫的內容。
UPDATE TEST.TEST@DB_LINK SET SO_NBR=NEW_SO_NBR
WHERE WHERE_CLAUSE;//修改遠端資料庫的內容。
在實際使用過程中,還可以通過為這個遠端資料表建立一個同義字來進一步增加透明性,使該資料庫連接串對於程式和開發人員來講完全透明。
CREATE SYNONYM TABLE_NAME FOR TABLE_NAME@DB_LINK ;
3。資料庫連接的管理:
1。如何知道目前使用者、當前系統中有哪些資料庫連接串?
SELECT * FROM USER_DB_LINKS;
這個查詢會給出目前使用者的資料庫聯結的名字、聯結使用者名稱、聯結密碼、要串連的主機以及建立時期。
SELECT * FROM DBA_DB_LINKS;
這個查詢會給出當前系統中所有的資料庫聯結的建立使用者、聯結使用者名稱、要串連的主機以及建立時期。
SELECT * FROM V$DBLINK;
這個查詢會給出當前開啟的資料庫聯結。
4。常見錯誤處理:
////////////////////////////////////////////////////////////////
1。不能分解服務名:
登入到遠程伺服器上的結果:
net97>show parameters global_name
NAME TYPE VALUE
------------------------------------ ------- ------------------------------
global_names boolean FALSE
net97>
net97>drop database link jinhua;
資料庫連結已丟棄。
net97>create database link jinhua
2 connect to username identified by password
3 using 'jinhua';
資料庫連結已建立。
net97>select * from so@jinhua ;
select * from so@jinhua
*
ERROR 位於第 1 行:
ORA-12154: TNS:不能分解服務名稱.
net97>conn username/password@jinhua ;
已串連。
net97>
這是因為在Oracle資料庫所在的Unix主機上面的tnsnames.ora檔案裡邊沒有對jinhua這個服務名的定義。所以不能分解服務名。