【PL/SQL】oracle建立dblink

散葉涔發表於2012-04-18

易混淆術語介紹:
Db_name:對一個資料庫(Oracle database)的唯一標識,該資料庫為第一章講到的Oracle database。這種表示對於單個資料庫是足夠的,但是隨著由多個資料庫構成的分散式資料庫的普及,這種命令資料庫的方法給資料庫的管理造成一定的負擔,因為各個資料庫的名字可能一樣,造成管理上的混亂。為了解決這種情況,引入了Db_domain引數,這樣在資料庫的標識是由Db_name和Db_domain兩個引數共同決定的,避免了因為資料庫重名而造成管理上的混亂。這類似於互連網上的機器名的管理。我們將Db_name和Db_domain兩個引數用’.’連線起來,表示一個資料庫,並將該資料庫的名稱稱為Global_name,即它擴充套件了Db_name。Db_name引數只能由字母、數字、’_’、’#’、’$’組成,而且最多8個字元。

Db_domain:定義一個資料庫所在的域,該域的命名同網際網路的’域’沒有任何關係,只是資料庫管理員為了更好的管理分散式資料庫而根據實際情況決定的。當然為了管理方便,可以將其等於網際網路的域。

Global_name:對一個資料庫(Oracle database)的唯一標識,oracle建議用此種方法命令資料庫。該值是在建立資料庫是決定的,預設值為Db_name. Db_domain。在以後對引數檔案中Db_name與Db_domain引數的任何修改不影響Global_name的值,如果要修改Global_name,只能用ALTER DATABASE RENAME GLOBAL_NAME TO 命令進行修改,然後修改相應引數。

Service_name:該引數是oracle8i新引進的。在8i以前,我們用SID來表示標識資料庫的一個例項,但是在Oracle的並行環境中,一個資料庫對應多個例項,這樣就需要多個網路服務名,設定繁瑣。為了方便並行環境中的設定,引進了Service_name引數,該引數對應一個資料庫,而不是一個例項,而且該引數有許多其它的好處。該引數的預設值為Db_name. Db_domain,即等於Global_name。一個資料庫可以對應多個Service_name,以便實現更靈活的配置。該引數與SID沒有直接關係,即不必Service name 必須與SID一樣。

Net service name:網路服務名,又可以稱為資料庫別名(database alias)。是客戶端程式訪問資料庫時所需要,遮蔽了客戶端如何連線到伺服器端的細節,實現了資料庫的位置透明的特性。

 例項 就是管理相關庫的記憶體結構的名字(由SGA、PGA、伺服器程式、使用者程式、後臺程式等組成)

  資料庫 就是實際的磁碟上的檔案(資料檔案、日誌檔案、控制檔案等),負責儲存資料,但由對應的例項來操作它的資料

  服務名 就是對外公佈的名稱,為網路監聽服務

  其實,在我們傳統的概念裡,資料庫是一個統稱的名字,在Oracle中,你可以把“資料庫”理解成一個大概念,也要把它理解成一個小概念

  

  1、一個Oracle資料庫系統中可以同時安裝幾個資料庫,每一個資料庫對應一個唯

  一的例項,但是OPS系統除外,可以多個例項同時對一個資料庫操作,稱為並行服務

  器

  2、只是一個名字,SID即是INSTANCE_NAME,SERVICE_NAMES主要用在監聽器中,

  為了方便吧,有些是為了傳統習慣的延續,有些是為了更方便的使用

  3、NET EASY CONFIG操縱的應該是主機字串,是為客戶端服務的

  一個資料庫可以對外公佈多個服務名(SERVICE_NAMES)

  一個客戶端也可以用多個主機字串連線到同一個資料庫伺服器上

  4、一個OS上可以裝多個Oracle資料庫(小的概念),每個庫可以對外公佈多個服

  務名,都透過init.ora和listener.ora來實現

-----------------------------------------------------

1建立net 服務名

linux下 進入

cd $ORACLE_HOME/network/admin

vi tnsnames.ora

新增

CCPBS_19 =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.130.38.19)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = CCPBS)
)
)

儲存 退出 然後測試下

>tnsping ccpbs_19

TNS Ping Utility for Linux: Version 9.2.0.7.0 - Production on 02-JUL-2009 15:16:52

Copyright (c) 1997 Oracle Corporation. All rights reserved.

Used parameter files:


Used TNSNAMES adapter to resolve the alias
Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.130.38.19)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = CCPBS)))
OK (20 msec)

測試成功

Windows下的參見

2、建立資料庫連結,

/home/oracle/>sqlplus /nolog

SQL*Plus: Release 9.2.0.7.0 - Production on Thu Jul 2 16:01:00 2009

Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.

SQL> conn /as sysdba
Connected.

進入系統管理員SQL>運算子下,執行命令:

>create public database link ecbm_19 connect to ecbm_userName identified by ecbm_pwd using 'CCPBS_19';

Database link created.

格式:

create public database link link_name connect to user identified by password using 'SID';

  則建立了一個連線到10.130.38.19 ccpbs上以ecbm_userName 使用者的連線

查詢資料時帶上@ecbm_19 就ok了 如select * from ;

刪除 DROP PUBLIC DATABASE LINK ecbm_19;

 3、建立同義詞,為了使有關分散式操作更透明,ORACLE資料庫裡有同義詞的物件synonym

  

  SQL>create synonym bjscottemp for emp@beijing;

  

  於是就可以用bjscottemp來替代帶@符號的分散式連結操作emp@beijing

  

create public synonym poh for po_headers_all@erp_danzheng_test;

create public synonym papf for per_all_people@erp_danzheng_test;

create public synonym pv for ;

 4、檢視所有的資料庫連結,進入系統管理員SQL>運算子下,執行命令:

  

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

參考 http://moonsoft.itpub.net/post/15182/125559

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26892340/viewspace-721548/,如需轉載,請註明出處,否則將追究法律責任。

相關文章