• <ul id="mayc0"></ul>
    <ul id="mayc0"><center id="mayc0"></center></ul>
    <strike id="mayc0"><input id="mayc0"></input></strike>
    <ul id="mayc0"></ul>
  • 始創于2000年 股票代碼:831685
    咨詢熱線:0371-60135900 注冊有禮 登錄
    • 掛牌上市企業
    • 60秒人工響應
    • 99.99%連通率
    • 7*24h人工
    • 故障100倍補償
    您的位置: 網站首頁 > 幫助中心>文章內容

    在Oracle下如何創建database link全面總結

    發布時間:  2012/8/26 15:23:23

    物理上存放于網絡的多個Oracle數據庫,邏輯上可以看成一個單一的大型數據庫,用戶可以通過網絡對異地數據庫中的數據進行存取,而服務器之間的協同處理對于工作站用戶及應用程序而言是完全透明的,開發人員無需關心網絡的鏈接細節、數據在網絡節點中的具體分布情況和服務器間的協調工作過程。

    數據庫之間的鏈接建立在DATABASE LINK上。要創建一個DATABASE LINK,必須首先在建立鏈接的數據庫上設置鏈接字符串,即配置一個遠程數據庫的本地網絡服務名。
    -
     

    鏈接字符串的配置參見《客戶端連接服務器》一節。


    數據庫全局名稱可以用以下命令查出:

    SELECT * FROM GLOBAL_NAME;

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

    ALTER SYSTEM SET GLOBAL_NAME=TRUE/FALSE;

    <1>、當數據庫參數global_name=false時,就不要求數據庫鏈接名稱跟遠端數據庫名稱一樣。

    Oracle數據庫之間進行連接通訊。
    創建數據庫鏈接的語法如下:
    CREATE [PUBLIC] DATABASE LINK link

    CONNECT TO username IDENTIFIED BY password

    USING ‘connectstring’

    其中:
    --demona為用net8 easy config創建的連接字符串
    目的方數據庫的init.ora文件中的global_names設為false
    重新啟動數據庫設置才能生效
    或者用sys用戶執行

    注意:創建數據庫鏈接的帳號必須有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系統權限,用來登錄到遠程數據庫的帳號必須有CREATE SESSION權限。這兩種權限都包含在CONNECT角色中(CREATE PUBLIC DATABASE LINK權限在DBA中)。

    一個公用數據庫鏈接對于數據庫中的所有用戶都是可用的,而一個私有鏈接僅對創建它的用戶可用。由一個用戶給另外一個用戶授權私有數據庫鏈接是不可能的,一個數據庫鏈接要么是公用的,要么是私有的。

    創建數據庫鏈接時,還可以使用缺省登錄方式,即不指定遠程數據庫的用戶名和密碼:

    create public database link zrhs_link

    using ‘zrhs’;

    在不指定用戶名和口令的情況下,Oracle使用當前的用戶名和口令登錄到遠程數據庫。

    USING后面指定的是鏈接字符串,也就是遠程數據庫的網絡服務名,這個服務名保存在TNSNAMES.ORA文件中,在該文件中定義了協議、主機名、端口和數據庫名。

    (如果有兩臺數據庫服務器db_A和db_B,db_A下用戶user_a需要用database link訪問到db_B下user_b的數據時,有如下步驟:1、首先用戶user_b,這個用戶必須要有select 權限.2、在db_B上的tnsnames.ora中需要建立一個連接字符串tnsname_BtoA,可以從db_B連接到db_A。3、在db_A上的tnsnames.ora中需要建立一個連接字符串tnsname_AtoB,可以從db_A連接到db_B。4、然后在登陸到db_A上建立db link,格式如下: create database link link_AtoB_name connect to user_b identified by user_b的password using 'tnsname_AtoB'; link_AtoB_name必須是遠程數據庫的全局名(SID), tnsname_AtoB就是到遠程的連接字符串。5、測試是否能夠讀取數據。select * from dual@link_AtoB_name結果為: DUMMY X表示設置成功。)

    刪除數據庫鏈接的語句是:

    DROP [PUBLIC] DATABASE LINK zrhs_link

    數據庫鏈接的引用

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

    SELECT * FROM worker@zrhs_link;

    對于經常使用的數據庫鏈接,可以建立一個本地的同義詞,方便使用:

    CREATE SYNONYM worker_syn FOR worker@zrhs_link;

    還可以建立一個本地的遠程視圖,方便使用:

    CREATE VIEW worker AS SELECT * FROM worker@zrhs_link where… ;

    現在本視圖可與本地數據庫中的任何其它視圖一樣對待,也可以授權給其它用戶,訪問此視圖,但該用戶必須有訪問數據庫鏈接的權限。

    對于另外一種情況,所要訪問的表不在數據庫鏈接中指定的遠程帳戶下,但該帳戶有訪問該表的權限,那么我們在表名前要加上該表的用戶名:

    SELECT * FROM camel.worker@zrhs_link ;

    <2>、當數據庫參數global_name=true時,那就要求數據庫鏈接名稱跟遠端數據庫名稱一樣
    數據庫全局名稱可以用以下命令查出

    SELECT * FROM GLOBAL_NAME;

    atabase link(dblink)--數據庫鏈路
    創建dblink的語法:
    sql>create database link 數據庫鏈路名
    connect to 用戶名 identified by 口令
    using '主機字符串名';
    如:
    sql>create database link ora9i.us.Oracle.com ### 這里的us.oracle.com為oracle默認域名 ###
    connect to scott identified by tiger
    using 'sun';

    1)dblink名必須與遠程數據庫的全局數據庫名(global_name)相同;
    2)用戶名,口令為遠程數據庫用戶名,口令;
    3)主機字符串為本機tnsnames.ora中定義的串;
    4)兩個同名的數據庫間不得建立dblink;
    然后,你就可以通過dblink訪問遠程數據庫了。
    如:
    sql>select * from 表名@ora9i.us.Oracle.com;
    還可以建立快照(snapshot)通過dblink實現遠程數據自動傳輸。

    查看所有的數據庫鏈接,進入系統管理員SQL>操作符下,運行命令:

    SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK'


    本文出自:億恩科技【www.vbseamall.com】

    服務器租用/服務器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經營性ICP/ISP證:贛B2-20080012
  • 服務器/云主機 24小時售后服務電話:0371-60135900
  • 虛擬主機/智能建站 24小時售后服務電話:0371-60135900
  • 專注服務器托管17年
    掃掃關注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權所有  地址:鄭州市高新區翠竹街1號總部企業基地億恩大廈  法律顧問:河南亞太人律師事務所郝建鋒、杜慧月律師   京公網安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時客服服務熱線