oracle之dblinks
database link是定義一個資料庫到另一個資料庫的路徑的物件,database link允許你查詢遠端表及執行遠端程式。在任何分散式環境裡,database都是必要的。另外要注意的是database link是單向的連線。
在建立database link的時候,Oracle再資料字典中儲存相關的database link的資訊,在使用database link的時候,Oracle通過Oracle Net用使用者預先定義好的連線資訊訪問相應的遠端資料庫以完成相應的工作。
建立database link之前需要確認的事項:
A 確認從local database到remote database的網路連線是正常的,tnsping要能成功。
B 確認在remote database上面有相應的訪問許可權。
第一:建立資料庫連結的語法如下:
A CREATE [PUBLIC] DATABASE LINK link
CONNECT TO username IDENTIFIED BY password
USING ‘connectstring’
B create PUBLIC database link "qilin"
connect to scott identified by qilin
using '(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.83)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = pridata)
)
)';
注意:
A 建立資料庫連結的帳號必須有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系統許可權,用來登入到遠端資料庫的帳號必須有CREATE SESSION許可權。這兩種 許可權都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK許可權在DBA中)。
B 一個公用資料庫連結對於資料庫中的所有使用者都是可用的,而一個私有連結僅對建立它的使用者可用。由一個使用者給另外一個使用者授權私有資料庫連結是不可能的,一 個資料庫連結要麼是公用的,要麼是私有的。
第二:建立資料庫連結時,還可以使用預設登入方式,即不指定遠端資料庫的使用者名稱和密碼:
create public database link zrhs_link
using ‘zrhs’;
在不指定使用者名稱和口令的情況下,ORACLE使用當前的使用者名稱和口令登入到遠端資料庫。
USING後面指定的是連結字串,也就是遠端資料庫的網路服務名,這個服務名儲存在TNSNAMES.ORA檔案中,在該檔案中定義了協議、主機名、埠和資料庫名。
第三:刪除資料庫連結的語句是:
DROP [PUBLIC] DATABASE LINK zrhs_link
第四:修改gloabal_names=FALSE
SQL> SELECT NAME,VALUE FROM V$PARAMETER WHERE NAME LIKE 'global_names ';
如果看到gloabal_names=true,則:
SQL〉ALTER SYSTEM SET global_names=FALSE;
第五:檢視建立DBLINK的資訊
SQL> select * from dba_db_links;
select * from all_db_links;
select * from user_db_links;
ALL_DB_LINKS 檢視和 USER_DB_LINKS檢視與 DBA_DB_LINKS檢視相類似-它們分別顯示了你能夠訪問的所有連結及你所擁有的全部連結。
第六:DBA_OBJECTS(ALL_OBJECTS/USER_OBJECTS)在這個檢視裡面只能查詢到系統有那些database link以及他們的owner,建立時間等資訊。
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_TYPE LIKE 'DATABASE LINK';
第七:檢視儲存的Fixed user database link所儲存的使用者密碼這是比較危險的一件事,有必要對錶sys.link$的許可權進行限制。
select name, host, userid, passwordx from sys.link$;
第八:檢視當前有什麼人在用database link
SELECT * FROM V$database link
第九:database link的使用
a 不想讓使用的人知道database link的名字的時候,建一個別名封裝
CREATE SYNONYM table_name FOR table_name@database link;
SELECT * FROM table_name;
create synonym su for demo@XIAOLIAO;
select * from su;
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_TYPE LIKE 'SYNONYM' and object_name='SU';
b 也可以建立一個檢視來封裝
CREATE VIEW table_name AS SELECT * FROM table_name@database link;
create view sai as select * from demo@XIAOLIAO;
SELECT OWNER,OBJECT_NAME,OBJECT_TYPE FROM DBA_OBJECTS WHERE OBJECT_TYPE LIKE 'VIEW' and object_name='SAI';
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/20976446/viewspace-687143/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20180529]克隆資料庫與dblinks注意.txt資料庫
- Oracle之StatspackOracle
- Oracle 之HWMOracle
- oracle之StatisticsOracle
- oracle之errorsOracleError
- oracle 之errorsOracleError
- oracle之spoolOracle
- oracle之序列Oracle
- Oracle之表Oracle
- oracle之 Oracle LOB 詳解Oracle
- oracle之 RAC Interconnect之HAIPOracleAI
- oracle之nalyze tableOracle
- oracle之hint概述Oracle
- Oracle之Sequence(序列)Oracle
- oracle之BUG 7497640Oracle
- oracle之DBLINKOracle
- Oracle之記錄Oracle
- Oracle之結構Oracle
- oracle之 Oracle歸檔日誌管理Oracle
- ORACLE基礎之oracle鎖(oracle lock mode)詳解Oracle
- oracle之 反向鍵索引Oracle索引
- Oracle之不可見索引Oracle索引
- Oracle之函式索引Oracle函式索引
- Oracle之虛擬索引Oracle索引
- Oracle 基本操作之 tableOracle
- oracle之rman備份Oracle
- Oracle 之pin和lockOracle
- Oracle工具篇之TkprofOracle
- oracle 之recovery directory databaseOracleDatabase
- oracle 之修改DBIDOracle
- oracle之commit控制OracleMIT
- Oracle 之 閃回操作Oracle
- oracle之啟動errorOracleError
- oracle之資料泵Oracle
- oracle之受限模式修改Oracle模式
- Oracle之觸發器Oracle觸發器
- ORACLE公司之起源(轉)Oracle
- 【TUNE_ORACLE】Oracle Hint之概念與用法Oracle