日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
Oracle建立DBLINK的詳細步驟記錄

測試條件:

  假設某公司總部在北京,新疆有其下屬的一個分公司。在本次測試中,新疆的計算機為本地計算機,即本要的IP地址為:192.168.1.100

  北京的總部有一個集中的數據庫,其SID是SIDBJ,用戶名:userbj,密碼:bj123,北京的IP地址是:192.168.1.101。

  在本地(新疆)的分公司也有一個數據庫,其SID是SIDXJ,用戶:userxj,密碼:xj123,新疆的IP地址是:192.168.1.100。

  要將本地新疆的SIDXJ數據庫中訪問到北京的數據庫SIDBJ中的數據。

  也就是說,在sidxj的數據庫中,用戶userxj(192.168.1.100)需要建立DBLINK,以userbj的用戶身份訪問sidBJ(192.168.1.101)中的數據。

  測試環(huán)境:兩個數據庫均建立在WINXP上,ORACLE的版本均為Oracle817

  建立環(huán)境時,要注意關閉兩臺計算機上的Windows的防火墻,否則,會出現能ping通,但Oracle連接不通的情況。

  1、問:如何返回數據庫的GLOBAL_NAME?

  執(zhí)行SELECT * FROM GLOBAL_NAME;

  北京的數據庫的GLOBAL_NAME為SIDBJ.US.ORACLE.COM

  新疆的數據庫的GLOBAL_NAME為SIDXJ

  2、問:如何查看Global_name參數是true還是False?

  答:執(zhí)行:SQL> show parameter global_name;

  執(zhí)行的結果如下:

  NAME TYPE VALUE
  ------------------------------------ ----------- ------------------------------
  global_names boolean TRUE

  表示該參數是true.

  該參數為true時,你在本地建立的DBLINK的名稱必須和遠程的Global_name一致才行。

  3、問:查看遠程數據徊是否支持高級復制功能。

  答:通過查看v$option視圖,如果其中Advanced replication為TRUE,則支持高級復制功能;否則不支持。

  執(zhí)行語句為:select * from v$option;

  也可以執(zhí)行select * from v$option where PARAMETER='Advanced replication'語句,

  如何返回值為True,那么就是支持,否則就是不支持。在兩個數據庫中都是檢查是否支持才行。

#p#

建立步驟:

  1、在本地建立一個Oracle的客戶端連接tns_xj_to_bj,用于連接北京的數據庫。

  在北京的數據庫中,建立一個表用于測試。

  create table USERBJ.BJ_TEST
  (
  STU_ID NUMBER,
  STU_NAME VARCHAR2(100)
  )

  在其中增加一條記錄:

  insert into BJ_TEST (STU_ID, STU_NAME)

  values (1, '鐘德榮');

  2、新建一個連接tnsxj,用于連接本地的sidxj數據庫,以tnsxj/userxj/xj123登錄到PLSQL中。

  下面開始創(chuàng)建連接到北京的遠程數據連接DBLink。

  create database link SIDBJ.US.ORACLE.COM connect to userbj identified by bj123 using 'tns_xj_to_bj';

  其中:SIDBJ.US.ORACLE.COM是遠程的數據庫的global_name,userbj是連接SIDBJ的用戶名,bj123是userbj的密碼,

  tns_xj_to_bj是本地建立的連接到北京的數據庫的服務名。

  3、測試連接是否成功:

  select * from dual@SIDBJ.US.ORACLE.COM

  如果返回結果如下則表示連接成功了。

  DUMMY

  -----

  X

  4、在本地數據為中查詢已經建立的遠程連接名:

  SQL> select owner,object_name from dba_objects where object_type='DATABASE LINK';
  OWNER OBJECT_NAME
  ------------------------------ --------------------------------------------------------------------------------
  SYSTEM SIDBJ.US.ORACLE.COM
  USERXJ DBLINK_XJ_TO_BJ
  USERXJ SIDBJ

  5、至此,在新疆的計算機上建立了一個DBLINK,用于連接到北京的數據庫上,

  在新疆的數據庫中查詢北京的數據庫中表的信息:

  select * from bj_test@SIDBJ.US.ORACLE.COM

  查詢結果:

  STU_ID STU_NAME
  ---------- --------------------------------------------------------------------------------

  1 鐘德榮

  表示查詢是正常的。

  6、關于global_name參數的測試

  create database link a connect to userbj identified by bj123 using 'tns_xj_to_bj';

  建立了一個DBLINK,執(zhí)行下面的查詢:

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

  可以看到已經建立了名為:a的DBLINK。

  但執(zhí)行下面的查詢,檢索遠程數據時,就會出現錯誤。

  select * from bj_test@a

  原因是因為本地數據庫的global_names的參數值為true,所以,dblink的名稱必須和遠程數據庫的global_names相同。

  要修改本地數據庫的global_names參數為false;(注意是修改本地數據庫SIDXJ,通過測試修改過程的參數不行,過程的global_names參數為TRUE還是為FALSE沒有關系)

  使用下面的語句修改該參數:

  SQL> alter system set global_names=false;

  再執(zhí)行下面的幾步即可查詢出數據:

  create database link a connect to userbj identified by bj123 using 'tns_xj_to_bj'; --創(chuàng)建DBLINK

  select owner,object_name from dba_objects where object_type='DATABASE LINK';--查詢現有的DBLINK

  select * from bj_test@a--查詢遠程表

  7、下面在SIDXJ中建立存儲過程,通過DBLINK檢索遠程數據庫SIDBJ, 存儲過程如下:

  CREATE OR REPLACE PROCEDURE test_cur
  as
  strSql1 varchar2(1000);
  t_stu_name varchar2(100);
  TYPE TCUR IS REF CURSOR;
  CUR TCUR;
  begin
  strSql1:='select stu_name from bj_test@a';
  OPEN CUR FOR strSql1;
  LOOP
  FETCH CUR INTO t_stu_name;
  EXIT WHEN CUR%NOTFOUND;
  DBMS_OUTPUT.PUT_LINE(t_stu_name);
  END LOOP;
  CLOSE CUR;
  end test_cur;

  測試存儲過程顯示,輸出了過程數據庫中的STU_NAME的值。

  以上腳本全部在ORACLE817下通過測試。

通過上文中介紹的幾步就能夠輕松實現Oracle建立DBLINK,通過本文的學習,希望大家都能夠掌握Oracle建立DBLINK的方法,相信在以后的工作中是很有用處的。


文章標題:Oracle建立DBLINK的詳細步驟記錄
地址分享:http://www.dlmjj.cn/article/cossjig.html