2017年計(jì)算機(jī)等考四級(jí)數(shù)據(jù)庫(kù)工程師資料:分布式ORACLE系統(tǒng)簡(jiǎn)介

字號(hào):

  1.分布式體系結(jié)構(gòu)的ORACLE
    1986年,ORACLE公司推出了它的分布式體系結(jié)構(gòu)的ORACLE數(shù)據(jù)庫(kù)系統(tǒng)。該系統(tǒng)是由分布式數(shù)據(jù)庫(kù)管理系統(tǒng)(ORACLE RDBMS)、支持多種操作系統(tǒng)和通信協(xié)議的分布式處理環(huán)境軟件SQL*NET、以及與非ORACLE RDBMS聯(lián)接的軟件SQL*CONNECT這三部分組成的一個(gè)軟件群。分布式ORACLE采用了典型的開(kāi)放式體系結(jié)構(gòu),對(duì)環(huán)境的適應(yīng)范圍非常廣泛,可適應(yīng)多種通信協(xié)議、多種操作系統(tǒng)、多種硬件環(huán)境及多種DBMS和數(shù)據(jù)源。
    2.網(wǎng)絡(luò)ORACLE的連接過(guò)程
    網(wǎng)絡(luò)ORACLE的連接過(guò)程大致包括以下幾步:
    (1)確認(rèn)網(wǎng)絡(luò)結(jié)點(diǎn)是否安裝了SQL*NET,如未安裝,則需執(zhí)行:*$SYS@ORACLE:NCONFIG.COM≠進(jìn)行安裝,并且使用SGAPAD.COM重新鏈接。
    (2)確認(rèn)安裝中選取的網(wǎng)絡(luò)驅(qū)動(dòng)器與操作系統(tǒng)環(huán)境下所配置的通信協(xié)議是否相符。(3)待(1)、(2)兩項(xiàng)均確認(rèn)后,則可在服務(wù)器(Server)結(jié)點(diǎn)上建立一個(gè)命令文件。這個(gè)命令文件主要完成以下工作:指定ORACLE系統(tǒng)標(biāo)識(shí)碼SID,從而確定將哪一個(gè)ORACLE RDBMS作為服務(wù)器。這是因?yàn)橥瑱C(jī)上可運(yùn)行多個(gè)ORACLE RDBMS,指定方式為:$ASSIGN〈SID標(biāo)識(shí)碼〉ORACLE$SID指定ORACLE系統(tǒng)所在目錄:$ASSIGN〈目錄名〉SYS$ORACLE指定SQL*NET執(zhí)行代碼的邏輯名$ORASRV=SYS$ORACLE:ORASRV.EXE啟動(dòng)SQL*NET的執(zhí)行代碼$ORASRV DECNET-NSP:
    (4)待完成以后,用戶(hù)即可進(jìn)行遠(yuǎn)程訪(fǎng)問(wèn)。(注意兩個(gè)結(jié)點(diǎn)上的ORACLE系統(tǒng)應(yīng)處于開(kāi)啟狀態(tài))
    (5)為了加強(qiáng)網(wǎng)絡(luò)通信管理和避免沖突等原因,可以通過(guò)VAX/VMS網(wǎng)絡(luò)控制程序NCP建立一和于ORACLE網(wǎng)絡(luò)通信的缺省帳號(hào)。
    3.網(wǎng)絡(luò)ORACLE的使用
    除了以下實(shí)用程序以外,其它ORACLE實(shí)用程序和軟件工具均可以通過(guò)SQL*NET訪(fǎng)問(wèn)遠(yuǎn)程結(jié)點(diǎn)的ORACLE系統(tǒng)IOR AJI僅供本地使用。另外,用戶(hù)通過(guò)各種語(yǔ)言編寫(xiě)的應(yīng)用程序也可以進(jìn)行遠(yuǎn)程存取。用戶(hù)遠(yuǎn)程存取的方式非常簡(jiǎn)單,僅需要在“用戶(hù)名/口令”(ORACLE的合法用戶(hù))后面附上結(jié)點(diǎn)信息。
    4.分布式查詢(xún)
    分布式查詢(xún)和數(shù)據(jù)傳輸,主要指用戶(hù)在前端機(jī)上執(zhí)行本地的進(jìn)程通過(guò)SQL語(yǔ)句或SQLplus命令查詢(xún)或傳輸遠(yuǎn)程結(jié)點(diǎn)上的數(shù)據(jù)。由于網(wǎng)絡(luò)ORACLE系統(tǒng)的分布式查詢(xún)功能很強(qiáng),用戶(hù)可以同時(shí)查詢(xún)多個(gè)結(jié)點(diǎn)上的數(shù)據(jù)庫(kù)數(shù)據(jù)。傳輸數(shù)據(jù)功能用于兩個(gè)結(jié)點(diǎn)之間數(shù)據(jù)及定義的復(fù)制,下面將分別介紹。ORACLE系統(tǒng)分布式查詢(xún)的功能使得一個(gè)結(jié)點(diǎn)上的用戶(hù)可以通過(guò)SQL查詢(xún)語(yǔ)句訪(fǎng)問(wèn)其它結(jié)點(diǎn)數(shù)據(jù)庫(kù)的數(shù)據(jù)。并且用戶(hù)還可以同時(shí)存取訪(fǎng)問(wèn)多個(gè)結(jié)點(diǎn)(包括本地結(jié)點(diǎn))的數(shù)據(jù),從而使數(shù)據(jù)庫(kù)的查詢(xún)功能大大增強(qiáng)。
    (1)數(shù)據(jù)庫(kù)鏈路(DATABASE LINK)為了使分布式查詢(xún)操作更加簡(jiǎn)單方便,ORACLE RDBMS為用戶(hù)提供了一個(gè)新的數(shù)據(jù)定義方式:數(shù)據(jù)庫(kù)鏈路。用戶(hù)可以通過(guò)數(shù)據(jù)庫(kù)鏈路定義,在本地結(jié)點(diǎn)和遠(yuǎn)程之間進(jìn)行查詢(xún)和連接。進(jìn)行遠(yuǎn)程訪(fǎng)問(wèn)的用戶(hù)需要明確:遠(yuǎn)程數(shù)據(jù)庫(kù)所在的結(jié)點(diǎn);遠(yuǎn)程結(jié)點(diǎn)上的哪個(gè)數(shù)據(jù)庫(kù);遠(yuǎn)程數(shù)據(jù)庫(kù)的哪個(gè)用戶(hù)。數(shù)據(jù)庫(kù)鏈路即用于標(biāo)識(shí)以上內(nèi)容。用戶(hù)通過(guò)SQL的CREATE DATABASE LINK語(yǔ)句定義數(shù)據(jù)庫(kù)鏈路。其格式為:CREATE[PUBLIC]DATABASE LINK鏈路名CONNECT TO用戶(hù)名INENTIFIED BY口令USING‘驅(qū)動(dòng)器前綴:結(jié)點(diǎn)名““操作系統(tǒng)用戶(hù)名口令”””::“““TASK=ORDN后綴.COM”””;如果用戶(hù)事先定義一個(gè)邏輯名:$ASSIGN結(jié)點(diǎn)名,“““操作系統(tǒng)用戶(hù)名口令”””::“““TASK=ORDN后綴.COM”””,邏輯名那么CREATE DATABASE LINK就變得十分簡(jiǎn)潔:CREATE[PUBLIC]DATABASE LINK鏈路名CONNECT TO用戶(hù)名IDENTIFIED BY口令USING‘驅(qū)動(dòng)器前綴:邏輯名’;這里PUBLIC代表公用數(shù)據(jù)庫(kù)鏈路,只有DBA才能使用PUBLIC限定詞。
    (2)遠(yuǎn)程查詢(xún)操作在數(shù)據(jù)庫(kù)鏈路定義以后,遠(yuǎn)程查詢(xún)就變得非常簡(jiǎn)單和方便。用戶(hù)訪(fǎng)問(wèn)查詢(xún)數(shù)據(jù)庫(kù)的表或視圖時(shí),只要在表名或視圖名后面附上數(shù)據(jù)庫(kù)鏈路名即可通過(guò)SELECT語(yǔ)句進(jìn)行查詢(xún)。其形式為:SELECT列表達(dá)式[,列表達(dá)式,…] FROM表名@數(shù)據(jù)庫(kù)鏈路名[,表名@數(shù)據(jù)庫(kù)鏈路名,…] [WHERE邏輯表達(dá)式];
    (3)定義同義名用戶(hù)可以用同義名來(lái)簡(jiǎn)化一些繁瑣的表名或視圖名。對(duì)于遠(yuǎn)程查詢(xún)操作,用戶(hù)也可以為遠(yuǎn)程數(shù)據(jù)庫(kù)的表名或視圖名定義相應(yīng)的同義名。
    (4)連接操作在遠(yuǎn)程查詢(xún)中,用戶(hù)可以連接相同(或不同)結(jié)點(diǎn)上數(shù)據(jù)庫(kù)中的表。連接(JOIN)操作可以針對(duì)以下情況:同一數(shù)據(jù)庫(kù)中的兩個(gè)表或多個(gè)表;同一結(jié)點(diǎn)不同數(shù)據(jù)庫(kù)中的兩個(gè)表或多個(gè)表;不同結(jié)點(diǎn)上數(shù)據(jù)庫(kù)中的兩個(gè)表或多個(gè)表;
    (5)查詢(xún)遠(yuǎn)程數(shù)據(jù)庫(kù)中其他用戶(hù)的數(shù)據(jù)用戶(hù)在通過(guò)數(shù)據(jù)庫(kù)鏈路進(jìn)行遠(yuǎn)程查詢(xún)時(shí),可以訪(fǎng)問(wèn)其他用戶(hù)的數(shù)據(jù)。數(shù)據(jù)庫(kù)鏈路的定義中指定一個(gè)遠(yuǎn)程用戶(hù)名及口令,這個(gè)用戶(hù)名被稱(chēng)為鏈路用戶(hù)名。上面所述的“其他用戶(hù)”即指非鏈路用戶(hù)。如果鏈路用戶(hù)具有訪(fǎng)問(wèn)其他某一用戶(hù),記為用戶(hù)A的權(quán)限,那么,Client用戶(hù)就可以通過(guò)數(shù)據(jù)庫(kù)鏈路查詢(xún)服務(wù)器用戶(hù)A中的數(shù)據(jù)。
    (6)遠(yuǎn)程子查詢(xún)前面介紹的是基于主查詢(xún)的遠(yuǎn)程訪(fǎng)問(wèn)。事實(shí)上,SQL語(yǔ)句中的子查詢(xún)(Sub-query)也可以訪(fǎng)問(wèn)遠(yuǎn)程結(jié)點(diǎn)的數(shù)據(jù)庫(kù)數(shù)據(jù)。這種子查詢(xún)稱(chēng)為遠(yuǎn)程子查詢(xún)??汕度氩樵?xún)的語(yǔ)句有:SELECT INSERT UPDATE CREATE TABLE CREATE VIEW
    5.遠(yuǎn)程數(shù)據(jù)傳輸
    目前網(wǎng)絡(luò)ORACLE系統(tǒng)尚不能通過(guò)INSERT,UPDATE語(yǔ)句更新遠(yuǎn)程結(jié)點(diǎn)的數(shù)據(jù)庫(kù)數(shù)據(jù)。但是ORACLE提供結(jié)點(diǎn)之間傳輸數(shù)據(jù)庫(kù)數(shù)據(jù)的能力。SQL/plus的COPY命令將用于實(shí)現(xiàn)這一功能。用戶(hù)使用COPY命令可以進(jìn)行從一個(gè)結(jié)點(diǎn)(稱(chēng)為源結(jié)點(diǎn))到另一結(jié)點(diǎn)(稱(chēng)為目標(biāo)結(jié)點(diǎn))之間的數(shù)據(jù)傳輸或復(fù)制。使用COPY命令與數(shù)據(jù)庫(kù)鏈路的定義類(lèi)似,需要反映定結(jié)點(diǎn)名、數(shù)據(jù)庫(kù)(即命令文件和“用戶(hù)名/口令”。其中源描述和目標(biāo)描述分別用于指示源結(jié)點(diǎn)目標(biāo)結(jié)點(diǎn)上的結(jié)點(diǎn)名、數(shù)據(jù)庫(kù)(即命令文件)和“用戶(hù)名/口令”,下面是COPY命令的基本形式:COPY[FROM源名][TO目標(biāo)名] {APPEND|CREATE|INSERT|REPLACE} 表名[(列名[,列名…])] USING SELECT語(yǔ)句其中源名和目標(biāo)名分別用于指定源結(jié)點(diǎn)和目標(biāo)結(jié)點(diǎn)上的結(jié)點(diǎn)名、數(shù)據(jù)庫(kù)和“用戶(hù)名/口令”,如:用戶(hù)名/口令@驅(qū)動(dòng)器前綴:結(jié)點(diǎn)名“““用戶(hù)名口令”””::“““TASK=ORDN后綴.COM”””;如果事先分配了邏輯名,則源描述和目標(biāo)描述會(huì)變得更簡(jiǎn)潔一些。如果源結(jié)點(diǎn)為本地,則COPY命令可略去FROM子句。如果目標(biāo)結(jié)點(diǎn)為本地,則可除去TO子句。COPY命令將傳送數(shù)據(jù)到目標(biāo)數(shù)據(jù)庫(kù)指定表。具體傳輸?shù)臄?shù)據(jù)是子查詢(xún)的結(jié)果。其中APPEND、CREATE、INSERT和REPLACE限定詞用于指定傳輸?shù)姆绞?APPEND 將傳輸?shù)臄?shù)據(jù)加在指定表中。如果該表不存在,則先建表,再加入;INSERT 將傳輸?shù)臄?shù)據(jù)加在指定的表中。如果該表不存在,則先建表,再加入數(shù)據(jù);CREATE 建立指定的表,并加入數(shù)據(jù),如果該表存在,則出錯(cuò);REPLACE 將傳輸數(shù)據(jù)替換原表中已有的數(shù)據(jù)。