版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
ORACLE系統(tǒng)概述
ORACLE公司自86年推出版本5開始,系統(tǒng)具有分布數(shù)據(jù)庫處理功能.88年推出版本
6,ORACLERDBMS(V6.0)可帶事務(wù)處理選項(TPO),提高了事務(wù)處理的速度.1992年推出了版本7,
在ORACLERDBMS中可帶過程數(shù)據(jù)庫選項(proceduraldatabaseoption)和并行服務(wù)器選項
(parallelserveroption),稱為ORACLE7數(shù)據(jù)庫管理系統(tǒng),它釋放了開放的關(guān)系型系統(tǒng)的
真正潛力。0RACLE7的協(xié)同開發(fā)環(huán)境提供了新一代集成的軟件生命周期開發(fā)環(huán)境,可用以實
現(xiàn)高生產(chǎn)率、大型事務(wù)處理及客戶/'服務(wù)器結(jié)構(gòu)的應(yīng)用系統(tǒng)。協(xié)同開發(fā)環(huán)境具有可移植性,支
持多種數(shù)據(jù)來源、多種圖形用戶界面及多媒體、多民族語言、CASE等協(xié)同應(yīng)用系統(tǒng)。
.ORACLE系統(tǒng)
1.ORACLE產(chǎn)品結(jié)構(gòu)及組成
ORACLE系統(tǒng)是由以RDBMS為核心的一批軟件產(chǎn)品構(gòu)成,其產(chǎn)品結(jié)構(gòu)輪廓下圖所示:
2.ORACLE系統(tǒng)特點
ORACLE公司于1979年,首先推出基于SQL標(biāo)準(zhǔn)的關(guān)系數(shù)據(jù)庫產(chǎn)品,可在10。多種硬件
平臺上運(yùn)行(所括微機(jī)、工作站、小型機(jī)、中型機(jī)和大型機(jī)),支持很多種操作系統(tǒng)。用戶的
ORACLE應(yīng)用可方便地從一種計算機(jī)配置移至另一種計算機(jī)配置上。ORACLE的分布式結(jié)構(gòu)可將
數(shù)據(jù)和應(yīng)用駐留在多臺計算機(jī)上,而相互間的通信是透明的。1992年6月ORACLE公司推出
的0RACLE7協(xié)同服務(wù)器數(shù)據(jù)庫,使關(guān)系數(shù)據(jù)庫技術(shù)邁上了新臺階。根據(jù)IDG(國際數(shù)據(jù)集團(tuán))
1992年全球UNIX數(shù)據(jù)庫市場報告,ORACLE占市場銷售量50乳它之所以倍受用戶喜愛是因
為它有以下突出的特點:
支持大數(shù)據(jù)庫、多用戶的高性能的事務(wù)處理。ORACLE支持最大數(shù)據(jù)庫,其大小可到
幾百千兆,可充分利用硬件設(shè)備。支持大量用戶同時在同一數(shù)據(jù)上執(zhí)行各種數(shù)據(jù)應(yīng)用,并使
數(shù)據(jù)爭用最小,保證數(shù)據(jù)一致性.系統(tǒng)維護(hù)具有高的性能,ORACLE每天可連續(xù)24小時工作,
正常的系統(tǒng)操作(后備或個別計算機(jī)系統(tǒng)故障)不會中斷數(shù)據(jù)庫的使用??煽刂茢?shù)據(jù)庫數(shù)據(jù)
的可用性,可在數(shù)據(jù)庫級或在子數(shù)據(jù)庫級上控制。
ORACLE遵守數(shù)據(jù)存取語言、操作系統(tǒng)、用戶接口和網(wǎng)絡(luò)通信協(xié)議的工業(yè)標(biāo)準(zhǔn)。所以
它是一個開放系統(tǒng),保護(hù)了用戶的投資。美國標(biāo)準(zhǔn)化和技術(shù)研究所(NTST)對0RACLE7SERVER
進(jìn)行檢驗,100%地與ANSI/ISOSQL89標(biāo)準(zhǔn)的二級相兼容。
實施安全性控制和完整性控制。ORACLE為限制各監(jiān)控數(shù)據(jù)存取提供系統(tǒng)可靠的安全
性。ORACLE實施數(shù)據(jù)完整性,為可接受的數(shù)據(jù)指定標(biāo)準(zhǔn)。
支持分布式數(shù)據(jù)庫和分布處理。ORACLE為了充分利用計算機(jī)系統(tǒng)和網(wǎng)絡(luò),允許將處
理分為數(shù)據(jù)庫服務(wù)器和客戶應(yīng)用程序,所有共享的數(shù)據(jù)管理由數(shù)據(jù)庫管理系統(tǒng)的計算機(jī)處理,
而運(yùn)行數(shù)據(jù)庫應(yīng)用的工作站集中于解釋和顯示數(shù)據(jù)。通過網(wǎng)絡(luò)連接的計算機(jī)環(huán)境,ORACLE將
存放在多臺計算機(jī)上的數(shù)據(jù)約合成一個邏輯數(shù)據(jù)庫,可被全部網(wǎng)絡(luò)用戶存取。分布式系統(tǒng)像
集中式數(shù)據(jù)庫一樣具有透明性和數(shù)據(jù)一致性。
具有可移植性、可兼容性和可連接性。由于ORACLE軟件可在許多不同的操作系統(tǒng)上
運(yùn)行,以致ORACLE上所開發(fā)的應(yīng)用可移植到任何操作系統(tǒng),只需很少修改或不需修改。ORACLE
軟件同工業(yè)標(biāo)準(zhǔn)相兼容,包括許多工業(yè)標(biāo)準(zhǔn)的操作系統(tǒng),所開發(fā)應(yīng)用系統(tǒng)可在任何操作系統(tǒng)
上運(yùn)行??蛇B接性是指ORALCE允許不同類型的計算機(jī)和操作系統(tǒng)通過網(wǎng)絡(luò)可共享信息。
二.ORACLE數(shù)據(jù)庫系統(tǒng)的體系結(jié)構(gòu)
ORACLE數(shù)據(jù)庫系統(tǒng)為具有管理ORACLE數(shù)據(jù)庫功能的計算機(jī)系統(tǒng)。每一個運(yùn)行的ORACLE
數(shù)據(jù)庫與一個ORACLE實例(INSTANCE)相聯(lián)系。一個ORACLE實例為存取和控制一數(shù)據(jù)庫的
軟件機(jī)制。每一次在數(shù)據(jù)庫服務(wù)器上啟動一數(shù)據(jù)庫時,稱為系統(tǒng)全局區(qū)(SYSTEMGLOBALAREA)
的一內(nèi)存區(qū)(簡稱SGA)被分配,有一個或多個ORACLE進(jìn)程被啟動。該SGA和ORACLE進(jìn)程
的結(jié)合稱為一個ORACLE數(shù)據(jù)庫實例。一個實例的SGA和進(jìn)程為管理數(shù)據(jù)庫數(shù)據(jù)、為該數(shù)據(jù)庫
一個或多個用戶服務(wù)而工作。
在ORACLE系統(tǒng)中,首先是實例啟動,然后由實例裝配(MOUNT)一數(shù)據(jù)庫。在松耦合系
統(tǒng)中,在具有ORACLEPARALLELSERVER選項時,單個數(shù)據(jù)庫可被多個實例裝配,即多個實
例共享同一物理數(shù)據(jù)庫。
1.ORACLE實例的進(jìn)程結(jié)構(gòu)和內(nèi)存結(jié)構(gòu)
1)進(jìn)程結(jié)構(gòu)
講程是操作系統(tǒng)中的一種機(jī)制,它可執(zhí)行一系列的操作步。在有些操作系統(tǒng).中便用作業(yè)
(JOB)或任務(wù)(TASK)的術(shù)語。一個進(jìn)程通常有它自己的專用存儲區(qū)。ORACLE進(jìn)程的體系結(jié)構(gòu)
設(shè)計使性能最大。
ORACLE實例有兩種類型:單進(jìn)程實例和多進(jìn)程實例。
單進(jìn)程ORACLE(又稱單用戶ORACLE)是一種數(shù)據(jù)庫系統(tǒng),一個進(jìn)程執(zhí)行全部ORACLE代
碼。由于ORACLE部分和客戶應(yīng)用程序不能分別以進(jìn)程執(zhí)行,所以O(shè)RACLE的代碼和用戶的數(shù)
據(jù)庫應(yīng)用是單個進(jìn)程執(zhí)行。
在單進(jìn)程環(huán)境下的ORACLE實例,僅允許一個用戶可存取。例如在MS-DOS上運(yùn)行ORACLE。
多進(jìn)程ORACLE實例(又稱多用戶ORACLE)使用多個進(jìn)程來執(zhí)行ORACLE的不同部分,對
于每一個連接的用戶都有一個進(jìn)程口
在多進(jìn)程系統(tǒng)中,進(jìn)程分為兩類:用戶進(jìn)程和ORACLE進(jìn)程。當(dāng)一用戶運(yùn)行一應(yīng)用程序,
如PROC程序或一個ORACLE二具(如SQL*PLUS),為用戶運(yùn)行的應(yīng)用建立一個用戶進(jìn)程。ORACLE
進(jìn)程又分為兩類:服務(wù)器進(jìn)程和后臺進(jìn)程。服務(wù)潛進(jìn)程用于處理連接到該實例的用戶進(jìn)程的
請求。當(dāng)應(yīng)用和ORACELE是在同一臺機(jī)器上運(yùn)行,而不再通過網(wǎng)絡(luò),一般將用戶進(jìn)程和它相應(yīng)
的服務(wù)器進(jìn)程組合成單個的進(jìn)程,可降低系統(tǒng)開銷。然而,當(dāng)應(yīng)用和ORACLE運(yùn)行在不同的機(jī)
器上時,用戶進(jìn)程經(jīng)過一個分離服務(wù)器進(jìn)程與ORACLE通信。它可執(zhí)行下列任務(wù):
?對應(yīng)用所發(fā)出的SQL語句進(jìn)行語法分析和執(zhí)行。
從磁盤(數(shù)據(jù)文件)中讀入必要的數(shù)據(jù)塊到SGA的共享數(shù)據(jù)庫緩沖區(qū)(該塊不在緩沖
區(qū)時)。
?將結(jié)果返回給應(yīng)用程序處理。
系統(tǒng)為了使性能最好和協(xié)調(diào)多個用戶,在多進(jìn)程系統(tǒng)中使用一些附加進(jìn)程,稱為后臺進(jìn)
程。在許多操作系統(tǒng)中,后臺進(jìn)程是在實例啟動時自動地建立。一個ORACLE實例可以有許多
后臺進(jìn)程,但它們不是一直存在。后臺進(jìn)程的名字為:
DBWR數(shù)據(jù)庫寫入程序
LGWR日志寫入程序
CKPT檢查點
SMON系統(tǒng)監(jiān)控
PMON進(jìn)程監(jiān)控
ARCH歸檔
RECO恢復(fù)
LCKn封鎖
Drinn調(diào)度進(jìn)程
Snnn服務(wù)器
每個后臺進(jìn)程與ORACLE數(shù)據(jù)庫的不同部分交互。
下面對后臺進(jìn)程的功能作簡單介紹:
DBWR進(jìn)程:該進(jìn)程執(zhí)行將緩沖區(qū)寫入數(shù)據(jù)文件,是負(fù)責(zé)緩沖存儲區(qū)管理的一個ORACLE
后臺進(jìn)程。當(dāng)緩沖區(qū)中的一緩沖區(qū)被修改,它被標(biāo)志為“弄臟”,DBTVR的主要任務(wù)是將“弄臟”
的緩沖區(qū)寫入磁盤,使緩沖區(qū)保持“干凈”。由于緩沖存儲區(qū)的緩沖區(qū)填入數(shù)據(jù)庫或被用戶進(jìn)
程弄臟,未用的緩沖區(qū)的數(shù)目減少。當(dāng)未用的緩沖區(qū)下降到很少,以致用戶進(jìn)程要從磁盤讀
入塊到內(nèi)存存儲區(qū)時無法找到未用的緩沖區(qū)時,DBWR將管理緩沖存儲區(qū),使用戶進(jìn)程總可得
到未用的緩沖區(qū)。
ORACLE采用LRU(LEASTRECENTLYUSED)算法(最近最少使用算法)保持內(nèi)存中的數(shù)
據(jù)塊是最近使用的,使I/O最小。在下列情況預(yù)示DBWR要將弄臟的緩沖區(qū)寫入磁盤:
當(dāng)一個服務(wù)器進(jìn)程將一緩沖區(qū)移入“弄臟”表,該弄臟表達(dá)到臨界長度時,該服務(wù)
進(jìn)程將通知DBWR進(jìn)行寫。該臨界長度是為參數(shù)DB-BLOCK-WRITE-BATCH的值的一半。
PMON進(jìn)程:該講程在用戶講程出現(xiàn)故障時執(zhí)行講程恢復(fù),負(fù)責(zé)清理內(nèi)存儲區(qū)和釋放該進(jìn)
程所使用的資源。例:它要重置活動事務(wù)表的狀態(tài),釋放封鎖,將該故障的進(jìn)程的ID從活動
進(jìn)程表中移去。PMON還周期地檢查調(diào)度進(jìn)程(DISPATCHER)和服務(wù)器進(jìn)程的狀態(tài),如果已死,
則重新啟動(不包括有意刪除的進(jìn)程)。
PMON有規(guī)律地被呼醒,檢查是否需要,或者其它進(jìn)程發(fā)現(xiàn)需要時可以被調(diào)用。
RECO進(jìn)程:該進(jìn)程是在具有分布式選項時所使用的一個進(jìn)程,自動地解決在分布式事務(wù)
中的故障。一個結(jié)點RECO后臺進(jìn)程自動地連接到包含有懸而未決的分布式事務(wù)的其它數(shù)據(jù)庫
中,RECO自動地解決所有?的懸而不決的事務(wù)。任何相應(yīng)于己處理的懸而不決的事務(wù)的行將從
每一個數(shù)據(jù)庫的懸掛事務(wù)表中刪去V
當(dāng)一數(shù)據(jù)庫服務(wù)器的RECO后臺進(jìn)程試圖建立同一遠(yuǎn)程服務(wù)器的通信,如果遠(yuǎn)程服務(wù)器
是不可用或者網(wǎng)絡(luò)連接不能建立時,RECO自動地在一個時間間隔之后再次連接。
RECO后臺進(jìn)程僅當(dāng)在允許分布式事務(wù)的系統(tǒng)中出現(xiàn),而且DISTRIBUTED-TRANSACTIONS
參數(shù)是大于Oo
ARCH進(jìn)程:該進(jìn)程將已填滿的在線日志文件拷貝到指定的存儲設(shè)備。當(dāng)日志是為
ARCHIVELOG使用方式、并可自動地歸檔時ARCH進(jìn)程才存在。
LCKn進(jìn)程:是在具有并行服務(wù)器選件環(huán)境下使用,可多至10個進(jìn)程(LCKO,LCK1……,
LCK9),用于實例間的封鎖。
Dnnn進(jìn)程(調(diào)度進(jìn)程):該進(jìn)程允許用戶進(jìn)程共享有限的服務(wù)器進(jìn)程(SERVERPROCESS)。
沒調(diào)度進(jìn)程時,每個用戶進(jìn)程需要一個專用服務(wù)進(jìn)程(DEDICATEDSERVERPROCESS)<>對于
多線索服務(wù)器(MULTITHREADEDSERVER)可支持多個用戶進(jìn)程。如果在系統(tǒng)中具有大量用戶,
多線索服務(wù)器可支持大量用戶,尤其在客戶一服務(wù)器環(huán)境中。
在一個數(shù)據(jù)庫實例中可建立多個調(diào)度進(jìn)程。對每種網(wǎng)絡(luò)協(xié)議至少建立一個調(diào)度進(jìn)程。數(shù)
據(jù)庫管理員根據(jù)操作系統(tǒng)中每個進(jìn)程可連接數(shù)目的限制決定啟動的調(diào)度程序的最優(yōu)數(shù),在實
例運(yùn)行時可增加或刪除調(diào)度進(jìn)程。多線索服務(wù)器需要SQL*NET版本2或更后的版本。在多線索
服務(wù)器的配置下,一個網(wǎng)絡(luò)接收器進(jìn)程等待客戶應(yīng)用連接請求,并將每一個發(fā)送到一個調(diào)度
進(jìn)程。如果不能將客戶應(yīng)用連接到一調(diào)度進(jìn)程時,網(wǎng)絡(luò)接收器進(jìn)程將啟動一個專用服務(wù)器進(jìn)
程。該網(wǎng)絡(luò)接收器進(jìn)程不是ORACLE實例的組成部分,它是處理與ORACLE有關(guān)的網(wǎng)絡(luò)進(jìn)程的
組成部分。在實例啟動時,該網(wǎng)絡(luò)接收器被打開,為用戶連接到ORACLE建立一通信路徑,然
后每一個調(diào)度進(jìn)程把連接請求的調(diào)度進(jìn)程的地址給予于它的接收器。當(dāng)一個用戶進(jìn)程作連接
請求時,網(wǎng)絡(luò)接收器進(jìn)程分析請求并決定該用戶是否可使用一調(diào)度進(jìn)程。如果是,該網(wǎng)絡(luò)接
收器進(jìn)程返回該調(diào)度進(jìn)程的地址,之后用戶進(jìn)程直接連接到該調(diào)度進(jìn)程。有些用戶進(jìn)程不能
調(diào)度進(jìn)程通信(如果使用SQL*NET以前的版本的用戶),網(wǎng)絡(luò)接收器進(jìn)程不能將如比用戶連接
到一調(diào)度進(jìn)程。在這種情況下,網(wǎng)絡(luò)接收器建立一個專用服務(wù)器進(jìn)程,建立一種合適的連接。
2)、ORACLE內(nèi)存結(jié)構(gòu)
ORACLE在內(nèi)存存儲下列信息:
?執(zhí)行的程序代碼。
?連接的會話信息
?程序執(zhí)行期間所需數(shù)據(jù)和共享的信息
?存儲在外存儲上的緩沖信息。
ORACLE具有下列基本的內(nèi)存結(jié)構(gòu):
?軟件代碼區(qū)
?系統(tǒng)全局區(qū),包括數(shù)據(jù)庫緩沖存儲區(qū)、日志緩沖區(qū)和共享池.
?程序全局區(qū),包括棧區(qū)和數(shù)據(jù)區(qū).
?排序區(qū)
軟件代碼區(qū)
用于存儲正在執(zhí)行的或可以執(zhí)行的程序代碼。
軟件區(qū)是只讀,可安裝成共享或非共亨.ORACLE系統(tǒng)程序是可共亨的,以致多個ORACLE
用戶可存取它,而不需要在內(nèi)存有多個副本。用戶程序可以共享也可以不共享。
系統(tǒng)全局區(qū)
為一組由ORACLE分配的共享的內(nèi)存結(jié)構(gòu),可包含一個數(shù)據(jù)庫實例的數(shù)據(jù)或控制信息。
如果多個用戶同時連接到同一實例時,在實例的SGA中數(shù)據(jù)可為多個用戶所共享,所以又稱
為共享全局區(qū)。當(dāng)實例起動時,SGA的存儲自動地被分配;當(dāng)實例關(guān)閉時,該存儲被回收。所
有連接到多進(jìn)程數(shù)據(jù)庫實例的全部用戶可自動地被分配;當(dāng)實例關(guān)閉時,該存儲被回收。所
有連接到多進(jìn)程數(shù)據(jù)庫實例的全部用戶可使用其SGA中的信息,但僅僅有幾個進(jìn)程可寫入信
忌。在SGA中存儲信息將內(nèi)存劃分成幾個區(qū):數(shù)據(jù)庫緩沖存儲區(qū)、日志緩沖區(qū)、共享池、請
求和響應(yīng)隊列、數(shù)據(jù)字典存儲區(qū)和其它各種信息。
程序全局區(qū)
PGA是一個內(nèi)存區(qū),包含單個進(jìn)程的數(shù)據(jù)和控制信息,所以又稱為進(jìn)程全局區(qū)(PROCESS
GLOBALAREA)o
排序區(qū)
排序需要內(nèi)存空間,ORACLE利用該內(nèi)存排序數(shù)據(jù),這部分空間稱為排序區(qū)。排序區(qū)存在
于請求排序的用戶進(jìn)程的內(nèi)存中,該空間的大小為適就排序數(shù)據(jù)量的大小,可增長,但受初始
化參數(shù)SORT-AREA-SIZER所限制。
2.ORACLE的配置方案
所有連接到ORACLE的用戶必須執(zhí)行兩個代碼模塊可存取一個ORACLE數(shù)據(jù)庫實例:
應(yīng)用或ORACLE工具:一數(shù)據(jù)庫用戶執(zhí)行一數(shù)據(jù)庫應(yīng)用或一個ORACLE工具,可向
ORACLE數(shù)據(jù)庫發(fā)出SQL語句。
?ORACLE服務(wù)器程序:負(fù)責(zé)解釋和處理應(yīng)用中的SQL語句。
在多進(jìn)程實例中,連接用戶的代碼可按下列三種方案之一配置:
對于每一個用戶,其數(shù)據(jù)庫應(yīng)用程序和服務(wù)器程序組合成單個用戶進(jìn)程
對于每一個用戶,其數(shù)據(jù)庫應(yīng)用是由用戶進(jìn)程所運(yùn)行,并有一個專用服務(wù)器進(jìn)程。執(zhí)
行ORACLE服務(wù)器的代碼。這樣的配置稱為專用服務(wù)器體系結(jié)構(gòu)
執(zhí)行數(shù)據(jù)庫應(yīng)用的進(jìn)程不同于執(zhí)行ORACLE服務(wù)器代碼的進(jìn)程,而且每一個服務(wù)器進(jìn)
程(執(zhí)行ORACLE服務(wù)器代碼)可服務(wù)于多個用戶進(jìn)程,這樣的配置稱為多線索服務(wù)器體系結(jié)
構(gòu)。
1)USER/SERVER進(jìn)程相結(jié)合的結(jié)構(gòu)
在這種配置下,數(shù)據(jù)庫應(yīng)用和ORACLE服務(wù)器程序是在同一個進(jìn)程中運(yùn)行,該講程稱為
用戶進(jìn)程。
這種ORACLE配置有時稱為單任務(wù)ORACLE(single_taskORACLE),該配置適用于這樣的
操作系統(tǒng),它可在同一進(jìn)程中的數(shù)據(jù)庫應(yīng)用和ORACLEA碼之間維護(hù)一個隔離,該隔離是為數(shù)
據(jù)安全性和完整性所需。其中程序接口(programinterface)是負(fù)責(zé)ORACLE服務(wù)器代碼的隔
離和保護(hù),在數(shù)據(jù)庫應(yīng)用和ORACLE用戶程序之間傳送數(shù)據(jù)。
2)使用專用服務(wù)器進(jìn)程的系統(tǒng)結(jié)構(gòu)
使用專用服務(wù)器進(jìn)程的ORACLE系統(tǒng)在兩臺計算機(jī)上運(yùn)行。在這種系統(tǒng)中,在一計算機(jī)上
用戶進(jìn)程執(zhí)行數(shù)據(jù)庫應(yīng)用,而在另一臺計算機(jī)上的服務(wù)器進(jìn)程執(zhí)行相應(yīng)的ORACLE服務(wù)器代
碼,這兩個進(jìn)程是分離的。為每個用戶進(jìn)程建立的不同的服務(wù)器進(jìn)程稱為專用服務(wù)器進(jìn)程,
因為該服務(wù)器進(jìn)程僅對相連的用戶進(jìn)程起作用。這種配置又稱為兩任務(wù)ORACLE。每一個連接
到ORACLE的用戶進(jìn)程有一個相應(yīng)的專用服務(wù)進(jìn)程。這種系統(tǒng)結(jié)構(gòu)允許客戶應(yīng)用是有工作站上
執(zhí)行,通過網(wǎng)絡(luò)與運(yùn)行ORACLE的計算機(jī)通信。當(dāng)客戶應(yīng)用和ORACLE服務(wù)器代碼是在同一臺
計算機(jī)上執(zhí)行時,這種結(jié)構(gòu)也可用。
3)多線索服務(wù)器的系統(tǒng)結(jié)構(gòu)
多線索服務(wù)器配置允許許多用戶進(jìn)程共享很少服務(wù)器進(jìn)程。在沒有多線索服務(wù)器的配置
中,每一個用戶進(jìn)程需要自己的專用服務(wù)器進(jìn)程。在具有多線索服務(wù)器的配置中,許多用戶
進(jìn)程連接到調(diào)度進(jìn)程,由調(diào)度進(jìn)程將客戶請求發(fā)送到一個共享服務(wù)器進(jìn)程。多線索服務(wù)器配
置的優(yōu)點是降低系統(tǒng)開銷,增加用戶個數(shù)。
該系統(tǒng)中需要下列類型的進(jìn)程:
?網(wǎng)絡(luò)接收器進(jìn)程,將用戶進(jìn)程連接到調(diào)度進(jìn)程和專用服務(wù)器進(jìn)程。
?一個或多個調(diào)度進(jìn)程
?一個或多個共享服務(wù)器進(jìn)程
其中網(wǎng)絡(luò)接收器進(jìn)程等待新來的連接請求,決定每一用戶進(jìn)程能否用共享服務(wù)器進(jìn)程。
如果可以使用,接收器進(jìn)程將一調(diào)度進(jìn)程的地址返回給用戶進(jìn)程。如果用戶進(jìn)程請求一專用
服務(wù)潛,該接收器進(jìn)程將建立一個專用服務(wù)器進(jìn)程,將用戶進(jìn)程連接到該專用服務(wù)器進(jìn)程。
對于數(shù)據(jù)庫客戶機(jī)所使用的每種網(wǎng)絡(luò)協(xié)議至少配置一個調(diào)度進(jìn)程,并啟動它。
當(dāng)用戶作一次調(diào)用時,調(diào)度進(jìn)程將請求放置在SGA的請求隊列中,由可用的共享服務(wù)器
進(jìn)程獲取。共享服務(wù)器進(jìn)程為完成每一個用戶進(jìn)程的請求作所有必要的數(shù)據(jù)庫調(diào)用。當(dāng)服務(wù)
器完成請求時,將結(jié)果返回到調(diào)度進(jìn)程的隊列,然后由調(diào)度進(jìn)程將完成的請求返回給用戶進(jìn)
程。
共享服務(wù)器進(jìn)程:除共享服務(wù)器進(jìn)程不是連接指定的用戶進(jìn)程外,共享服務(wù)器進(jìn)程和專
用服務(wù)器進(jìn)程提供相同的功能,一個共享服務(wù)器進(jìn)程在多線索服務(wù)器的配置中可為任何客戶
請求服務(wù)。一個共享服務(wù)器進(jìn)程的SGA不包含有與用戶相關(guān)的數(shù)據(jù),其信息可為所有共享服
務(wù)器進(jìn)程存取,它僅包含??臻g、進(jìn)程指定變量。所有與會話有關(guān)的信息是包含有SGA中。
每一個共享服務(wù)器進(jìn)程可存取全部會話的數(shù)據(jù)空間,以致任何服務(wù)進(jìn)程可處理任何會話的請
求。對于每一個會話的數(shù)據(jù)空間是在SGA中分配空間。
ORACLE根據(jù)請求隊列的長度可動態(tài)地調(diào)整共享服務(wù)器進(jìn)程。可建立的共享服務(wù)器進(jìn)程將
請求放到請求隊列。一個用戶請求是對數(shù)據(jù)庫的一次程序接口調(diào)用,為SQL語句。在SGA中
請求隊列對實例的全部調(diào)度進(jìn)程是公用的。服務(wù)器進(jìn)程為新請求檢查公用請求隊列,按先進(jìn)
先出的原則從隊列檢出一個請求,然后為完成該請求對數(shù)據(jù)庫作必要的調(diào)用。共享服務(wù)器進(jìn)
程將響應(yīng)放在調(diào)度進(jìn)程的響應(yīng)隊列。每一個調(diào)度進(jìn)程在SGA中有自己的響應(yīng)隊列,每個調(diào)度
講程負(fù)責(zé)將完成的請求回送給相應(yīng)的用戶講程。
3.ORACLE運(yùn)行
1)使用專用服務(wù)進(jìn)程的ORACLE的運(yùn)行
在這種配置下,ORACLE運(yùn)行過程如下:
(1)數(shù)據(jù)庫服務(wù)器計算機(jī)當(dāng)前正在運(yùn)行ORACLE(后臺進(jìn)程)。
在一客戶工作站運(yùn)行一個數(shù)據(jù)庫應(yīng)用(為用戶進(jìn)程),如SQL*PLUS??蛻魬?yīng)用使用
SQL*NETDRIVER建立對服務(wù)器的連接。
數(shù)據(jù)庫服務(wù)器計算機(jī)當(dāng)前正運(yùn)行合適的SQL*NETDRIVER,該機(jī)上接收器進(jìn)程檢出客
戶數(shù)據(jù)庫應(yīng)用的連接請求,并在該機(jī)上為用戶進(jìn)程建立專用服務(wù)器進(jìn)程。
(4)用戶發(fā)出單個SQL語句。
(5)專用服務(wù)器進(jìn)程接收該語句,在此處有兩種方法處理SQL語句:
如果在共享池一共享SQL區(qū)中包含有相同SQL語句時,該服務(wù)器進(jìn)程可利用已存在的
共享SQL區(qū)執(zhí)行客戶的SQL語句。
如果在共享池中沒有一個SQL區(qū)包含有相同的SQL語句時,在共享池中為該語句分配
一新的共享SQL區(qū)。
在每一種情況,在會話的PGA中建立一個專用SQL區(qū),專用服務(wù)器進(jìn)程檢查用戶對查詢
數(shù)據(jù)的存取權(quán)限。
(6)如果需要,服務(wù)器進(jìn)程從數(shù)據(jù)文件中檢索數(shù)據(jù)塊,或者可使用己存儲在實例SGA中
的緩沖存儲區(qū)的數(shù)據(jù)塊。
(7)服務(wù)器進(jìn)程執(zhí)行存儲在共享SQL區(qū)中的SQL語句。數(shù)據(jù)首先在SGA中修改,由DBWR
進(jìn)程在最有效時將它寫入磁盤。LGWR進(jìn)程在在線日志文件中記錄用戶提交請求的事務(wù)。
(8)如果請求成功,服務(wù)器將通過網(wǎng)絡(luò)發(fā)送一信息。如果請求不成功,將發(fā)送相應(yīng)的
錯誤信息。
(9)在整個過程中,其它的后臺進(jìn)程是運(yùn)行的,同時注意需要干預(yù)的條件。另外,ORACLE
管理其它事務(wù),防止不同事務(wù)之間請求同一數(shù)據(jù)的競爭飛
2)使用多線索服務(wù)器的ORACLE的運(yùn)行
在這種配置下,ORACLE運(yùn)行過程如下:
(1)一數(shù)據(jù)庫服務(wù)器計算機(jī)運(yùn)行使用多線索服務(wù)器配置的ORACLE。
在一客戶工作站運(yùn)行一數(shù)據(jù)庫應(yīng)用(在一用戶進(jìn)程中)??蛻魬?yīng)用合適的SQ二*NET驅(qū)動
器試圖建立到數(shù)據(jù)庫服務(wù)器計算機(jī)的連接。
數(shù)據(jù)庫服務(wù)器計算機(jī)當(dāng)前運(yùn)行合適的SQL*NET驅(qū)動器,它的網(wǎng)絡(luò)接收器進(jìn)程檢出用戶
進(jìn)程的連接請求,并決定用戶進(jìn)程如何連接。如果用戶是使用SQL*NET版本2,該網(wǎng)絡(luò)接收器
通知用戶進(jìn)程使用一個可用的調(diào)度進(jìn)程的地址重新連接。
(4)用戶發(fā)出單個SQL語句
調(diào)度進(jìn)程將用戶進(jìn)程的請求放入請求隊列,該隊列位于SGA中,可為所有調(diào)度進(jìn)程共
享。
一個可用共享服務(wù)器檢驗公用調(diào)度進(jìn)程請求隊列,并從隊列中檢出下一個SQL語句。
然后處理該SQL語句,同前一(5),(6)和(7)。注意:會話的專用SQL區(qū)是建立在SGA中。
一當(dāng)共享服務(wù)器進(jìn)程完成SQL處理,該進(jìn)程將結(jié)果放置發(fā)入該請求的調(diào)度進(jìn)程的響應(yīng)
隊列。
(8)調(diào)度進(jìn)程檢查它的響應(yīng)隊列,并將完成的請求送回請求的用戶進(jìn)程。
4.數(shù)據(jù)庫結(jié)構(gòu)和空間管理
一個ORACLE數(shù)據(jù)庫是數(shù)據(jù)的集合,被處理成一個單位。一個ORACLE數(shù)據(jù)庫有一個物理
結(jié)構(gòu)和一個邏輯結(jié)構(gòu)。
物理數(shù)據(jù)庫結(jié)構(gòu)(physicaldatabasestructure)是由構(gòu)成數(shù)據(jù)庫的操作系統(tǒng)文件所決
定。每一個ORACLE數(shù)據(jù)庫是由三種類型的文件組成:數(shù)據(jù)文件、日志文件和控制文件。數(shù)據(jù)
庫的文件為數(shù)據(jù)庫信息提供真正的物理存儲。
邏輯數(shù)據(jù)庫結(jié)構(gòu)是用戶所涉及的數(shù)據(jù)庫結(jié)構(gòu)。一個ORACLE數(shù)據(jù)庫的邏輯結(jié)構(gòu)由下列因
素決定:
?一個或多個表空間
?數(shù)據(jù)庫模式對象(即表、視圖、索引、聚集、序列、存儲過程)
邏輯存儲結(jié)構(gòu)如表空間[dataspace)、段(segment)和范圍將支配一個數(shù)據(jù)庫的物理空間
如何使用。模式對象(schemaobject)用它們之間的聯(lián)系組成了一個數(shù)據(jù)庫的關(guān)系設(shè)計。
1)物理結(jié)構(gòu)
(1)數(shù)據(jù)文件
每一個ORACLE數(shù)據(jù)庫有一個或多個物理的數(shù)據(jù)文件(datafile)。一個數(shù)據(jù)庫的數(shù)據(jù)文
件包含全部數(shù)據(jù)庫數(shù)據(jù)。邏輯數(shù)據(jù)庫結(jié)構(gòu)(如表、索引)的數(shù)據(jù)物理地存儲在數(shù)據(jù)庫的數(shù)據(jù)文
件中。數(shù)據(jù)文件有下列特征:
?一個數(shù)據(jù)文件僅與一個數(shù)據(jù)庫聯(lián)系。
?一旦建立,數(shù)據(jù)文件不能改變大小
?一個表空間(數(shù)據(jù)庫存儲的邏輯單位)由一個或多個數(shù)據(jù)文件組成。
數(shù)據(jù)文件中的數(shù)據(jù)在需要時可以讀取并存儲在ORACLE內(nèi)存儲區(qū)中。例如:用戶要存取
數(shù)據(jù)庫一表的某些數(shù)據(jù),如吳請求信息不在數(shù)據(jù)庫的內(nèi)存存儲區(qū)內(nèi),則從相應(yīng)的數(shù)據(jù)文件中
讀取并存儲在內(nèi)存。當(dāng)修改和插入新數(shù)據(jù)時,不必立刻寫入數(shù)據(jù)文件。為了減少磁盤輸出的
總數(shù),提高性能,數(shù)據(jù)存儲在內(nèi)存,然后由ORACLE后臺進(jìn)程DBWR決定如何將其寫入到相應(yīng)
的數(shù)據(jù)文件。
(2)日志文件
每一個數(shù)據(jù)庫有兩個或多個日志文件(redologfile)的組,每一個日志文件組用于
收集數(shù)據(jù)庫日志。日志的主要功能是記錄對數(shù)據(jù)所作的修改,所以對數(shù)據(jù)庫作的全部修改是
記錄在日志中。在出現(xiàn)故障時,如果不能將修改數(shù)據(jù)永久地寫入數(shù)據(jù)文件,則可利用日志得
到該修改,所以從不會丟失已有操作成果。
日志文件主要是保護(hù)數(shù)據(jù)庫以防止故障。為了防止日志文件本身的故障,ORACLE允許鏡
象日志(mirroredredolog),以致可在不同磁盤上維護(hù)兩個或多個日志副本。
日志文件中的信息僅在系統(tǒng)故障或介質(zhì)故障恢復(fù)數(shù)據(jù)庫時使用,這些故障阻止將數(shù)據(jù)庫
數(shù)據(jù)寫入到數(shù)據(jù)庫的數(shù)據(jù)文件。然而任何丟失的數(shù)據(jù)在下一次數(shù)據(jù)庫打開時,ORACLE自動地
應(yīng)用日志文件中的信息來恢復(fù)數(shù)據(jù)庫數(shù)據(jù)文件。
(3)控制文件
每一ORACLE數(shù)據(jù)庫有一個控制文件(controlfile),它記錄數(shù)據(jù)庫的物理結(jié)構(gòu),包含
下列信息類型:
?數(shù)據(jù)庫名;
?數(shù)據(jù)庫數(shù)據(jù)文件利日志文件的名字和位置:
?數(shù)據(jù)庫建立日期。
為了安全起見,允許控制文件被鏡象。
每一次ORACLE數(shù)據(jù)庫的實例啟動時,它的控制文件用于標(biāo)識數(shù)據(jù)庫和日志文件,當(dāng)著
手?jǐn)?shù)據(jù)庫操作時它們必須被打開。當(dāng)數(shù)據(jù)庫的物理組成更改時,ORACLE自動更改該數(shù)據(jù)庫的
控制文件。數(shù)據(jù)恢復(fù)時,也要使用控制文件。
2)邏輯結(jié)構(gòu)
數(shù)據(jù)庫邏輯結(jié)構(gòu)包含表空間、段、范圍(extent)、數(shù)據(jù)塊和模式對象。
(1)表空間
一個數(shù)據(jù)庫劃分為一個或多個邏輯單位,該邏輯單位稱為表空間(TABLESPACE)。一個
表空間可將相關(guān)的邏輯結(jié)構(gòu)組合在一起。DBA可利用表空間作下列工作:
?控制數(shù)據(jù)庫數(shù)據(jù)的磁盤分配。
?將確定的空間份額分配給數(shù)據(jù)庫用戶。
?通過使單個表空間在線或離線,控制數(shù)據(jù)的可用性。
?執(zhí)行部分?jǐn)?shù)據(jù)庫后備或恢復(fù)操作。
?為提高性能,跨越設(shè)備分配數(shù)據(jù)存儲。
數(shù)據(jù)庫、表空間和數(shù)據(jù)文件之間的關(guān)系如下圖所示:
Database
DTATAFILE1
DATAFILE3
(2MB)
Driver!Driver2
o每個數(shù)據(jù)庫可邏輯劃分為一個或多個表空間
o每一個表空間是由一個或多個數(shù)據(jù)文件組成,該表空間物理地存儲表空間中全部邏輯結(jié)構(gòu)
的數(shù)據(jù)。DBA可以建立新的表空間,可為表空間增加數(shù)據(jù)文件或可刪除數(shù)據(jù)文件,設(shè)置或更
改缺省的段存儲位置。
每一個ORACLE數(shù)據(jù)庫包含有一個名為SYSTEM的表空間,在數(shù)據(jù)庫建立是自動建立。在
該表空間中總包含有整個數(shù)據(jù)庫的數(shù)據(jù)字典表。最小的數(shù)據(jù)庫可只需要SYSTEM表空間。該表
空間必須總是在線。表和存儲的PL/SQL程序單元(過程、函數(shù)、包和觸發(fā)器)的全部存儲數(shù)
據(jù)是存儲在SYSTEM表空間中。如果這些PL/SQL對象是為數(shù)據(jù)庫建的,DBA在SYSTEM表空間
中需要規(guī)劃這些對象所需要的空間。
表空間利用增加數(shù)據(jù)文件擴(kuò)大表空間,表空間的大小為組成該表空間的數(shù)據(jù)文件大小的
和。
DBA可以使ORACLE數(shù)據(jù)庫中任何表空間(除SYSTEM表空間外)在線(ONLINE)或離線
(OFFLTNE)o表空間通常是在線,以致它所包含的數(shù)據(jù)對數(shù)據(jù)庫用戶是可用的。當(dāng)表空間為
離線時,其數(shù)據(jù)不可使用。在下列情況下,DBA可以使其離線。
o使部分?jǐn)?shù)據(jù)不可用,而剩余的部分允許正常存取
。執(zhí)行離線的表空間后冬
O為了修改或維護(hù)一應(yīng)用,使它和它的一組表臨時不可用。
包含有正在活動的回滾段的表空間不能被離線,僅當(dāng)回滾段不正在使用時,該表空間才
可離線。
在數(shù)據(jù)字典中記錄表空間的狀態(tài),在線還是離線。如果在數(shù)據(jù)庫關(guān)閉時一表空間為離線,
那么在下次數(shù)據(jù)庫裝配和重新打開后,它仍然保持離線。
當(dāng)出現(xiàn)某些錯誤時,一個表空間可自動地由在線改變?yōu)殡x線。通過使用多個表空間,將
不同類型的數(shù)據(jù)分開,更方便DBA來管理數(shù)據(jù)庫。
ORACLE數(shù)據(jù)庫中一表空間是由一個或多個物理數(shù)據(jù)文件組成,一個數(shù)據(jù)文件只可與一個
表空間想聯(lián)系。當(dāng)為一表空間建立一數(shù)據(jù)文件時,ORACLE建立該文件,分配指定的磁盤空間
容量。在數(shù)據(jù)文件初時建立后,所分配的磁盤不包含任何數(shù)據(jù)。表空間可以在線或離線。在
ORACLE中還允許單獨數(shù)據(jù)文件在線或離線。
(2)段、范圍和數(shù)據(jù)決
ORACLE通過段、范圍和數(shù)據(jù)塊邏輯數(shù)據(jù)結(jié)構(gòu)可更細(xì)地控制磁盤空間的使用。
段
段(SEGMENT)包含表空間中一種指定類型的邏輯存諸結(jié)構(gòu),是由一組范圍組成,在ORACLE
數(shù)據(jù)庫中有幾種類型的段:數(shù)據(jù)段、牽引段、回滾段和臨時段。
數(shù)據(jù)段:對于每一個非聚集的表有一數(shù)據(jù)段,表的所有數(shù)據(jù)存放在該段。每一聚集有一
個數(shù)據(jù)段,聚集中每一個表的數(shù)據(jù)存儲在該段中。
索引段:每一個索引有一索引段,存儲索引數(shù)據(jù)。
回滾段:是由DBA建立,用于臨時存儲要撤消的信息,這些信息用于生成讀一致性數(shù)據(jù)
庫信息、在數(shù)據(jù)庫恢復(fù)時使用、回滾未提交的事務(wù)。
臨時段:當(dāng)一個SQL語句需要臨時工作區(qū)時,由ORACLE建立。當(dāng)語句執(zhí)行完畢,臨時段
的范圍退回給系統(tǒng)。
ORACLE對所有段的空間分配,以范圍為單位。
范圍
一個范圍(EXTENT)是數(shù)據(jù)庫存儲空間分配的一個邏輯單位,它由連續(xù)數(shù)據(jù)塊所組成。
每一個段是由一個或多個范圍組成。當(dāng)一段中間所有空間已完全使用時,ORACLE為該段分配
一個新的范圍。
為了維護(hù)的目的,在數(shù)據(jù)庫的每一段含有段標(biāo)題塊(segmentheaderblock)說明段的
特征以及該段中的范圍目錄。
數(shù)據(jù)塊
數(shù)據(jù)塊(datablock)是ORACLE管理數(shù)據(jù)文件中存儲空間的單位,為數(shù)據(jù)庫使用的I/O
的最小單位,其大小可不同于操作系統(tǒng)的標(biāo)準(zhǔn)I/O塊大小。
數(shù)據(jù)塊的格式:
公用的變長標(biāo)題
表目錄
行目錄
未用空間
行數(shù)據(jù)
(3)模式和模式對象
一個模式(schema)為模式對象(scehmaobject)的一個集合,每一個數(shù)據(jù)庫用戶對應(yīng)一
個模式。模式對象為直接引用數(shù)據(jù)庫數(shù)據(jù)的邏輯結(jié)構(gòu),模式對象包含如表、視圖、索引、聚
集、序列、同義詞、數(shù)據(jù)庫鏈、過程和包等結(jié)構(gòu)。模式對象是邏輯數(shù)據(jù)存儲結(jié)構(gòu),每一種模
式對象在磁盤上沒有一個相應(yīng)文件存儲其信息。一個模式對象邏輯地存儲在數(shù)據(jù)庫的一個表
空間中,每一個對象的數(shù)據(jù)物理地包含在表空間的一個或多個數(shù)據(jù)文件中。
表
表(table)為數(shù)據(jù)庫中數(shù)據(jù)存儲的基本單位,其數(shù)據(jù)按行、列存儲。每個表具有一表
名和列的集合。每一列有一人列名、數(shù)據(jù)類型、寬度或精度、比例。一行是對應(yīng)單個記錄的
列信息的集合。
視圖
一個視圖(view)是由一個或多個表(或其他視圖)中的數(shù)據(jù)的一種定制的表示,是用
一個查詢定義,所以可認(rèn)為是一個存儲的查詢(storedquery)或是一個虛表(virtual
table)o視圖可在使用表的許多地方使用。
由于視圖是由表導(dǎo)出的,視圖和表存在許多類似,視圖象表最多可定義254列。視圖可
以被查詢,而在修改、插入或刪除時具有一定的限制,在視圖上執(zhí)行的全部操作真正地影響
視圖的基本表中的數(shù)據(jù),受到基本表的完整性約束和觸發(fā)器的限制。
視圖與表不同,一個視圖不分配任何存儲空間,視圖不真正地包含數(shù)據(jù)。由查詢定義的
視圖相應(yīng)于視圖引用表中的數(shù)據(jù)。視圖只在數(shù)據(jù)字典中存儲其定義。
引入視圖有下列好處:
o通過限制對表的行預(yù)定義集合的存取,為表提供附加的安全性
。隱藏數(shù)據(jù)復(fù)雜性。
O為用戶簡化命令
o為基本表的數(shù)據(jù)提供另一種觀點。
o可將應(yīng)用隔離基本表定義的修改
O用于不用視圖無法表示的查詢。
o可用于保存復(fù)雜查詢。
聚集
聚集(cluster)是存儲表數(shù)據(jù)的可選擇的方法。一個聚集是一組表,將具有同一公共列
值的行存儲在一起,并且它們經(jīng)常一起使用。這些公共列構(gòu)成聚集碼。例如:EMP表各DEPT
表共享DEPTN0歹U,所以EMP表和DEPT表可聚集在一起,聚集碼的列為DEPTNO列,該聚集將
每個部門的全部職工行各該部門的行物理地存儲在同一數(shù)據(jù)塊中。
索弓I
家引(index)是與表和聚集相關(guān)的一種選擇結(jié)構(gòu)。索引是為提高數(shù)據(jù)檢索的性能而建立,
利用它可快速地確定指定的信息。ORACLE索引為表數(shù)據(jù)提供快速存取路徑。索引適用于一范
圍的行查詢或指定行的查詢。
索引可建立在一表的一列或多列上,一旦建立,由ORACLE自動維護(hù)和使用,對用戶是
完全透明的。索引是涉輯地和物理地獨立于數(shù)據(jù),它們的建立或刪除對表沒有影響,應(yīng)用可
繼續(xù)處理。索引數(shù)據(jù)的檢索性能幾乎保持常數(shù),而當(dāng)一表上存在許多索引時,修改、刪除和
插入操作的性能會下降。
索引有唯一索引各非唯一索引。唯一索引保證表中沒有兩行在定義索引的列上具有重復(fù)
值。ORACLE在唯一碼上自動地定義唯一索引實施UNIQUE完整性約束。
組合索引是在表的某個列上所建立的一索引。組全索引可加快SELECT語句的檢索速度,
在其WHERE子句中可引用組合索引的全部或主要部分。所以在定義中給出列的次序,將經(jīng)常
存取的或選擇最多的列放在首位。
在建立索引時,將在表空間自動地建立一索引段,索引段空間分配和保留空間的使用受
下列方式控制:
索引段范圍的分配常駐該索引段的存儲參數(shù)控制。
其數(shù)據(jù)塊中未用空間可受該段的PCTFREE參數(shù)設(shè)置所控制。
序列生成器
序列生成器(sequencegenerator)產(chǎn)生序列號。在多用戶環(huán)境下該序列生成器特別有用,
可生成各返回序列號而不需要磁盤I/O或事務(wù)封鎖。
序列號為ORACLE整數(shù),最多可有38個數(shù)字。一個序列定義指出一般信息:序列的名字、
上升或下降、序列號之間間距和其它信息。對所有序列的確的定義以行存儲在SYSTEM表空間
中的數(shù)據(jù)字典表中,所以所有序列定義總是可用。由引用序列號的SQL語句使用序列號,可生
成一個新的序列號或使用當(dāng)前序列號。一旦在用戶會話中的SQL語句生成一序列號,該序列
號僅為該會話可用。序列號生成是獨立于表,所以同一序列生成器可用于一個和多個表。所
生成序列號可用于生成唯一的主碼。
同義詞
一個同義詞(synonym)為任何表、視圖、快照、序列、過程、函數(shù)或包的別名,其定義
存儲在數(shù)據(jù)字典中。同義詞因安全性和方便原因而經(jīng)常使用,可用于:
?可屏蔽對象的名字及其持有者。
?為分布式數(shù)據(jù)庫的遠(yuǎn)程對象提供位置透明性。
?為用戶簡化SQL語句。
有兩種同義詞:公用和專用。一個公用同義詞為命名為PUBLIC特殊用戶組所持有,可
為數(shù)據(jù)庫中每一個用戶所存取。一個專用同義詞是包含在指定用戶的模式中,僅為該用戶和
授權(quán)的用戶所使用。
雜湊
雜湊(hashing)是存儲表數(shù)據(jù)一種可選擇的方法,用以改進(jìn)數(shù)據(jù)檢索的性能。要使用雜
湊,就要建立雜湊聚集,將表裝入到該聚集。在膘湊聚集中的表行根據(jù)雜湊函數(shù)的結(jié)果進(jìn)行
物理學(xué)存儲和檢索。雜湊函數(shù)用于生成一個數(shù)值的分布,該數(shù)值稱為雜湊值,它是基于指定的
聚集碼值。
程序單元
程序單元(programunit)是指存儲過程、函數(shù)和包(PACKAGE)o一個過程和函數(shù),是
由SQL語句和PL/SQL語句組合在一起,為執(zhí)行某一個任務(wù)的一個可執(zhí)行單位。一個過程或函
數(shù)可被建立,在數(shù)據(jù)庫中存儲其編譯形式,可由用戶或數(shù)據(jù)庫應(yīng)用所執(zhí)行。過程和函數(shù)差別
在函數(shù)總返回單個值給調(diào)用者,而過程沒有值返回給調(diào)用者。
包提供相關(guān)的過程、函數(shù)、變量和其它包結(jié)構(gòu)封裝起來并存貯在一起的一種方法,允許
管理者和應(yīng)用開發(fā)者利用該方法組織如此的程序(routine),來提供更多的功能和提高性能。
數(shù)據(jù)庫鏈
數(shù)據(jù)庫鏈?zhǔn)且粋€命名的對象,說明從一數(shù)據(jù)庫到另一數(shù)據(jù)庫的一路徑(PATH)。在分布
式數(shù)據(jù)庫中,對全局對象名引用時,數(shù)據(jù)庫鏈隱式地使用。
三.數(shù)據(jù)庫和實例的啟動和關(guān)閉
一個ORACLE數(shù)據(jù)庫沒有必要對所有用戶總是可用,數(shù)據(jù)庫管理員可啟動數(shù)據(jù)庫,以致
它被打開。在數(shù)據(jù)庫打開情況下,用戶可存取數(shù)據(jù)庫中的信息。當(dāng)數(shù)據(jù)庫不使用時,DBA可
關(guān)閉它,關(guān)閉后的數(shù)據(jù)庫,用戶不能存取其信息。
數(shù)據(jù)庫的啟動和關(guān)閉是非常重要的管理功能,通過以INTERNAL連接到ORACLE的能力來
保護(hù)。以INTERNAL連接到ORACLE需要有下列先決條件:
該用戶的操作系統(tǒng)賬號具有使用INTERNAL連接的操作系統(tǒng)特權(quán)。
對INTERNAL數(shù)據(jù)庫有一口令,該用戶知道其口令。
另外:當(dāng)用戶以INTERNAL連接時,可連接到專用服務(wù)器,而且是安全連接。
1.數(shù)據(jù)庫啟動
啟動數(shù)據(jù)庫并使它可用有三步操作:
?啟動一個實例;
?裝配數(shù)據(jù)庫
?打開數(shù)據(jù)庫
1)啟動一個實例
啟動一實例的處理包含分配一個SGA(數(shù)據(jù)庫信息使用的內(nèi)存共享區(qū))和后臺進(jìn)程的建
立。實例起動的執(zhí)行先于該實例裝配一數(shù)據(jù)庫。如果僅啟動實例,則沒有數(shù)據(jù)庫與內(nèi)存儲結(jié)
構(gòu)和進(jìn)程相聯(lián)系。
2)裝向已一數(shù)據(jù)庫
裝配數(shù)據(jù)庫是將一數(shù)據(jù)庫與已啟動的實例相聯(lián)。當(dāng)實例安裝一數(shù)據(jù)庫之后,該數(shù)據(jù)庫保
持關(guān)閉,僅DBA可存取。
3)打開一數(shù)據(jù)庫
打開一數(shù)據(jù)庫是使數(shù)據(jù)庫可以進(jìn)行正常數(shù)據(jù)庫操作的處理。當(dāng)一數(shù)據(jù)庫打開所有用戶可
連接到該數(shù)據(jù)庫用存取其信息。在數(shù)據(jù)庫打開時,在線數(shù)據(jù)文件和在線日志文件也被打開。
如果一表空間在上一次數(shù)據(jù)庫關(guān)閉時為離線,在數(shù)據(jù)庫再次打開時,該表空間與它所相聯(lián)的
數(shù)據(jù)文件還是離線的。
2.數(shù)據(jù)庫和實例的關(guān)閉
關(guān)閉一實例以及它所連接的數(shù)據(jù)庫也有三步操作:
1)關(guān)閉數(shù)據(jù)庫
數(shù)據(jù)庫停止的第一步是關(guān)閉數(shù)據(jù)庫。當(dāng)數(shù)據(jù)庫關(guān)閉后,所有在SGA中的數(shù)據(jù)庫數(shù)據(jù)和恢
復(fù)數(shù)據(jù)相應(yīng)地寫入到數(shù)據(jù)文件和日志文件。在這操作之后,所有聯(lián)機(jī)數(shù)據(jù)文件和聯(lián)機(jī)的日志
文件也被關(guān)閉,任何離線表空間中數(shù)據(jù)文件夾是已關(guān)閉的。在數(shù)據(jù)庫關(guān)閉后但還安裝時,控
制文件仍保持打開。
2)卸下數(shù)據(jù)庫
停止數(shù)據(jù)庫的第二步是從實例卸下數(shù)據(jù)庫。在數(shù)據(jù)庫卸下后,在計算機(jī)內(nèi)存中僅保留實
例。在數(shù)據(jù)庫卸下后,數(shù)據(jù)庫的控制文件也被關(guān)閉v
3)停止實例
停止數(shù)據(jù)庫的最后一步是停止實例。當(dāng)實例停止后,SAG是從內(nèi)存中撤消,后臺進(jìn)程被
中止。
3.初始化參數(shù)文件
在啟動一個實例時,ORACLE必須讀入一初始化參數(shù)文件(initializationparameter
file),該參數(shù)文件是一個文本文件,包含有實例配置參數(shù)。這些參數(shù)置成特殊值,用于初始
ORACLE實例的許多內(nèi)存和進(jìn)程設(shè)置,該參數(shù)文件包含:
?一個實例所啟動的數(shù)據(jù)庫名字
?在SGA中存儲結(jié)構(gòu)使用多少內(nèi)存;
?在填滿在線日志文件后作什么;
?數(shù)據(jù)庫控制文件的名字和位置;
?在數(shù)據(jù)庫中專用回滾段的名字。
四.數(shù)據(jù)字典的使用
數(shù)據(jù)字典是ORACLE數(shù)據(jù)庫的最重要的部分之一,是由一組只讀的表及其視圖所組成。
它提供有關(guān)該數(shù)據(jù)庫的信息,可提供的信息如下:
?ORACLE用戶的名字;
?每一個用戶所授的特權(quán)和角色;
模式對象的名字(表、視圖、快照、索引、聚集、同義詞、序列、過程、函數(shù)、包及
觸發(fā)器等);
?關(guān)于完整性約束的信息;
?列的缺省值;
?有關(guān)數(shù)據(jù)庫中對象的空間分布及當(dāng)前使用情況;
?審計信息(如誰存取或修改各種對象);
?其它一般的數(shù)據(jù)庫信息。
可用SQL存取數(shù)據(jù)字典,由于數(shù)據(jù)字典為只讀,允許查詢。
1.數(shù)據(jù)字典的結(jié)構(gòu)
數(shù)據(jù)庫數(shù)據(jù)字典是由基本表和用戶可存取的視圖昨成。
基本表:數(shù)據(jù)字典的基礎(chǔ)是一組基本表組成,存儲相關(guān)的數(shù)據(jù)庫的信息、。這些信息僅由
ORACLE讀和寫,它們很少被ORACLE用戶直接存取。
用戶可存取視圖:數(shù)據(jù)字典包含用戶可存取視圖,可概括地方便地顯示數(shù)據(jù)字典的基本
表的信息。視圖將基本表中信息解碼成可用信息。
2.數(shù)據(jù)字典的使用
當(dāng)數(shù)據(jù)庫打開時,數(shù)據(jù)字典總是可用,它駐留在SYSTEM表空間中。數(shù)據(jù)字典包含視圖
集,在許多情況下,每一視圖集有三種視圖包含有類似信息,彼此以前綴相區(qū)別,前綴USER、
ALL和DBAo
?前綴為USER的視圖,為用視圖,是在用戶的模式內(nèi)。
?前綴為ALL的視圖,為擴(kuò)展的用戶視圖(為用戶可存取的視圖)。
?前綴為DBA的視圖為DBA的視圖(為全部用戶可存取的視圖)。
在數(shù)據(jù)庫中ORACLE還維護(hù)了一組虛表記錄當(dāng)前數(shù)據(jù)庫的活動,這些表稱為動態(tài)性能表。
動態(tài)性能表不是真正的表,許多用戶不能存取,DBA可查詢這些表,可以建立視圖,給其它用
戶授予存取視圖權(quán)。
五.事務(wù)管理
].事務(wù)
一個事務(wù)為工作的一個邏輯單位,由一個或多個SQL語句組成。一個事務(wù)是一個原
子單位,構(gòu)成事務(wù)的全部SQL語句的結(jié)果可被全部提交或者全部回滾。一個事務(wù)由第一
個可執(zhí)行SQL語句開始,以提交或回滾結(jié)束,可以是顯式的,也可是隱式的(執(zhí)行DDL
語句)。
在執(zhí)行一個SQL語句出現(xiàn)錯誤時,該語句所有影響被回滾,好像該語句沒有被執(zhí)行一樣,
但它不會引起當(dāng)前事務(wù)先前的工作的丟失c
2.ORACLE的事務(wù)管理
在ORACLE中一個事務(wù)是由一個可執(zhí)行的SQL語句開始,一個可執(zhí)行SQL語句產(chǎn)生
對實例的調(diào)用。在事務(wù)開始時,被賦給一個可用回滾段,記錄該事務(wù)的回滾項。一個事務(wù)以下
列任何一個出現(xiàn)而結(jié)束。
當(dāng)COMMIT或ROLLBACK(沒有SAVEPOINT子句)語句發(fā)出。
?一個DDL語句被執(zhí)行。在DDL語句執(zhí)行前、后都隱式地提交。
?用戶撤消對ORACLE的連接(當(dāng)前事務(wù)提交)。
?用戶進(jìn)程異常中止(當(dāng)前事務(wù)回滾)。
1)提交事務(wù)
提交一事務(wù),即將在事務(wù)中由SQL語句所執(zhí)行的改變永久化。在提交前,ORACLE已有下
列情況:
在SGA的回滾段緩沖區(qū)已生成回滾段記錄,回滾信息包含有所修改值的老值。
在SGA的日志緩沖區(qū)已生成日志項。這些改變在事務(wù)提交前可進(jìn)入磁盤。
對SGA的數(shù)據(jù)庫緩沖區(qū)已作修改,這些修改在事務(wù)真正提交之前可進(jìn)入磁盤。
在事務(wù)提交之后,有下列情況:
對于與回滾段相關(guān)的內(nèi)部事務(wù)表記錄提交事務(wù),并賦給一個相應(yīng)的唯一系統(tǒng)修改號
(SCN),記錄在表中。
在SGA的日志緩沖區(qū)中日志項由LGWR進(jìn)程寫入到在線日志文件,這是構(gòu)成提交事
務(wù)的原子事務(wù)。
?在行上和表上的封鎖被釋放。
?該事務(wù)標(biāo)志為完成。
注意:對于提交事務(wù)的數(shù)據(jù)修改不必由DBWR后臺進(jìn)程立即寫入數(shù)據(jù)文件,可繼續(xù)存儲
在SGA的數(shù)據(jù)庫緩沖區(qū)中,在最有效時將其寫入數(shù)據(jù)文件。
2)回滾事務(wù)
回滾事務(wù)的含義是撤消未提交事務(wù)中的SQL語句所作的對數(shù)據(jù)修改。ORALCE允許撤消未
提交的整個事務(wù),也允許撤消部分。
在回滾整個事務(wù)(沒有引用保留點)時,有下列情況:
?在事務(wù)中所有SQL語句作的全部修改,利用相應(yīng)的回滾段被撤消。
?所有數(shù)據(jù)的事務(wù)封鎖被釋放。
?事務(wù)結(jié)束。
當(dāng)事務(wù)回滾到一保留點(具有SAVEPOINT)時,有下列情況:
?僅在該保留點之后執(zhí)行的語句被撤消。
?該指定的保留點仍然被保留,該保留點之后所建立的保留點被刪除。
自該保留點之后所獲取的全部表封鎖和行封鎖被釋放,但指定的保留點以前所獲取的
的全部數(shù)據(jù)封鎖繼續(xù)保持。
?該事務(wù)仍可繼續(xù)。
3)保留點
保留點(savepoint)是在一事務(wù)范圍內(nèi)的中間標(biāo)志,經(jīng)常用于將一個長的事務(wù)劃分為小的部
分。保留點可標(biāo)志長事務(wù)中的任何點,允許可回滾該點之后的工作。在應(yīng)用程序中經(jīng)常使用
保留點;例如一過程包含幾個函數(shù),在每個函數(shù)前可建立一個保留點,如果函數(shù)失敗,很容
易返回到每一個函數(shù)開始的情況。在回滾到一個保留點之后,該保持點之后所獲得的數(shù)據(jù)封
鎖被釋放。
六.數(shù)據(jù)庫觸發(fā)器
1.觸發(fā)器介紹
數(shù)據(jù)庫觸發(fā)器(databasetrigger)是存儲在數(shù)據(jù)庫中的過程,當(dāng)表被修改時它隱式地被激
激發(fā)(執(zhí)行)。在ORACLE中允許在對表發(fā)出INSERT.UPDATE或DELETE語句時隱式地執(zhí)行所定
義的過程,這些過程稱為數(shù)據(jù)庫觸發(fā)器。觸發(fā)器存儲在數(shù)據(jù)庫中,并與所相關(guān)表分別存儲。觸
發(fā)器僅可在表上定義。在許多情況中觸發(fā)器用于提供很高級的專用數(shù)據(jù)庫管理系統(tǒng),來補(bǔ)充
ORACLE的標(biāo)準(zhǔn)功能。觸發(fā)器一般用于:
?自動地生成導(dǎo)出的列值;
?防止無效的事務(wù);
?實施更復(fù)雜的安全性檢查
?在分布式數(shù)據(jù)庫中實施跨越結(jié)點的引用完整性;
?實施復(fù)雜的事務(wù)規(guī)則;
?提供透明事件日志:
?提供高級的審計;
?維護(hù)同步表復(fù)制;
?收集關(guān)于存取表的統(tǒng)計。
注意:數(shù)據(jù)庫觸發(fā)器與5QL*F0RMS觸發(fā)器之間的差別。數(shù)據(jù)庫觸發(fā)器是定義在表上,存
儲在數(shù)據(jù)庫中,當(dāng)對表執(zhí)行INSERT、UPDATE或DELETE語句時被激發(fā),不管是誰或哪一應(yīng)用
發(fā)出。而SQL*FORMS觸發(fā)器是SQL*FORM應(yīng)用的部分,僅當(dāng)在指定SQL*FORMS應(yīng)用中執(zhí)行一個
指定觸發(fā)器點時才被激發(fā)。
觸發(fā)器和說明性完整性約束都可用于約束數(shù)據(jù)的輸入,但它們之間有一定區(qū)別:
說明性完整性約束是關(guān)于數(shù)據(jù)庫總是為“真”的語句。一個完整性約束應(yīng)用于表中已有
數(shù)據(jù)和操縱表的任何語句。
而觸發(fā)器約束事務(wù)不可應(yīng)用于在定義觸發(fā)器前已裝入的數(shù)據(jù),所以它不能保證表中全部
數(shù)據(jù)服從該觸發(fā)器的規(guī)則。觸發(fā)器實施瞬時約束,即在數(shù)據(jù)改變時實施一約束。
2.觸發(fā)器的組成:
一個觸發(fā)器有三個基本部件:觸發(fā)事件或語句、觸發(fā)器的限制、觸發(fā)器動作。
觸發(fā)事件或語句:為引起觸發(fā)器激發(fā)的SQL語句,是對指定表INSERT、UPDATE或DELETE
語句。
觸發(fā)器限制:為一布爾表達(dá)式,當(dāng)觸發(fā)器激發(fā)時該條件必須為TRUE。觸發(fā)器的限制是用
WHEN子句來指定。
觸發(fā)器的動作:為一個PL/SQL塊(過程),由SQL語句和PL/SQL語句組成。當(dāng)觸發(fā)語
句發(fā)出,觸發(fā)器的限制計算得TRUE時,它被執(zhí)行。在觸發(fā)器動作的語句中,可使用觸發(fā)器的
處理的當(dāng)前行的列值(新值、老值),使用形式為:
NEW.列名引用新值
OLE.列名引用老值
在定義觸發(fā)器時可指定觸發(fā)器動作執(zhí)行次數(shù):受觸發(fā)語句影響每一行執(zhí)行一次或是對觸
發(fā)語句執(zhí)行一次。
對每一觸發(fā)語句可有四種類型觸發(fā)器:
行觸發(fā)器:對受觸發(fā)語句所影響的每一行,行觸發(fā)器激發(fā)一次。
語句觸發(fā)器:該類型觸發(fā)器對觸發(fā)語句執(zhí)行一次,不管其受影響行數(shù)。
定義觸發(fā)器可以指定觸發(fā)時間,指定激發(fā)器動作的執(zhí)行相對于觸發(fā)語句執(zhí)行之后或之
IlIJo
BEFORE觸發(fā)器:該觸發(fā)器執(zhí)行觸發(fā)器動作是在觸發(fā)語句執(zhí)行之前。
AFTER觸發(fā)器:該觸發(fā)器執(zhí)行觸發(fā)器動作是在觸發(fā)語句執(zhí)行之后。
一個觸發(fā)器可處于兩種不同的方式:使能觸發(fā)器和使不能觸發(fā)瑞。
使能觸發(fā)器:只要當(dāng)觸發(fā)語句發(fā)出,觸發(fā)器限制計算為TRUE,這種類型的觸發(fā)器執(zhí)行其
觸發(fā)動作。
使不能觸發(fā)器:這種觸發(fā)器即使其觸發(fā)語句被發(fā)出,觸發(fā)器限制計算為TRUE,也不執(zhí)行
觸發(fā)器動作。
觸發(fā)器的源代碼存儲在數(shù)據(jù)庫中,在第一次執(zhí)行時,觸發(fā)器的源代碼被編譯,存儲在共
享池中。如果觸發(fā)器從共享池中擠了,再使用時必須再重新編譯。
七.分布處理和分布式數(shù)據(jù)庫
1.簡介
一個分布式數(shù)據(jù)庫在用戶面前為單個邏輯數(shù)據(jù)庫,但實際上是由存儲在多臺計算機(jī)
上的一組數(shù)據(jù)庫組成。在幾臺計算機(jī)上的數(shù)據(jù)庫通過網(wǎng)絡(luò)可同時修改和存取,每一數(shù)
據(jù)庫受它的局部的DBMS控制。分布式數(shù)據(jù)庫中每一個數(shù)據(jù)庫服務(wù)器合作地維護(hù)全局?jǐn)?shù)
據(jù)庫的一致性。
在系統(tǒng)中的每一臺計算機(jī)稱為結(jié)點。如果一結(jié)點具有管理數(shù)據(jù)庫軟件,該結(jié)點稱為數(shù)
據(jù)庫服務(wù)器。如果一個結(jié)點為請求服務(wù)器的信息的一應(yīng)用,該結(jié)點稱為客戶。在ORACLE客戶,
執(zhí)行數(shù)據(jù)庫應(yīng)用,可存取數(shù)據(jù)信息和與用戶交互。在服務(wù)器,執(zhí)行ORACLE軟件,處理對ORACLE
數(shù)據(jù)庫并發(fā)、共享數(shù)據(jù)存取。ORACLE允許上述兩部分在同一臺計算機(jī)上,但當(dāng)客戶部分和服
務(wù)器部分是由網(wǎng)連接的不同計算機(jī)上時,更有效。
分布處理是由多臺處理機(jī)分擔(dān)單個任務(wù)的處理。在ORACLE數(shù)據(jù)庫系統(tǒng)中分布處理的例
子如:
客戶和服務(wù)器是位于網(wǎng)絡(luò)連接的不同計算機(jī)上。
單臺計算機(jī)上有多個處理器,不同處理器分別執(zhí)行客戶應(yīng)用。
SQL*NET是ORACLE網(wǎng)絡(luò)接口,允許運(yùn)行在網(wǎng)絡(luò)工作站的ORACLE工具和服務(wù)器上,可存取、
修改、共享和存儲在其它服務(wù)器上的數(shù)據(jù)。SAQL*NET可被認(rèn)為是網(wǎng)絡(luò)通信的程序接口。SQIWNET
利用通信協(xié)議和應(yīng)用程序接口(API)為OARCLE提供一個分布式數(shù)據(jù)庫和分布處理。
SQL*NET驅(qū)動器為在數(shù)據(jù)庫服務(wù)器上運(yùn)行的ORACLE進(jìn)程與ORACLE工具的用戶進(jìn)程之間提
提供一個接口。
參與分布式數(shù)據(jù)庫的每一服務(wù)器是分別地獨立地管理數(shù)據(jù)庫,好像每一數(shù)據(jù)庫不是網(wǎng)絡(luò)
化的數(shù)據(jù)庫。每一個數(shù)據(jù)庫獨立地被管理,稱為場地自治性。場地自治性有下列好處:
?系統(tǒng)的結(jié)點可反映公司的邏輯組織。
由局部數(shù)據(jù)庫管理員控制局部數(shù)據(jù),這樣每一個數(shù)據(jù)庫管理員責(zé)任域要小一些,可更
好管理。
只要一個數(shù)據(jù)庫和網(wǎng)絡(luò)是可用,那么全局?jǐn)?shù)據(jù)庫可部分可用。不會因一個數(shù)據(jù)庫的故
障而停止全部操作或引起性能瓶頸。
?故障恢復(fù)通常在單個結(jié)點上進(jìn)行。
?每個局部數(shù)據(jù)庫存在一個數(shù)據(jù)字典。
?結(jié)點可獨立地升級軟件。
可從分布式數(shù)據(jù)庫的所有結(jié)點存取模式對象,因此正像非分布的局部的DBMS,必須提供
一種機(jī)制,可在局部數(shù)據(jù)庫中引用一個對象。分布式DBMS必須提供一種命名模式,以致分布
式數(shù)據(jù)庫中一個對象可在應(yīng)月中唯一標(biāo)識和引用。一般彩在層次結(jié)構(gòu)的每一層實施唯一性。
分市式DVMS簡單地擴(kuò)充層次命名模型,實施在網(wǎng)絡(luò)上唯一數(shù)據(jù)庫命名。因此一個對象的全局
對象名保證在分布式數(shù)據(jù)庫內(nèi)是唯一。
ORACLE允許在SQL語句中使用低對象名引用分布式數(shù)據(jù)庫中的模式對象(表、視圖和過
程)。在ORACLE中,一個模式對象的全局名由三部分組成:包含對象的模式名、對象名、數(shù)
據(jù)庫名、其形式如:
SCOTT.EMP@SALES.DIVISION3.ACME.COM
其中SCOTT為模式名,EMP為表名,@符號之后為數(shù)據(jù)庫名.
一個遠(yuǎn)程查詢?yōu)橐徊樵?是從一個或多個遠(yuǎn)程表中選擇信息,這些表駐留在同一個遠(yuǎn)程
結(jié)點.
一個分布式查詢可從兩個或多個結(jié)點檢索數(shù)據(jù).一個分布式更新可修改兩個或兩個以上
結(jié)點的數(shù)據(jù).
一個遠(yuǎn)程事務(wù)為一個事務(wù),包含一人或多個遠(yuǎn)程語句,它所引用的全部是在同一個遠(yuǎn)程
結(jié)點上.一個分布式事務(wù)中一個事務(wù),包含一個或多個語句修改分布式數(shù)據(jù)庫的兩個或多個不
同結(jié)點的數(shù)據(jù).
在分布式數(shù)據(jù)庫中,事務(wù)控制必須在網(wǎng)絡(luò)上直轄而保證數(shù)據(jù)一致性.兩階段提交機(jī)制保
證參與分布式事務(wù)的全部數(shù)據(jù)庫服務(wù)器是全部提交或全部回滾事務(wù)中的語句.
ORACLE分布式數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu)可由ORACLE數(shù)據(jù)庫管理員為終端用戶和應(yīng)用提供位置透
明性,利用視圖、同義詞、過程可提供ORACLE分布式數(shù)據(jù)庫系統(tǒng)中的位置透明性.
ORACLE允許在SELECT(查詢)、INSERT>UPDATE>DELETE、SELECT-FORUPDATE和LOCK
TABLE語句中引用遠(yuǎn)程數(shù)據(jù)。對于查詢,包含有連接,聚合、子查詢和SELECT-FORUPDATE,
可引用本地的、遠(yuǎn)程的表和視圖。對于UPDATE、INSERT、DELETE和LOCKTABLE語句可引用
本地的和遠(yuǎn)程的表。注意在引用LONG和LONGRAW歹ij、序列、修改表和封鎖表時,必須位于
同一個結(jié)點。ORACLE不允許作遠(yuǎn)程DDL語句。
在單場地或分布式數(shù)據(jù)庫中,所有事務(wù)都是用COMMIT或ROLLBACK語句中止。ORACLE提
供兩種機(jī)制實現(xiàn)分布式數(shù)據(jù)庫中表重復(fù)的透明性:表快照提供異步的表重復(fù);觸發(fā)器實現(xiàn)同
步的表的重復(fù)。在兩種情況下,都實現(xiàn)了對表重復(fù)的透明性。
2.分布式數(shù)據(jù)庫全局名與數(shù)據(jù)庫鏈
分布式數(shù)據(jù)庫全局名:每一個數(shù)據(jù)庫有一個唯一的全局名,由兩部分組成:數(shù)據(jù)庫名
(小于等于8字符)和網(wǎng)絡(luò)域。全局?jǐn)?shù)據(jù)庫名的網(wǎng)絡(luò)域成分必須服從標(biāo)準(zhǔn)互聯(lián)網(wǎng)規(guī)范。域名
中的層次由符號分開,域名的次序由葉至根,從左至右。
數(shù)據(jù)庫鏈:為對過程數(shù)據(jù)庫定義的一路徑。數(shù)據(jù)庫鏈對分布式數(shù)據(jù)庫的用戶是透明的
的,數(shù)據(jù)庫鏈的名字與鏈所指向的數(shù)據(jù)庫的全局名相同。其由二部分組成:遠(yuǎn)程賬號和數(shù)據(jù)庫
串。例建立數(shù)據(jù)庫鏈的形式:
GREATPUBLICDATEBASELINKsale?Division?。acme。com
CONNECTTOguestIDENTIFIEDBYpassword
USING'DB串';
其中:salesoDivisin3oacme。com為定義的鏈名;guest/password為遠(yuǎn)程數(shù)據(jù)庫的
用戶賬號和口令;DB串用于遠(yuǎn)程連接。由賬號和DB串構(gòu)成完全路徑。如果只有一個則為部分
路徑。
有三種數(shù)據(jù)庫鏈可用于決定用戶對全部對象名的引用:
專用數(shù)據(jù)庫鏈:為一指定用戶建立。專用數(shù)據(jù)庫鏈僅鏈的主人可使用。在SQ1語句中用
于指定一全局對象名或者在持有者的視圖過程定義中使用。
公用數(shù)據(jù)庫鏈:為特殊的用戶組PUBLIC建立。公月數(shù)據(jù)庫鏈可為任何用戶使用,在SQL
語句中用于指定一個全局對象名或?qū)ο蠖x。
網(wǎng)絡(luò)數(shù)據(jù)鏈:由網(wǎng)絡(luò)域服務(wù)器建立和管理,可為網(wǎng)絡(luò)中的任何數(shù)據(jù)庫的任何用戶使用,
可在SQL語句中指定全局對象名或?qū)ο蠖x中使用。注意:當(dāng)前網(wǎng)絡(luò)域服務(wù)器對ORACLE不能
用,所以網(wǎng)絡(luò)數(shù)據(jù)庫鏈不可用。
3.表快照
ORACLE的表快照特征允許一個主表在分布.式數(shù)據(jù)庫的其它結(jié)點進(jìn)行復(fù)制。只允許修改主
表,而復(fù)制只可讀。主表達(dá)式每一個復(fù)制稱為一個快照。快照異步的刷新,反映主表的一個最
近事務(wù)一致狀態(tài)。
一個快照可為表的完全拷貝或者為表的一個子集,由引用一個或多個主.表、視圖或其它
快照的分布式查詢所定義。包含主表的數(shù)據(jù)庫稱為主數(shù)據(jù)庫。
快照有簡單快照和復(fù)雜快照。簡單快照的每行是基于單個遠(yuǎn)程表中的一行。所以定義簡
單快照的杳詢中不能有GROUBBY或CONNECTBY子句,或子查詢、連接或集合操作。如果在快
照定義的查詢中包含有上述子句或操作,這種快照稱為復(fù)雜快照。
在快照建立時,ORACLE在快照的模式中建立幾種內(nèi)部對象:
在快照結(jié)點,ORACLE建立一基表用于存儲由快照定義的查詢所檢索的行,然后為該表建
立一個只讀的視圖,并為遠(yuǎn)程主表建立一視圖,該視圖用于新快照。
一個快照周期地被刷新,反映它的主表的當(dāng)前情況。為了刷新一快照,快照定義查詢是
被發(fā)出,其查詢結(jié)果想在存儲在快照中,代替以前的快照數(shù)據(jù)v
當(dāng)快照為簡單快照時,可以由快照日志來刷新,這樣可加快刷新處理??煺杖罩臼窃谥?/p>
表數(shù)據(jù)庫中的一表,與主表相關(guān)。ORACLE使用快照日志跟蹤主表中已修改的行。當(dāng)基于主表
的簡單快照刷新時,僅需要快照口志的相應(yīng)行來刷新快照,這種刷新稱為快速刷新。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度城市消防設(shè)備安裝與維護(hù)承包合同3篇
- 互聯(lián)網(wǎng)健康醫(yī)療項目合作框架協(xié)議
- 單位個人車輛租賃合同標(biāo)準(zhǔn)范本
- 二零二五版土方運(yùn)輸合同:道路拓寬工程材料調(diào)配協(xié)議3篇
- 規(guī)劃工程技術(shù)服務(wù)合同年
- 二零二五版小程序數(shù)據(jù)分析與優(yōu)化服務(wù)合同正規(guī)范本3篇
- 母子公司合同
- 二零二五版學(xué)校土地承包經(jīng)營及配套設(shè)施建設(shè)合同協(xié)議5篇
- 2024年軟件技術(shù)轉(zhuǎn)讓及實施協(xié)議
- 2025版無紡布制品生產(chǎn)質(zhì)量控制與銷售合同6篇
- 《攜程旅行營銷環(huán)境及營銷策略研究》10000字(論文)
- 餐飲行業(yè)優(yōu)化食品供應(yīng)鏈管理計劃
- 微信小程序用戶服務(wù)協(xié)議和隱私政策-帶目錄
- 江蘇省徐州市、宿遷市2025年高三下期末測試化學(xué)試題含解析
- 要分手費(fèi)的分手協(xié)議書(標(biāo)準(zhǔn))
- 2024夏季廣東廣州期貨交易所招聘高頻難、易錯點500題模擬試題附帶答案詳解
- 浙江省2024年高考化學(xué)模擬試題(含答案)2
- 2024新人教七年級英語上冊 Unit 2 Were Family!(大單元教學(xué)設(shè)計)
- 碳排放管理員 (碳排放核查員)技能考核內(nèi)容結(jié)構(gòu)表三級、技能考核要素細(xì)目表三級
- DB12T 1339-2024 城鎮(zhèn)社區(qū)公共服務(wù)設(shè)施規(guī)劃設(shè)計指南
- 電競賽事策劃全解析
評論
0/150
提交評論