易混淆術語介紹:
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 <db_name.db_domain>命令進行修改,然後修改相應參數。
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下的參見 http://article.pchome.net/content-340501.html
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 emp@ecbm_19;
刪除 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 po_vendors@erp_danzheng_test;
4、查看所有的資料庫連結,進入系統管理員SQL>操作符下,運行命令:
SQL>select owner,object_name from dba_objects where object_type='DATABASE LINK';
參考 http://moonsoft.itpub.net/post/15182/125559