oracle建立dblink
易混淆術語介紹:
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
?
?
總結
以上是生活随笔為你收集整理的oracle建立dblink的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ⒉设置 Bash 选项[3-3]
- 下一篇: 一个按钮触发两个事件可以吗?