ORACLE創(chuàng)建DBlink的過程及使用方法
1. ORACLE DBlink的創(chuàng)建和使用
1.1. 基本概念:
- database link(簡稱DBLINK)是定義一個數(shù)據(jù)庫到另一個數(shù)據(jù)庫的路徑的對象,database link允許查詢其他數(shù)據(jù)庫的遠程表及執(zhí)行遠程程序。
- database link是單向的連接。在創(chuàng)建database link的時候,Oracle在數(shù)據(jù)字典中保存相關的database link的信息。
- 在使用database link的時候,Oracle通過預先定義好的連接信息,訪問相應的遠程數(shù)據(jù)庫以完成相應的工作。
- dblink(Database Link)就像電話線一樣是一個通道,如果要訪問另外一個數(shù)據(jù)庫表中的數(shù)據(jù)時,本地數(shù)據(jù)庫中就必須要創(chuàng)建遠程數(shù)據(jù)庫的dblink,通過dblink本地數(shù)據(jù)庫可以像訪問本地數(shù)據(jù)庫一樣訪問遠程數(shù)據(jù)庫表中的數(shù)據(jù)。
1、建立dblink之前需要確認的事項:
#確認從local database到remote database的網(wǎng)絡連接是正常的,tnsping要能成功。 #確認在remote database上面有相應的訪問權限。
1.2. 概述
1、database link是定義一個數(shù)據(jù)庫到另一個數(shù)據(jù)庫的路徑的對象,database link允許你查詢遠程表及執(zhí)行遠程程序。在任何分布式環(huán)境里,database都是必要的。另外要注意的是database link是單向的連接。
2、在創(chuàng)建database link的時候,Oracle再數(shù)據(jù)字典中保存相關的database link的信息,在使用database link的時候,Oracle通過Oracle Net用用戶預先定義好的連接信息訪問相應的遠程數(shù)據(jù)庫以完成相應的工作。
1.2.1. database link分類
類型 | Owner | 描述 |
---|---|---|
Pr ivate | 創(chuàng)建database link的user擁有該database link | 在本地數(shù)據(jù)庫的特定的schema下建立的database link。只有建立該database link的schema的session能使用這個database link來訪問遠程的數(shù)據(jù)庫。同時也只有Owner能刪除它自己的private database link。 |
Public | Owner是PUBLIC. | Public的database link是數(shù)據(jù)庫級的,本地數(shù)據(jù)庫中所有的擁有數(shù)據(jù)庫訪問權限的用戶或pl/sql程序都能使用此database link來訪問相應的遠程數(shù)據(jù)庫。 |
Global | Owner是PUBLIC. | Global的database link是網(wǎng)絡級的,When an Oracle network uses a directory server, the directory server automatically create and manages global database links (as net service names) for every Oracle Database in the network. Users and PL/SQL subprograms in any database can use a global link to access objects in the corresponding remote database. Note: In earlier releases of Oracle Database, a global database link referred to a database link that was registered with an Oracle Names server. The use of an Oracle Names server has been deprecated. In this document, global database links refer to the use of net service names from the directory server. |
1.3. database link的創(chuàng)建
創(chuàng)建dblink的用戶有對應的數(shù)據(jù)庫權限,創(chuàng)建dblink命令為:
--public表示所創(chuàng)建的dblink所有用戶都可以使用
create public database link
或者
--所創(chuàng)建的dblink只能是創(chuàng)建者能使用,別的用戶使用不了
create database link
如果用戶沒有權限創(chuàng)建dblink,則可以通過管理員身份并使用 :
grant create public database link, create database link to myAccount;
1.4. 查看dblink
set linesize 300 set pagesize 999 col DB_LINK format a30 col USERNAME format a30 col HOST format a30 col CREATED format a10 col OWNER format a10 col object_name format a20 select owner,object_name from dba_objects where object_type='DATABASE LINK'; SELECT A.OWNER, A.HOST, A.DB_LINK, A.USERNAME, A.CREATED, DECODE (B.FLAG, 0, 'NO', 1, 'YES') "DEC", B.AUTHUSR, C.STATUS FROM DBA_DB_LINKS A, SYS.USER$ U, SYS.LINK$ B, DBA_OBJECTS C WHERE A.DB_LINK = B.NAME AND A.OWNER = U.NAME AND B.OWNER# = U.USER# AND A.DB_LINK = C.OBJECT_NAME AND A.OWNER = C.OWNER AND C.OBJECT_TYPE = 'DATABASE LINK' ORDER BY 1, 2, 3; 查看dblink的link信息: select * from dba_db_links;
或者
select * from dba_db_links;
如:A庫需要訪問B庫的表數(shù)據(jù),需要在A庫建立連接到B庫的dblink,在A賬戶下執(zhí)行(推薦):
create database link LIS_LINK01 connect to bUser identified by bPasword using '10.22.xx.xx:1521/orcl' create database link hebtz connect to hebtz identified by "1" using '192.168.2xx:1521/hebtzstd';
bUser:B庫的數(shù)據(jù)庫賬戶
bPassword:B庫的數(shù)據(jù)密碼
10.22.xx.xx:B庫的ip地址
create database link blink1 connect to dbName identified by dbPassword using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.106)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))'; --blink1 : 表示dblink名字 --dbName :表示 遠程數(shù)據(jù)庫的用戶 --dbPassword:表示 遠程數(shù)據(jù)庫的密碼 --HOST : 表示遠程數(shù)據(jù)庫IP --PORT : 表示遠程數(shù)據(jù)庫端口 --SERVICE_NAME : 遠程數(shù)據(jù)庫的實例名
1.5. 使用toad for oracle創(chuàng)建dblink
圖解dblink創(chuàng)建過程:
這時可以通過SSH用戶訪問SJSJZX用戶中的表了:
select * from T_WEBSERVICE@db3
1.6. database link刪除
-- 刪除public類型的database link
DROP PUBLIC database link link_name;
-- 刪除非public類型的database link
-- 注意:只有owner自己能刪除自己的非public類型database link
DROP database link link_name;
1.7. 通過dblink應用例子
當需要跨庫拷貝數(shù)據(jù)而且數(shù)據(jù)量很大的時候,使用dblink速度很快。
如:通過dblink跨庫復制數(shù)據(jù)量非常多的表T_WEBSERVICE
create table test as select * from T_WEBSERVICE@db3
到此這篇關于ORACLE DBlink的創(chuàng)建和使用的文章就介紹到這了,更多相關oracle創(chuàng)建dblink內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
AWR 深入分析( Automatic Workload Repository )
本篇文章,小編為大家介紹一下關于AWR 深入分析( Automatic Workload Repository )有需要的朋友可以參考一下2013-04-04IntelliJ DataGrip Oracle 11g遠程連接的方法步驟
本文主要介紹了IntelliJ DataGrip Oracle 11g遠程連接的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09Oracle數(shù)據(jù)庫opatch補丁操作流程
這篇文章主要介紹了Oracle數(shù)據(jù)庫opatch補丁操作流程的相關資料,本文從升級前準備工作到安裝補丁操作整理過程都介紹的非常詳細,需要的朋友可以參考下2016-10-10Oracle數(shù)據(jù)庫rownum和row_number的不同點
在Oracle中,有一個很有趣的東西,那就是rownum。當你從某個表中查詢數(shù)據(jù)的時候,返回的結果集中都會帶有rownum這個字段,而且有時候也可以使用rownum進行一些條件查詢2015-11-11