創建 dblink


目的:oracle中跨數據庫查詢       兩台數據庫服務器db_A(本地)和db_B(遠程192.168.1.100),db_A下用戶user_a 需要訪問到db_B下user_b的數據
解決:查詢得知使用dblink(即database link  數據庫鏈)
實現過程:
1、確定用戶user_a有沒有創建 dblink 的權限:

 

 

      select * from user_sys_privs where privilege like upper('%DATABASE LINK%');    

2、如果沒有,以sys用戶登錄到本地數據庫 給用戶user_a賦權:

     grant CREATE PUBLIC DATABASE LINK,DROP PUBLIC DATABASE LINK to user_a;  

注: dblink有三種權限: CREATE DATABASE LINK(所創建的dblink只能是創建者能使用,別的用戶使用不了) CREATE PUBLIC DATABASE LINK(public表示所創建的dblink所有用戶都可以使用) DROP PUBLIC DATABASE LINK

3、以用戶user_a登錄本地數據庫,創建dblink

 

  1. create public  database link dblink1    
  2.   connect to user_b identified by user_bpass  
  3.   using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';    

注: 當數據庫參數global_name=false時,就不要求數據庫鏈接名稱跟遠端數據庫名稱一樣。 數據庫全局名稱可以用以下命令查出:

      SELECT * FROM GLOBAL_NAME;  

修改可以用以下語句來修改參數值:

  1. ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;  

 

4、創建完成,引用

-- 查詢、刪除和插入數據和操作本地的數據庫是一樣的,只不過表名需要寫成“表名@dblink服務器”而已。   例:

      select * from user_bTablename@dblink1 ;  

 

一般情況下引用數據庫鏈接,可以直接將其放到調用的表名或視圖名稱后面,中間使用一個 @ 作為分割符:

 

5、刪除 DBLink

     drop  public database link dblink1;    

 

6、創建和刪除同義詞

   對於經常使用的數據庫鏈接,可以建立一個本地的同義詞,方便使用     create or replace synonym 同義詞名 for 表名;       create or replace synonym 同義詞名 for 用戶.表名;       create or replace synonym 同義詞名 for 表名@數據庫鏈接名;       drop synonym 同義詞名; 

7、創建和刪除視圖

    create or replace view 視圖名 as (select 字段 from 用戶.表名@dblink1);       drop view 視圖名;   其他: 創建方式二:要求數據庫服務器db_A上 tnsnames.ora 中有 數據庫db_B的映射   (省略) sql>create database link 數據庫鏈路名 connect to 用戶名 identified by 口令 using 'tnsnames.ora配置的主機字符串名';
創建方式三: PL/SQL圖形配置界面

  

 

問題: 已經給了用戶 dblink 的權限,但創建時報權限不足的錯 解決:我給用戶的是 CREATE PUBLIC DATABASE LINK權限,所以創建時需要create public  database link....  而不能是create database link.... 待深入:

每次使用dblink查詢的時候,均會與遠程數據庫創建一個連接,dblink 應該不會自動釋放這個連接,如果是大量使用 dblink 查詢,會造成 web 項目的連接數不夠,導致系統無法正常運行,導致系統無正常運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM