有效創(chuàng)建oracledblink的兩種方式

字號:

兩臺不同的數(shù)據(jù)庫服務(wù)器,從一臺數(shù)據(jù)庫服務(wù)器的一個用戶讀取另一臺數(shù)據(jù)庫服務(wù)器下的某個用戶的數(shù)據(jù),這個時候可以使用dblink。
    其實dblink和數(shù)據(jù)庫中的view差不多,建dblink的時候需要知道待讀取數(shù)據(jù)庫的ip地址,ssid以及數(shù)據(jù)庫用戶名和密碼。
    創(chuàng)建可以采用兩種方式:
    1、已經(jīng)配置本地服務(wù)
    以下是引用片段:
    create public database
    link fwq12 connect to fzept
    identified by neu using 'fjept'
    CREATE DATABASE LINK數(shù)據(jù)庫鏈接名CONNECT TO 用戶名 IDENTIFIED BY 密碼 USING ‘本地配置的數(shù)據(jù)的實例名’;
    2、未配置本地服務(wù)
     以下是引用片段:
    create database link linkfwq
     connect to fzept identified by neu
     using '(DESCRIPTION =
     (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))
     )
     (CONNECT_DATA =
     (SERVICE_NAME = fjept)
     )
     )';
    host=數(shù)據(jù)庫的ip地址,service_name=數(shù)據(jù)庫的ssid。
    其實兩種方法配置dblink是差不多的,我個人感覺還是第二種方法比較好,這樣不受本地服務(wù)的影響。
    數(shù)據(jù)庫連接字符串可以用NET8 EASY CONFIG或者直接修改TNSNAMES.ORA里定義.
    數(shù)據(jù)庫參數(shù)global_name=true時要求數(shù)據(jù)庫鏈接名稱跟遠端數(shù)據(jù)庫名稱一樣
    數(shù)據(jù)庫全局名稱可以用以下命令查出
    SELECT * FROM GLOBAL_NAME;
    查詢遠端數(shù)據(jù)庫里的表
    SELECT …… FROM 表名@數(shù)據(jù)庫鏈接名;
    查詢、刪除和插入數(shù)據(jù)和操作本地的數(shù)據(jù)庫是一樣的,只不過表名需要寫成“表名@dblink服務(wù)器”而已。
    附帶說下同義詞創(chuàng)建:
    CREATE SYNONYM同義詞名FOR 表名;
    CREATE SYNONYM同義詞名FOR 表名@數(shù)據(jù)庫鏈接名;
    刪除dblink:DROP PUBLIC DATABASE LINK linkfwq。
    如果創(chuàng)建全局dblink,必須使用systm或sys用戶,在database前加public。