轉自:http://hi.baidu.com/jiaju111/blog/item/86ccbf4ebb2816ccd0c86a60.html
資料庫之間的連結建立在DATABASE LINK上。要建立一個DB LINK,必須先
在每個資料庫伺服器上設定連結字串。
1、 連結字串即服務名,首先在本地配置一個服務名,地址指向遠端資料庫地址,服務名取為將來你要使用的資料庫鏈名:
2、建立資料庫連結,
進入系統管理員SQL>操作符下,運行命令:
SQL>create public database link beijing connect to scott identified by tiger
using 'tobeijing';
則建立了一個以scott使用者和北京資料庫的連結beijing,我們查詢北京的scott資料:
SQL>select * from emp@beijing;
這樣就可以把深圳和北京scott使用者的資料做成一個整體來處理。
3、建立同義字,為了使有關分布式操作更透明,ORACLE資料庫裡有同義字的對象synonym
SQL>create synonym bjscottemp for emp@beijing;
於是就可以用bjscottemp來替代帶@符號的分布式連結操作emp@beijing。
4、查看所有的資料庫連結,進入系統管理員SQL>操作符下,運行命令:
SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';
剛好用到, 取消dblink
3、查看資料庫連接
sql> select owner, db_link from dba_db_links;
ower db_link
public TEST.US.ORACLE.COM
4、刪除資料庫連接
先從第三步中查看資料庫連接,取得其db_link的名稱
sql>drop public database link TEST.US.ORACLE.COM
資料庫連接巳丟棄
比如:在一個資料庫B中訪問資料庫A中的表:
1.在資料庫B中建立資料庫鏈:
CREATE PUBLIC DATABASE LINK 資料庫連結名 CONNECT TO 使用者名稱 identified by 密碼 using '串連說明'
其中,串連說明必須為如下格式:
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.10.201)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME=ORCL)
)
)
2.訪問連結資料庫中的對象的文法:
使用者名稱.資料庫物件@資料庫連結名
3.查看所有的資料庫連結:
select owner,object_name from dba_objects where object_type='DATABASE LINK';
4.例子:
建立一個資料庫連結:
CREATE PUBLIC DATABASE LINK DBL_ORCL CONNECT TO province identified by province_pwd
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.10.201)(PORT = 1521))
)
(CONNECT_DATA =
(service_name=ORCL)
)
)';
在B庫中執行下面的語句,訪問A庫中的province.tj_ryxx 表:
select * from province.tj_ryxx@DBL_ORCL;
下面我補充一點,如果在預存程序中使用資料鏈路必須用動態sql才行,不然會報錯的。簡單動態sql如下:
strSql varchar2(800); --動態sql
.......
strSql:='.....';
execute immediate strSql; --執行動態sql
commit;