使用Oracle DBLink進(jìn)行數(shù)據(jù)庫之間對(duì)象的訪問操作
來源:程序員人生 發(fā)布時(shí)間:2014-10-08 23:41:41 閱讀次數(shù):2855次
Oracle中自帶了DBLink功能,它的作用是將多個(gè)oracle數(shù)據(jù)庫邏輯上看成一個(gè)數(shù)據(jù)庫,也就是說在一個(gè)數(shù)據(jù)庫中可以操作另一個(gè)數(shù)據(jù)庫中的對(duì)象,例如我們新建了一個(gè)數(shù)據(jù)database1,我們需要操作數(shù)據(jù)庫database2中的表,或者我們需要操作遠(yuǎn)程機(jī)器上數(shù)據(jù)庫database3中的表,我們就可以使用dblink這個(gè)強(qiáng)大的功能!
1、我們?nèi)绻獎(jiǎng)?chuàng)建全局的DBLink,就是說無論什么角色都可以使用,那么我們需要先確定用戶是否有DBLink權(quán)限,如果沒有則需要使用sysdba角色給用戶授權(quán):
查看用戶是有有DBLink權(quán)限:
select * from user_sys_privs where privilege like upper('%DATABASE LINK%');
沒有,則使用sysdba授權(quán):
grant create public database link to dbusername;
2、使用語句創(chuàng)建DBLink:
create database link 要?jiǎng)?chuàng)建的dblink名稱
connect to 要連接數(shù)據(jù)庫的用戶名 identified by 要連接數(shù)據(jù)的密碼
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 連接數(shù)據(jù)庫主機(jī)IP地址)(PORT = 端口號(hào)))
)
(CONNECT_DATA =
(SERVICE_NAME = 連接數(shù)據(jù)庫服務(wù)名)
)
)';
如果創(chuàng)建全局 dblink,必須使用 systm 或 sys 用戶,在 database 前加 public:
create public database....
例如,在testdb2中創(chuàng)建test_dblink,來操作主機(jī)192.168.1.254中testdb1數(shù)據(jù)庫:
create database link tset_dblink
connect to username identified by password1
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.254)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = testdb1)
)
)';
3、使用DBLink:
查詢另一個(gè)數(shù)據(jù)庫中的數(shù)據(jù),其他修改、刪除是一樣的使用,都是另一個(gè)數(shù)據(jù)庫表名@本數(shù)據(jù)庫創(chuàng)建dblink名稱:
select xxx FROM 表名@dblink名稱;
例如我們?cè)?span style="font-family:Arial; font-size:18px; line-height:25.984375px">testdb2中使用dblink查看testdb1中tb_user表中的數(shù)據(jù):
select * from tb_user@tset_dblink;
查看數(shù)據(jù)中創(chuàng)建的dblink:
select owner,object_name from dba_objects where object_type='DATABASE LINK';
select * from dba_db_links;
刪除相應(yīng)的dblink:
drop database link dblink名稱;
關(guān)閉dblink連接:
alter session close database link 'dblink_name'
創(chuàng)建和刪除視圖:
create or replace view 視圖名 as (select 字段 from 用戶.表名@dblink1);
drop view 視圖名;
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對(duì)您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈(zèng)